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.