Você está na página 1de 12

Plataforma .

Net
Amauri Soares, Claudio Roberto Silva, Diego Castro Neves

Unimontes – Universidade Estadual de Montes Claros DCC – Departamento de Ciência


da Computação Cx. Postal 126 – CEP 39.401-089 Montes Claros (MG)

CCET – Centro de Ciências Exatas e Tecnológicas Cx. Postal 126 – CEP 39.401-089
Montes Claros (MG)

Amauras2@yahoo.com.br, claudioemais@gamil.com,

Abstract.
This article describes  the .NET  platform, an initiative of the company
to  Microsoft Java Virtual Machine. He stands as a new paradigm in
software development  that this perspective can be  made in any language
that .NET be able to  interpret it. With the use
of  this  component becomes more evident as a way to facilitate
processes as a component can be easily used  in  any programming
language because the CLR that it isthe execution environment for all
components.
Resumo. Este artigo descreve a plataforma .NET, uma iniciativa da empresa
Microsoft a máquina virtual Java. Ele se coloca como um novo paradigma no
desenvolvimento de softwares que nesta ótica podem ser feitos em qualquer
linguagem que o .NET será capaz de interpretá-lo. Com isto o uso de
componentes torna-se mais evidente como uma maneira de facilitar processos
visto que um componente pode ser facilmente usado em qualquer linguagem
de programação graças a CLR que ela é o ambiente de execução para todos
os componentes.

1. Introdução - O que é .NET?


.NET (.NET Framework) é uma criação da Microsoft que visa criar uma plataforma
única para desenvolvimento e execução de sistemas e aplicações diversas de forma que
qualquer código gerado em .NET possa ser executado em qualquer sistema operacional.
Neste caso ele se assemelha muito a idéia da maquina virtual Java que é um ambiente
multi-plataforma de forma que os códigos saiam em .NET e possam “rodar” em
qualquer outro ambiente.
Atualmente a plataforma .NET é capaz de interagir com mais de 20 linguagens
diferentes comportando-se como uma única linguagem. Isto é possível porque está sobre
uma CLR (Common Languagem Runtime) ou ainda ambiente de execução
independente de limguagem. Ela interagir com um conjunto de bibliotecas unificadas
(Framework).
O .NET é uma plataforma de software que conecta informações, sistemas,
pessoas e dispositivos, ela une uma grande variedade de tecnologias de uso pessoal e de
negócios variados, de celulares a servidores corporativos, permitindo acesso a
informações importantes, onde e sempre que forem necessárias.
De forma que o software ou aplicativo desenvolvido sobre esta plataforma
independa de sistema operacional, tipo do computador ou dispositivo móvel que esteja
sendo usado independentemente da sua linguagem de criação.
A idéia fundamental por trás da plataforma .NET é software e aplicativos
estejam livres de vinculo com linguagem ou tecnologias de desenvolvimento, fazendo
com que códigos gerados sobre uma linguagem sejam facilmente assimilidado e
compreendido dentro da plataforma. Desta maneira, computadores, dispositivos,
transações e serviços conectam-se diretamente e trabalham em conjunto para
fornecerem soluções mais amplas e ricas em detalhes.

2. COM+ (Component Object Model) – Breve Historico

COM+ é um complemento para Component Object Model (COM). Na sua criação ele
propunha um ambiente em tempo de execução que forneceria todos os tipos de serviços
uteis tais como herança entre linguagens e um controle de acesso em tempo de execução
para que lidassem com a orientação a objetos. Depois de algumas versões e várias
correções de problemas identificados a Microsoft lançou o Microsoft Transaction Server
ou COM+ 1.0 e este seria integrado ao Windows 2000. Posteriormente veio a ser
chamado de Microsoft .NET.
No .NET o formato de componentes passou a se chamar CLS e traz diversas
vantagens sobre o formato dos componentes COM.
Ao contrário dos componentes COM, os componentes CLS não estão
diretamente em código de máquina mas sim em um código intermediário, IL, que
precisa ser executado por outro software, o CLR. Assim sendo todos os componentes
CLS rodam dentro de um ambiente controlado, o CLR.
Mas o CLR apenas controla a execução do código IL, não se encarrega de
questões de escalabilidade importantes para um servidor de aplicações. De fato, não
existe um servidor de aplicações exclusivo para componentes CLS. Mas o .NET possui
um namespace chamado EnterpriseServices que permite que os serviços do COM+
sejam utilizados pelos componentes CLS.
Assim sendo, podemos construir nossos componentes no novo formato, o CLS,
e inseri-los dentro do velho COM+ exatamente como temos feito com nossos
componentes COM.
Esta plataforma propõe ser um modelo baseado em componentes que a partir de
um conjunto de serviços do sistema este possa ser um modelo a ser utilizado pelos
desenvolvedores, de forma que seja relativamente fácil criar aplicativos de negócios que
funcionem bem a partir do Microsoft Transaction Server (MTS), no Windows NT ou
sistema superior.
Esta plataforma é vista como uma resposta da empresa Microsoft como o
Enterprise JavaBeans (EJB). Ela dá suporte a alguns serviços como:

 Registro de eventos
 Enterprise Management Infrastructure (Infra-estrutura de gerenciamento
empresarial).
 Interceptação de pedidos do sistema designado para efeito de garantia de
segurança.
 Filas de solicitações recebidas de forma assíncrona para um determinado
serviço.
 Possibilidade da ocorrência de um evento, o componente que o processou,
notifique outro para a continuidade de outro evento dependente deste resultado.

3. Arquitetura .NET

A plataforma .NET é baseada em JIT (Just in time compiler) “apenas um compilador”,


princípio também adotado em Java onde os programas desenvolvidos são compilados
duas vezes. Uma na distribuição gerando os códigos “bytecodes” e a outra compilação
ocorre na execução do programa.
Desta forma um programa é escrito em qualquer uma das linguagens de
programação suportadas e disponíveis para a plataforma e o código fonte gerado pelo
programador é então compilado pela linguagem escolhida gerando outro código
intermediário chamado de MSIL (Microsoft Intermediate Language).
Este código novo é gerado em um arquivo na linguagem Assembly (linguagem
ao nível de máquina – baixo nível) de acordo com o tipo do projeto em execução. Sejam
eles:
 EXE (arquivos executáveis. Programas);
 DLL (bibliotecas de funções);
 ASPX (pagina web);
 ASMX (web service);

Quando o programa é chamado para execução este é novamente compilado pelo


compilador JIT (Just in time), capaz de interpretar várias linguagens, isto de acordo com
o tipo de código gerado anteriormente. Como exemplo podemos citar o caso de um web
site desenvolvido em ASP.Net, quando este entra pela primeira vez em uma página JIT
esta irá compilá-la nas outras vezes em que o programa for chamado novamente, neste
caso ele usa a primeira compilação como modelo para as demais.

Outro recurso é pré-compilar o código através de ferramentas especificas de


maneira a não haver custo de compilação JIT durante a execução. Um compilador JIT
será disponibilizado para cada plataforma na qual a .NET Framework rodar, assim você
sempre terá código nativo em qualquer plataforma que rode a .NET Framework. 
Por esta arquitetura utilizar a MSIL que possibilita o uso de engenharia reversa
(possibilidade de através de um código compilado, recuperar o código original) idéia
não muito quisto entre as empresas de desenvolvimento de software que tem como
negócio a venda de softwares produzidos sob esta plataforma. E para diminuir os
prejuízos gerados por este recurso (engenharia reversa) algumas empresas utilizam
ferramentas que escondem, trocam nomes de variáveis, métodos e interfaces que usam a
linguagem MSIL. Tudo para dificultar o uso da engenharia reversa.
Para tudo isto ocorra o .NET se pauta nos seus dois principais pilares: No seu
conjunto de bibliotecas presentes no Framework e principalmente na CLR (linguagem
comum em tempo de execução).
Na figura 1, há uma representação de como é a arquitetura do Framework .NET,
a forma de interpretação de várias linguagens sob um única plataforma.

Figura 1- Arquitetura Framework .NET

4. Como o .NET (COM+) funciona?

A idéia da plataforma é o conceito de reusabilidade do código e isto se faz com a


adoção de componentes, que é um programa de bloco de construção que se auto
descreve. Desta forma ele pode ser executado juntamente com outros componentes e
cada um irá guardar as suas características e compreenderá as características dos outros
componentes, ou seja, outra aplicação pode ser desenvolvida através da reutilização de
componentes já existentes sem a necessidade de compilar o aplicativo.
Também torna se bastante fácil de distribuir os diferentes componentes de uma
aplicação entre diferentes computadores em uma rede. Além de sua auto-descrição, um
componente é composto de uma ou mais classes que descrevem objetos e métodos que
podem ser executados. A classe tem propriedades descritas em uma interface.
No momento em que uma classe é instanciada, esta cria um objeto que pode ser
executado pelo computador.
O .NET Framework, além disto, propicia herança de classes entre linguagens,
ou seja, permite que uma classe escrita em uma linguagem derive de outra classe-base
de outra linguagem de programação. Coisa que a COM não conseguia fazer por causa
das grandes diferenças de implementações e linguagens. Com a adoção de uma
linguagem de programação intermediária (IL) padronizada do CRL permite aos
aplicativos .NET usem herança.
Quando se usa o .NET, objetos, classes e seus métodos e dados são compilados
em módulos binários executáveis, o que na verdade são arquivos vinculados
dinamicamente a uma DLL.
A Common Language Runtime (CLR) é um componente do .NET Framework
que fornece o contexto para que sejam executadas aplicações escritas em código
gerenciado. O CLR (Common Languagem Runtime) é centro do Microsoft .NET
Framework é ele que fornece o ambiente de execução para todo o código do .NET. O
código executado no CLR é chamado de código gerenciado. O CLR fornece diversas
funções e serviços necessários para a execução de programas, incluindo a compilação
JIT (Just-In-Time), alocação e gerenciamento de memória, imposição de segurança de
tipos, tratamento de exceções, gerenciamento de threads e segurança. Algumas vezes, a
CLR é uma máquina virtual, mas a capacidade da CLR se estende além de uma simples
máquina virtual. A CLR entende internamente o seu próprio contexto e responde
apropriadamente dependendo do sistema operacional em que se encontra. Por exemplo:
A CLR se comporta de forma diferente no Windows 98 e Windows ME em relação ao
Windows XP e Windows 2003. Isso porque existem diferenças fundamentais entre estas
2 famílias.
A CLR também tem a capacidade de se adaptar a ambientes multi-processados,
a fim de prover o melhor aproveitamento destes ambientes. A CLR é baseada em um
padrão conhecido como Common Language Infrastructure (CLI), que define um
ambiente de execução independente do sistema operacional. A CLR fornece também o
just-in-time (JIT) compiler. Esta ferramenta converte a Intermediate Language (IL) em
código nativo, capaz de ser executado pela CPU.

O compilador JIT, também conhecido como JITTER tem três tipos:

 Pré-JIT: Compila de uma só vez todo o código da aplicação .NET que esta
sendo executada e o armazena no cache para uso posterior.
 Econo-JIT: Utilizado em Hand-Helds onde a memória é um recurso precioso.
Sendo assim, o código é compilado sob demanda e a memória alocada que não
esta em uso é liberada quando o dispositivo assim o requer.
 Normal-JIT: Compila o código sob demanda e joga o código resultante em
cache, de forma que esse código não precise ser recompilado quando houver
uma nova invocação do mesmo método.
A IL é uma nova linguagem projetada para ser eficientemente convertida em
código nativo em diferentes tipos de dispositivos. Ela é a língua franca do .NET
Framework. O compilador do Visual Basic gera IL, o compilador do C# gera IL, ou
seja, todo compilador que faz parte do .NET Framework gera IL.
A CLR é capaz de executar diferentes linguagens de programação, pelo simples
fato que o código fonte que o programador digita é compilado gerando um código
intermediário em uma linguagem chamada MSIL (Microsoft Intermediate Language).
Temos então um texto fonte de alto nível como entrada para um compilador que gera
como saída uma linguagem intermediária também em alto nível. Este novo código fonte
gera um arquivo chamado "Assembly" e a depender do tipo de projeto ele pode gerar as
seguintes extensões de arquivos: .EXE , .DLL , .ASPX – página web , .ASMX – que é o
Web Service . No momento da execução do programa o código é novamente compilado,
desta vez pelo JIT (Just In Time Compiler), ou seja, os programas são compilados 2
vezes. Além disso, com o framework é possível também pré-compilar o código, fazer
engenharia reversa devido a ao fato da arquitetura .NET utilizar a MSIL.
A CLR também define um sistema de tipos padrão para ser usado por todas as
linguagens que a suportam. Isto significa que as linguagens do tipo CLR terão os
integers e longs de mesmo tamanho, e elas terão, todas, o mesmo tipo de string - sem
mais preocupações com BStrs e CStrs! Este sistema padrão de tipos abre as portas para
uma poderosa interoperabilidade entre linguagens. Por exemplo, você pode passar uma
referência de uma classe de um componente para outro, mesmo se estes componentes
sejam escritos em linguagens diferentes. Você também pode derivar uma classe no C#
de uma classe base escrita em VB .NET, ou qualquer outra combinação de linguagens
criadas para a CLR. Não esqueça que COM também tem um conjunto de tipos padrão,
mas são padrões binários. Isto significa que com COM, você tem interoperabilidade de
linguagens em tempo de execução. Com o padrão .NET , você tem interoperabilidade
entre linguagens em tempo de design.
A IL é uma linguagem de nível mais baixo que o VB ou o C#. Para os
programadores mais antigos, ela pode ser considerada uma remanescente da linguagem
assembly, mas em um nível um pouco mais alto de abstração.
Com o CLR instalado no Microsoft SQL Server (a chamada integração CLR), é
possível criar procedimentos armazenados, gatilhos, funções, tipos e agregações
definidas pelo usuário no código gerenciado. Como o código gerenciado é compilado
em código nativo antes da execução, é possível obter aumentos significativos de
desempenho em alguns cenários.
Todo código que é gerado na plataforma .NET é chamado de código gerenciado.
Gerenciado porque ele é controlado pelo CLR (Common Language Runtime) que
fornece os seguintes serviços: integração entre linguagens, segurança, suporte a versões
e coleta de objetos que não estão em uso (Garbage Collection).
Se considerarmos que todas as linguagens encontradas no .NET são compiladas
em IL e a CLR executa a IL, então podemos considerar de que todo código gerenciado
é o mesmo para a CLR independente da linguagem de alto nível que é utilizada. Todas
as linguagens são linguagens de primeiro nível. Toda linguagem .NET tem acesso ao
.NET Framework Class Library. Qualquer desenvolvedor .NET pode reutilizar a IL
compilada criada em qualquer linguagem .NET.
 
Isso não significa que as linguagens .NET são idênticas. Algumas linguagens
são mais apropriadas para resolver determinados tipos de problemas. 
O código gerenciado usa a CAS (segurança de acesso do código) para impedir
que os assemblies executem determinadas operações. O SQL Server utiliza a CAS para
ajudar a proteger o código gerenciado e evitar o comprometimento do sistema
operacional ou do servidor de banco de dados.

O código que não opera com o CLR é chamado de código não-gerenciado. De


forma que todo o código anterior, como código COM, é código não-gerenciado. Isto
porque o COM foi lançado antes de existir o ..NET e não dá suporte ao framework
.NET (CLR), de maneira que não pode utilizar os serviços do CLR. Por esta razão não
podemos misturar código gerenciado e não-gerenciado numa mesma aplicação, pois um
não reconhece o outro. O código gerenciado não depende só do CLR, mas espera pelos
outros componentes com os quais ele irá interagir.

A solução para este problema de interação de códigos é usar um Proxy. Que é


parte de uma aplicação que aceita comandos de outros componentes, modifica-os e
reenvia-os para outro componente. Na necessidade de chamar um código não-
gerenciado a um código gerenciado (integração) podemos citar um como exemplo, o
Runtime-Callable Wrapper (RCW). A figura 2 mostra o esquema de como o RCW
ultrapassa a fronteira existente entre o código gerenciado e o não-gerenciado. Temos um
aplicação .NET acessando dois componentes COM: cliente.dll e servidor.dll.

Figura 2 – Funcionamento do proxy RCW

Embora o RCW pareça ser um objeto comum para .NET, a sua principal função
é empacotar as chamadas entre um cliente .NET e um objeto COM.
O tempo de execução cria exatamente um RCW para cada objeto COM,
independentemente do número de referências que existem sobre esse objeto. O tempo
de execução mantém um único RCW por processo para cada objeto.
Se você criar um RCW em um domínio de aplicativo e em seguida, passar uma
referência para outro domínio de aplicativo, um proxy para o primeiro objeto será
usado. Como mostra a ilustração da Figura 3, qualquer número de clientes gerenciados
podem conter uma referência para os objetos COM que expõe interfaces INew e
INewer.

Figura 3 - Acessando objetos COM através do Runtime Callable

Usando derivadas de metadados de uma biblioteca de tipo, o tempo de execução


cria tanto o objeto COM que está sendo chamado e um invólucro para esse objeto. Cada
RCW mantém um cache de ponteiros de interface sobre o objeto COM empacotado e
libera sua referência sobre o objeto COM quando o RCW não é mais necessária. O
tempo de execução executa a coleta de lixo no RCW.

O .NET propicia gerenciamento de memória automático,


usando um mecanismo chamado garbage collection (coleta de
lixo). Um programa não precisa mais liberar explicitamente a
memória que ele tenha reservado. O CLR detecta quando um
programa não está mais usando essa memória e a recicla
automaticamente. (PLATT - 2002).

Especificamente, o RCW fornece o empacotamento de argumentos de métodos e


valores de retorno do método, sempre que o cliente e o servidor têm diferentes
representações dos dados transmitidos entre eles.
O invólucro norma impõe regras internas de empacotamento. Por exemplo,
quando um cliente .NET passa um tipo String, como parte de um argumento para um
objeto não gerenciado, o wrapper converte a string para um tipo BSTR. Se o objeto
COM retornar um BSTR para o chamador gerenciado, o chamador recebe uma
String. Tanto o cliente e o servidor de enviar e receber dados que lhes é familiar. Outros
tipos exigem não nenhuma conversão.
O .NET Framework organiza a funcionalidade do sistema operacional por meio
do espaço de nomes System. Todos os objetos, interfaces e funções são organizadas de
maneira hierárquica, desta forma é mais fácil encontrar o que se deseja. Outro ponto
importante é que esta hierarquia evita que nomes de objetos e funções sejam iguais aos
nomes usados pelo sistema operacional e com os nomes usados por outros
desenvolvedores. Todas a funções e objetos do .NET estão no espaço de nomes. Por
esta razão ele (system) é muito grande sendo necessário subdividi-lo em espaços
menores e subordinados ao system. Como por exemplo: o System.Console que contém
todas as funções de entradas e saída de uma janela de console.

O espaço de nomes System é implementado em várias DLLs


separadas, de modo que é preciso fazer com que as
ferramentas de desenvolvimento saibam como incluir todas
as DLLs necessárias. (PLATT - 2002).

5.   Vantagens da integração CLR

O Transact-SQL, da Microsoft, foi projetado, principalmente para a manipulação e o


acesso direto ao banco de dados. Embora o Transact-SQL seja excelente no
gerenciamento e no acesso a dados, ele não é uma linguagem de programação
totalmente desenvolvida.
A linguagem Transact-SQL é uma extensão da Microsoft ao padrão SQL-92 e
adiciona melhorias e recursos que fazem dela uma linguagem de acesso e manipulação
de dados eficiente, robusta, segura e exclusiva do SQL Server. Porém, ela não dá
suporte a matrizes, coleções, loops foreach, deslocamento de bit ou classes. Algumas
dessas construções podem ser simuladas no Transact-SQL, mas o código gerenciado
tem suporte integrado para elas. Dependendo do cenário, esses recursos podem
representar um motivo convincente para implementar determinada funcionalidade de
banco de dados no código gerenciado.
A integração do SQL Server 2005 e o .NET Framework, permite aos
desenvolvedores criar objetos de banco de dados utilizando linguagens como VB.NET,
C# e outras.
Uma outra vantagem do uso do código gerenciado é a segurança de tipos ou a
garantia de que o código acesse apenas os tipos de modos permitidos e bem definidos.
Antes da execução do código gerenciado, o CLR verifica se o código é seguro. De
foram que nenhuma memória que não tenha sido gravada previamente seja lida. O CLR
também pode ajudar garantir que o código não manipule espaços de memória não
gerenciada. A integração CLR oferece a possibilidade de melhorar o desempenho.
O Microsoft Visual Basic .NET e o Microsoft Visual C#, além de oferecerem
recursos orientados a objeto, como encapsulamento, herança e polimorfismo. Agora, o
código relacionado pode ser facilmente organizado em classes e namespaces (espaços
de nomes). Ao trabalhar com grandes quantidades de código do servidor, isso permite
organizar e manter seu código de forma mais fácil.
O código gerenciado é mais adequado que o Transact-SQL para cálculos e
lógica de execução complicada, apresentando suporte abrangente para diversas tarefas
complexas, incluindo o tratamento de cadeias de caracteres e expressões regulares. Com
a funcionalidade que se encontra na Biblioteca do .NET Framework, você tem acesso a
milhares de classes e rotinas pré-criadas. Elas podem ser acessadas facilmente de
qualquer procedimento armazenado, gatilho ou função definida pelo usuário.  
Em resumo, use o Transact–SQL quando o código executar o acesso a dados
principalmente com pouca ou nenhuma lógica de procedimento eescolha o código
gerenciado para funções que utilizam intensamente a CPU onde os procedimentos
apresentam lógica complexa, ou quando desejar usar a BCL do .NET Framework.
A BCL (Base Class Library) inclui classes que fornecem funcionalidade para
manipulação de cadeias de caracteres, operações matemáticas avançadas, acesso a
arquivos, criptografia e outros.

6.   Algumas desvantagens do .NET

 Performance: o conceito da compilação gerando linguagem IL com o JIT


carregando a aplicação é muito semelhante à compilação Cobol gerando código
intermediário .INT, sendo carregado pelo runtime. E neste caso é mais lento que
um.EXE
 Compilação reversa: a IL é susceptível à compilação reversa. Essa possibilidade
tem gerado muitas dúvidas em relação à segurança geral da Framework .NET.
 Aplicativos Legados: a arquitetura subjacente do Visual Studio.net não é COM.
Fica a dúvida então em relação à compatibilidade com os componentes ActiveX
já existentes, não .NET.
 WebServices: apesar dos WebServices se comportarem como objetos .COM,
eles não são tecnicamente a mesma coisa e trabalham com o ASP.Net. A
Microsoft gostaria de ver todos os tipos de empresa hospedando WebServices, e
os aplicativos do futuro deverão apenas "juntar" os vários WebServices, da
mesma forma que se utiliza hoje o VBA (Visual Basic for Applications) para
criar soluções para aplicativos Office e VBA. Os WebServices fazem parte de
uma ambiciosa estratégia da Microsoft, mas só o tempo dirá se a empresa
alcançou seu intuito de ver os WebServices utilizados em larga escala. Contudo,
o conceito é promissor.

7. Conclusão
O principal foco do Microsoft .NET é fazer uma mudança de paradigma, passando de
um ambiente de aplicativos e dispositivos isolados para uma gama muito maior de
computadores, dispositivos, transações e serviços que se conectam diretamente e
trabalham em conjunto na busca de soluções mais amplas e ricas. Isto em um cenário de
uso cada vez maior de componentes sempre focando na possibilidade de reuso destes.
Nesta ótica de desenvolvimento proposto, baseada no uso cada vez maior de
componentes multi-linguagens, onde a linguagem já não é tão determinante, possibilita
o desenvolvimento independente onde um mesmo componente pode ser usado em
varias linguagens que são reconhecidas pela plataforma .NET Framework. E com esta
portabilidade traz se o beneficio da redução de tempo e custo do desenvolvimento.
Além disto, tem-se a tendência de diminuir problemas de implementação, pois um
componente deve ser amplamente testado antes de disponibilizá-lo. Afinal de contas
“ninguém deseja reinventar a roda”.
O .NET embora em desenvolvimento tem um amplo caminho a percorrer, mas
conta com o aval de uma empresa reconhecidamente mestre em fazer apostas bem
sucedidas, ou tem algum de nos que não tenha usado o ambiente gráfico da família
Windows?.
O .NET Framework é um forte concorrente a máquina virtual Java propondo a
adoção de uma plataforma multi-linguagens com gerenciamento de memória, segurança
do código e facilidade de implementação, tudo isto associado a idéia de reusabilidade de
todos os seus componentes.
Esperemos para ver do que o .NET é capaz, com o passar do tempo e com o uso
massificado desta plataforma, descobriremos se ele cumpri ao que tem prometido aos
desenvolvedores de softwares.
Referências:
S. Platt, David- (2002) – Microsoft .NET – Iniciando – editora: Makron Books – São
Paulo – SP.

Guimarães, Renato – Você Tem componentes COM e quer aproveita-los em .NET?


disponível em: < http://www.linhadecodigo.com.br/artigo/309/Voc%C3%AA-tem-
componentes-COM-e-quer-aproveit%C3%A1los-em-NET.aspx> - acesso em
23/03/2011.

Framework DotNet – disponível em:


<http://www.fromsoft.com.br/artigos/notframenet.html> - acesso em: 25/03/2011

Runtime Callable - disponivel em: < http://msdn.microsoft.com/en-


us/library/8bwh56xe.aspx > - acesso em 27/03/2011.

Nascimento, Rafael - O que é .NET? – disponivel em: <


http://www.devaspnet.com.br/colunas2/coluna2602.aspx > - acesso em 27/03/2011.

Novidades do Transact-SQL – disponível em:<


http://www.devmedia.com.br/articles/viewcomp.asp?comp=7000&hl=> - acesso em:
29/03/2011

Introdução ao Framework DotNet e à Linguagem C# - disponível em:


< http://www.sirmacstronger.eti.br/dotnet/introddotnet.php> - acesso em
20/03/2011.

Gontijo, Breno & Júnior, Cláudio - Curso de Introdução a Plataforma .Net


FrameWork SDK – disponível em :< http://pt.scribd.com/doc/49344276/Apostila-
dotNET> - acesso em: 20/03/2011,

.NET Framework Conceptual Overview – disponível em:


<http://msdn.microsoft.com/en-us/library/zw4w595w.aspx> acesso em: 20/03/2011.

.NET Framework disponível em: <http://www.microsoft.com/net/> - acesso em:


25/03/2011.

Você também pode gostar