Visão geral da interoperabilidade de linguagem

Interoperabilidade de linguagem é a capacidade do código de interagir com o código que foi escrito, usando uma linguagem de programação diferente.Interoperabilidade de linguagem pode ajudar a maximizar a reutilização de código e, portanto, melhorar a eficiência do processo de desenvolvimento.

Como os desenvolvedores utilizam uma ampla variedade de ferramentas e tecnologias, cada uma das quais apoiando características e tipos diferentes, foi historicamente difícil assegurar a interoperabilidade de linguagem.Contudo, compiladores de linguagem e ferramentas que visam o benefício do Common Language Runtime beneficiam o do suporte do tempo de execução interno para interoperabilidade de linguagem.

O Common Language Runtime fornece a fundação necessária para interoperabilidade de linguagem, especificando e forçando um sistema de tipo comum e provendo metadados.Como todas as linguagens que visam o tempo de execução seguem as regras do common type system para definir e usar tipos, o uso de tipos é consistente através de linguagens.Metadados permitem a interoperabilidade de linguagem definindo um mecanismo uniforme para armazenar e recuperar informações sobre os tipos.Compiladores armazenam informações de tipo como metadados, e o Common Language Runtime usa essas informações para fornecer serviços durante a execução; o Runtime pode gerenciar a execução de aplicativos multilinguagem porque todas as informações de tipo são armazenadas e recuperadas da mesma maneira, independentemente do idioma que código foi escrito.

Benefícios de código gerenciados pelo suporte do Runtime para interoperabilidade de linguagem dos seguintes modos:

  • Tipos podem herdar implementação de outros tipos, passar objetos para outros tipos de métodos e chamar métodos definido em outros tipos, independentemente da linguagem em que os tipos são implementados.

  • Depuradores, profilers ou outras ferramentas são necessárias para compreender somente um ambiente — o Microsoft Intermediate Language (MSIL) e metadados para o Common Language Runtime — e eles podem oferecer suporte a qualquer linguagem de programação que atinja o Runtime.

  • O tratamento de exceção é consistente em linguagens.Seu código pode gerar uma exceção em um linguagem e essa exceção pode ser interceptada e compreendida por um objeto escrito em outra linguagem.

Embora o Runtime forneça todo o código dirigido do suporte para executar em um ambiente multilinguagem, não há nenhuma garantia que a funcionalidade dos tipos que você cria possa ser totalmente usada pelas linguagens de programação que outros desenvolvedores usam.Isso ocorre, principalmente, porque cada compilador de linguagem utilizando o Runtime usa o sistema de tipos e metadados para oferecer suporte ao seu próprio conjunto exclusivo de recursos de linguagem.Em casos onde você não sabe em que linguagem o código que chama será escrito, você dificilmente saberá se as características que o seu componente expõe são acessíveis ao chamador.Por exemplo, se o idioma de escolha fornece suporte para números inteiros sem-sinal, você deve criar um método com um parâmetro do tipo UInt32; mas em uma linguagem que não tenha noção de números inteiros sem-sinal, aquele método seria inútil.

Para garantir que seu código gerenciado seja acessível para os desenvolvedores usando qualquer linguagem de programação, o .NET Framework fornece a CLS (Common Language Specification) (CLS), que descreve um conjunto fundamental de recursos de linguagem e define regras sobre como esses recursos são usados.Para obter mais informações sobre compatibilidade CLS em componentes e ferramentas, consulte Escrevendo código compatível com CLS.

Consulte também

Conceitos

CLS (Common Language Specification)

Escrevendo código compatível com CLS

Outros recursos

Visão geral sobre o .NET Framework

Common Type System

Metadados e Componentes Autodescritivas