Olá. Hoje vou falar um pouco sobre o CTS(Common Type System) e sobre o CLS(Commom Language Specification).
Para começar, vou falar um pouco sobre o CTS. Como os tipos estão na raiz do CLR, a Microsoft decidiu criar o CTS para descrever como os tipos são definidos e como eles se comportam. Os tipos são o mecanismo pelo qual o código escrito em C#(por exemplo) pode conversar com o código escrito em VB. O CTS descreve a especificação de todos os possíveis tipos de dados suportados pelo runtime, especifica como essas entidades podem interagir uma com a outra e detalha como eles são representados no metadados do .NET.
Enfim, o CTS define como os tipos são declarados, usados e como eles interagem com outras linguagens.
O CTS também especifica as regras para visibilidade de tipos e para acesso aos membros de um tipo. Além disso, o CTS define as regras que definem a herança de tipos, as funções virtuais, o tempo de vida de objeto e assim por diante.
Uma outra regra do CTS, é que todos os tipos devem herdar(no mínimo) de System.Object. Ou seja, se você cria um tipo novo, obviamente este tipo herdará de System.Object. Se o seu novo tipo herdar de um outro tipo, você pode ter certeza que este tipo herda de System.Object.
System.Object é a raiz de todos os outros tipos e garante que cada instância de tipo tenha no mínimo alguns comportamentos. Estes comportamentos são :
1. Comparar duas instâncias quanto à igualdade
2. Obter um código de hash para a instância
3. Consultar o tipo verdadeiro de uma instância
4. Realizar uma cópia bit a bit na instância
5. Obter uma representação na forma de string do estado atual da instância do objeto.
O CTS suporta duas categorias de tipos:
Tipos de Valor – Contém seus dados diretamente na memória.
Tipos de Referência – Contém uma referência para o endereço de memória do valor desejado.
Abaixo segue uma imagem representando a hierarquia dos tipos de valor e referência para você saber se o seu “tipo” é de valor ou referência.(Esta imagem foi retirada de http://msdn.microsoft.com/pt-br/library/2hf02550.aspx ).
Bem, agora vou falar um pouco sobre o CLS. Como vocês já sabem, diferentes linguagens podem construir o mesmo algoritmo, mas com os termos específicos daquela linguagem. Cada linguagem tem uma sintaxe diferente da outra, ou seja, o código é escrito de forma diferente das outras. O CTS é o conjunto de regras que descreve, nos mínimos detalhes, o conjunto de características que o compilador suporta para produzir código que seja suportado pelo CLR. Cada regra é assinada com um nome simples e descreve como esta regra afeta aqueles que criam compiladores e aqueles que programam nesta linguagem.
As regras que você deve obedecer, são como as definições de membros(isto é, nomenclatura, parâmetros e tipo de retorno). Por exemplo, no VB.NET, as letras maiúsculas não diferem das minúsculas, mas no c# elas são diferenciadas. Outro exemplo é no caso do c# precisar do “;” no final da linha de comando, enquanto o VB.NET não exige isto.
Ou seja, a ordem das palavras é especificada no CLS. A diferenciação de maiúsculas e minúsculas também são diferenciadas no CLS.
Bem, ter o conhecimento sobre o que é CLR, CTS, CLS, não é necessário para nenhum desenvolvedor. Mas para aqueles que querem desenvolver além do “abc”, precisa saber como o framework se comporta, e quais são os seus componentes.
Hoje eu fico por aqui, espero que tenham gostado deste post.
Um abraço a todos.