VB .NET - Criando uma livraria de classes (DLL)
Nosso objetivo é criar uma livraria de classes (class library) para mostrar os benefícios da reutilização de código e da portabilidade entre muitos programas e interfaces. |
Para saber mais sobre o assunto leia o artigo :: VB.NET - Criando uma DLL
A plataforma .NET permite a criação de DLLs que podemos compartilhar com múltiplos programas e interfaces tornando assim sua utilização um grande trunfo para o desenvolvedor. As DLLs na plataforma .NET são constituídas por tipos, sendo que usaremos o tipo class pois criaremos nossas classes na DLL para termos mais flexibilidade como iremos ver em seguida.
Neste artigo vamos criar uma DLL usando o VB 2005 Express Edition e em seguida mostrar que podemos usar essa dll em um outro projeto VB.NET , em um projeto C# e em um projeto Web obtendo o mesmo resultado. Mãos a obra...
Criando a livraria de classes - Livraria.dll
Abra o Visual Basic 2005 Express Edition e crie um novo projeto do tipo Class Library com o nome de Livraria através do menu Principal opção File->New Project;
Em seguida altere o nome do arquivo para Livros.vb
Agora inclua o seguinte código na classe Livros:
Nossa classe Livros possui, além do namespace Macoratti que você pode optar por não usar, 4 propriedades , 1 construtor e 1 método. Uma classe bem simples.
Salve o seu projeto e em seguida clique no menu Principal selecione a opção Build e clique em Build Livraria. Com isto estaremos criando a nossa DLL livraria.dll na pasta bin\release do projeto.
Até agora tudo tranqüilo, não é mesmo, pois vai continuar assim...
Usando a DLL - livraria.dll - em um projeto VB.NET
Vamos agora criar um novo projeto no VB 2005 Express Edition para usar a DLL que acabamos de criar.
Crie um novo projeto do tipo Windows Aplication com o nome de usandoLivrariaDLL .
Agora teremos que incluir uma referência ao arquivo livraria.dll para podermos usar a classe Livros criada.
Para isso clique com o botão direito do mouse sobre o nome do projeto e selecione a opção Add Reference...
Na janela Add Reference selecione a aba Browse e localize o arquivo Livraria.dll na pasta bin/release do projeto Livraria clicando no botão OK.
Agora no formulário padrão form1.vb inclua o seguinte código:
Note que estamos usando a declaração : Imports Livraria
No código declaramos uma variável do tipo Livraria usando o namespace e o construtor da classe Livros para atribuir valores as propriedades da classe.
Encerrando usamos o método exibeLivro para exibir as informações do livro.
Executando a solução no VB 2005 iremos obter o seguinte resultado:
Se dermos uma espiada usando o Object Browser (Menu View ou tecle F2) iremos notar a referência ao Assembly Livraria e a classe Livros exibindo as propriedades e métodos. Se você clicar sobre o assembly Livraria verá o caminho completo do arquivo livraria.dll.
Neste caso estamos usando o Early Binding onde o nosso projeto depende da DLL para ser carregado pois se o arquivo livraria.dll não estiver disponível o nosso projeto nem será carregado.
Acima uma visão do Object Browser:
Late Binding -
Poderíamos usar Late Binding usando o suporte a Reflections da
plataforma .NET. Para isso teríamos que copiar o arquivo livraria.dll criado
para o mesmo diretório da aplicação e usar seguinte código para usar a
DLL: (Somente para ilustrar) Imports System.Reflection... Dim livro As Assembly = Assembly.Load("Livraria") Dim md As Object = livro.CreateInstance("Macoratti.Livros") ... md.GetType().InvokeMember("Livros", BindingFlags.InvokeMethod, Nothing, md, New Object() {"teste", "teste", "teste", 1}) Dim resultado As String = md.GetType().InvokeMember("exibeLivro", BindingFlags.InvokeMethod, Nothing, md, Nothing) |
Usando a DLL em um programa C# criado no SharpDevelop
A grande vantagens de criarmos uma Class Library, que gera um arquivo .dll, é justamente o fato de podermos usar as classes incluídas na nossa DLL usando outra linguagem de programação. No nosso exemplo já mostramos um programa VB.NET usando a nossa DLL vamos agora mostrar um programa feito em C# usando a mesma DLL.
Vamos então criar uma aplicação C# usando o SharpDevelop. Para saber mais sobre o SharpDevelop leia também os meus artigos:
O
SharpDevelop é uma excelente ferramenta para auxiliar programadores a
desenvolver aplicações na plataforma Microsoft .NET de maneira ágil e
descomplicada. Sharpdevelop é um
projeto OpenSource para desenvolver um IDE para a .Net Framework, que
permite desenvolver aplicações em C#, VB .Net e em Boo. Além de uma interface leve e intuitiva, encontra-se completamente em nosso idioma, o que facilita a criação de projetos aos usuários inexperientes. Possui vasta compatibilidade, incluindo a linguagem Boo, desenvolvida pelo brasileiro Rodrigo Barreto de Oliveira. Confira os recursos desta poderosa ferramenta: Recursos: Design de formas para C# e VB.NET. Conclusão de código para C# e VB.NET (suporte ao CTRL + Barra de Espaço). Edição de XML. Inserção automática de código (ALT + Insert). Conversor de linguagens (VB.NET para C# e vice-versa). Foi desenvolvido completamente em C#. Compilação out-of-the-box. Opensource (código aberto). Analisador de Assembly. Pré-visualização de documentos em XML. Suporte a diversos idiomas. Permite escrever nas linguagens C#, ASP.NET, ADO.NET, XML e HTML. Possui opções avançadas para os projetos. Conta com destaque de sintaxe para as linguagens C#, HTML, ASP, ASP.NET, VBScript, VB.NET e XML. Suporte a modelos de códigos. É extensível, permite a adição de plugins e ferramentas externas. Fonte : http://baixaki.ig.com.br/download/SharpDevelop.htm |
Após baixar e instalar o SharpDevelop abra a aplicação e no menu Arquivo selecione a opção Novo e a seguir Solução
Em Novo Projeto selecione - Aplicações Windows e em Modelos - Aplicação Windows, informando o nome da aplicação. No exemplo usei o mesmo nome da aplicação VB.NET - usandoLivrariaDLL.
Vamos agora incluir uma referência no nosso projeto C# ao assembly livraria.dll gerado anteriormente. Clique com o botão direito sobre o nome da solução e selecione na opção Adicionar Referência;
Na janela Adicionar Referência abra a aba Navegador de Assembly .NET e clique no botão Navegar. Em seguida localize o arquivo Livraria.dll e clique em Abrir.
Inclua o código conforme indicado na figura abaixo no método Public MainForm:
Executando a aplicação teremos o mesmo resultado do exemplo feito em VB.NET:
Usando a DLL em um programa Web criado no Visual Web Developer Express Edition
Nosso próximo objetivo é usar a DLL criada em uma aplicação web. Para isto vou usar o Visual Web Developer Express Edition que também é grátis.
Abra o VWD e crie um novo site Web via menu File -> New Web Site com o nome de usandoLivrariaDLLWeb
Selecione o formulário padrão Default.aspx e no modo Design inclua um botão de comando conforme a figura abaixo.
A seguir teremos que incluir uma referência ao nosso arquivo Livraria.dll. Para isso clique com o botão direito do mouse sobre o nome do projeto e selecione Add Reference e em seguida selecione a aba Browse e localize o arquivo Livraria.dll;
Efetuando uma referência direta a DLL estou garantido que qualquer atualização no projeto da dll estará disponível na web.
Agora inclua o seguinte código no evento Click do botão de comando : (Perceba que é o mesmo código com a mesma sintaxe usada no exemplo da aplicação VB.NET)
Protected
Sub btnUsandoLivrariaDLL_Click(ByVal
sender As Object,
ByVal e As System.EventArgs)
Handles btnUsandoLivrariaDLL.Click
Dim livros
As New Livraria.Macoratti.Livros("ASP,
ADO e Banco de dados na Internet", "Macoratti",
"Visual Books", 35.5) End Sub |
Antes de executar o projeto falta um pequeno detalhe. Selecione o arquivo Default.aspx e no modo Source inclua a seguinte diretiva na página:
<%@ Assembly Name="Livraria" %>
Executando a página e clicando no botão de comando iremos obter:
Para encerrar o artigo podemos dizer que a utilização de class librarys (dlls) é um mecanismo poderoso que permite além da reutilização de código a portabilidade do mesmo entre diferentes linguagens e interfaces.
O exemplo do artigo criou uma DLL usando uma classe muito simples mas podemos criar aplicações com acesso a dados com classes mais complexas contendo diversos métodos e propriedades.
Gostaria de dizer que não houve uma preocupação com a segurança nem com o controle de versão da DLL visto que ela uma private assembly. Em artigos futuros veremos como podemos compartilhar a nossa DLL usando os recursos da plataforma .NET.
Pegue os projetos usados no artigo aqui:
Até o próximo artigo VB.NET ...
José Carlos Macoratti