Atenção: esse artigo tem um vídeo complementar. Clique e assista!
A integração CLR do SQL Server permite basicamente desenvolver funções, stored procedures, tipos e triggers com C# ou VB.NET, sendo uma alternativa mais prática e ágil do que a linguagem T-SQL pode oferecer para o desenvolvimento. Além de contar com uma diversidade de recursos e possibilidades de novas soluções.
Em que situação o tema útil:
No momento em que as limitações da linguagem T-SQL se tornam um problema para o desenvolvimento de rotinas complexas, podemos adotar a CLR e sua integração com o SQL Server para aproveitar da diversidade de recursos do .NET Framework para implementar nossas soluções.
Resumo DevMan:
Este artigo permite o entendimento do potencial da integração da CLR com o SQL Server considerando o aprendizado sobre como o SQL Server trabalha com a CLR para execução de rotinas desenvolvidas em C# e VB.NET. Também analisamos quando é recomendável e como utilizar esta integração para desenvolver rotinas e como administrar o que foi desenvolvido.
Desde o lançamento do SQL Server 2005, se tornou possível utilizar C# ou VB.NET para criar stored procedures, functions, types e triggers. Esta possibilidade é denominada integração CLR, que consiste basicamente em utilizar bibliotecas desenvolvidas em C# ou VB.NET para criar objetos em nível de banco de dados. Estas bibliotecas, conhecidas como assemblies, estão presentes no computador como arquivos na extensão DLL, e são traduzidas em rotinas para o sistema operacional pela CLR (Common Language Runtime), um componente do .NET Framework (ler Nota DevMan 1).
O coração da plataforma .NET é o CLR (Common Language Runtime), que é uma aplicação similar a uma máquina virtual que se encarrega de providenciar a execução das aplicações para ela escritas. São oferecidos a estas aplicações numerosos serviços que facilitam seu desenvolvimento e manutenção que favorece sua confiança e segurança.
O CLR é o verdadeiro responsável pela interoperabilidade entre as linguagens suportadas pela plataforma .NET. O compilador de cada linguagem segue uma série de padrões (Common Language Specification) para compilar seus códigos, por isso as outras linguagens conseguem "entender" as classes e os métodos, dentre outras informações, que essa linguagem definiu.
Por exemplo, quando escrevo uma classe em SmallTalk.NET e a compilo, o compilador de SmallTalk não irá compilá-la da mesma forma que compilaria fora da plataforma, esse a compilará segundo uma série de especificações que gerará o IL (Intermediate Language). Quando essa classe tiver que ser acessada por uma outra, escrita em C#, por exemplo, a plataforma .NET se encarregará de ler a IL gerada e expôr a classe que foi criada.
Pelo fato de que estes assemblies são traduzidos, ou melhor, executados pela CLR, eles também contam com todo o potencial da .NET Framework neste processo.
A .NET Framework (ler Nota DevMan 2) é a principal plataforma de desenvolvimento da Microsoft, sendo utilizada para criar aplicações em nível de sistema operacional, aplicações para internet e dispositivos móveis, entre outras soluções. O que faz do desenvolvimento de assemblies para o SQL Server somente uma das possibilidades desta plataforma.
A plataforma .NET baseia-se em um dos princípios utilizados na tecnologia Java (Just In Time Compiler - JIT), os programas desenvolvidos para ela são duplo-compilados (compilados duas vezes), uma na distribuição (gerando um código que é conhecido como "bytecodes") e outra na execução.
Um programa é escrito em qualquer das mais de vinte linguagens de programação disponíveis para a plataforma, o código fonte gerado pelo programador é então compilado pela linguagem escolhida gerando um código intermediário em uma linguagem chamada MSIL (Microsoft Intermediate Language).
Este novo código fonte gera um arquivo na linguagem de baixo nível Assembly, de acordo com o tipo de projeto:
• EXE - Arquivos Executáveis, Programas
• DLL - Biblioteca de Funções
• ASPX - Página Web
• ASMX - Web Service
No momento da execução do programa ele é novamente compilado, desta vez pelo compilador JIT, de acordo com a utilização do programa, por exemplo: Temos um Web Site desenvolvido em ASP.NET, ao entrar pela primeira vez em uma página o JIT irá compilá-la, nas outras vezes que algum outro usuário acessar esta página, ele usará esta compilação.
Também é possível, através de ferramentas específicas, "pré-compilar" o código para que não se tenha o custo da compilação JIT durante a execução.
O fato desta arquitetura utilizar a MSIL gera uma possibilidade pouco desejada entre os criadores de software que é a de fazer a "engenharia reversa", ou seja, a partir de um código compilado, recuperar o código original. Isto não é uma idéia agradável para as empresas que sobrevivem da venda de softwares produzidos nesta plataforma.
Por causa disso, existem ferramentas que "ofuscam" o código MSIL, trocando nomes de variáveis, métodos, interfaces e etc para dificultar o trabalho de quem tentar uma engenharia reversa no mesmo.
No desenvolvimento com a .NET Framework, é possível contar com bibliotecas que permitem criar soluções que manipulam em nível de sistema operacional (registros do sistema, diretivas de segurança, sistema de arquivos) dados em diversos formatos, trabalhar com vetores, fluxos de memória e realizar cálculos complexos, além de facilitar a interação com Web Services (ler Nota DevMan 3) e protocolos em nível de rede.
Web service é uma solução utilizada na integração de sistemas e na comunicação entre aplicações diferentes. Com esta tecnologia é possível que novas aplicações possam interagir com aquelas que já existem e que sistemas desenvolvidos em plataformas diferentes sejam compatíveis. Os Web services são componentes que permitem às aplicações enviar e receber dados em formato XML. Cada aplicação pode ter a sua própria "linguagem", que é traduzida para uma linguagem universal, o formato XML.
...