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)
livros.exibeLivro()

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