VB
.NET - Conceitos básicos : Entendendo e criando Componentes
Neste artigo vou escrever (novamente) um pouco sobre como criar componentes no Visual Basic .NET.
Componentes
Componentes são classes que são agrupadas para um propósito comum em uma livraria ou library.
Um Assembly .NET é um
bloco de construção de aplicação e representa uma unidade
básica de implantação, consistindo de tipos e recursos que
trabalham em conjunto.
Podemos visualizar informações de um projeto assembly da
seguinte forma.
- Abra o projeto
no Visual Basic 2010 Express Edition; - Na janela Solution Explorer clique em My Project; - A seguir clique na aba Application; - Finalmente clique no botão : Assembly Information... Na figura ao lado temos as
informações do assembly |
![]() |
Em sua forma mais simples, um assembly consiste de um arquivo .dll que contém as seguintes partes:
- Assembly Manifest -
Contém informações sobre o conteúdo do próprio assembly;
- Tipo MedataData - Contém informação sobre os tipos de dados
definidos no assembly;
- código MSIL - O resultado da compilação do código-fonte do
aplicativo;
- Resources - Representam recursos como bitmaps, ícones,
strings, etc...
Um componente (também conhecido como uma biblioteca de classe) é um conjunto de classes relacionadas que pertencem a uma assembly único e foram compilados e armazenados de modo que eles estão facilmente disponíveis para outras aplicações.
A maioria das empresas que escrevem software tendem a reciclar uma grande parte do seu código em várias aplicações. O mesmo é verdadeiro para os consultores de informática, que adaptam e personalizam a mesmo aplicação de software para vários clientes.
Em tais situações, não faria sentido inserir cópias duplicadas do código-fonte em cada aplicação. Imagine o que aconteceria se um bug for encontrado ? Cada cópia do código-fonte teria que ser examinado, corrigido, e recompilado novamente. Seria um absurdo !!!!
A principal vantagem de usar um componente é que ele torna mais fácil reutilizar código existente existentes. Esta vantagem se torna ainda mais importante quando um componente contém uma regra de negócio complexa. Se o componente é depurado completamente, não há necessidade de escrever e depurar o mesmo código em todas as aplicações que precisa da mesma funcionalidade. Ao longo do tempo, quando o novas características e modificações são adicionados ao componente, uma nova versão é distribuída a todas aplicações que o utilizam.
Podemos dividir os componentes em duas classes gerais:
Dentro do escopo deste artigo eu vou abordar a criação e utilização de um componente de código.
Criando e usando um Componente no Visual Basic
Tanto o Visual Studio como as versões Express possuem suporte aos componentes e podemos criar um componente como um projeto e então referenciar o componente em outras aplicações. Para fazer isso geralmente seguimos os seguintes passos:
Um componente é compilado pelo Visual Studio ou VB em um arquivo DLL (nome do arquivo com extensão .DLL ). Este arquivo, também conhecido como uma biblioteca de vínculo dinâmico,pode ser usado por qualquer aplicação. NET.
Um componente tem um número de versão (tal como 1.2.0) associado a ele, que é muito útil quando ele for modificado no futuro. O desenvolvedor do componente incrementa o número de versão (primeiro dígito) ou o número de versão secundária (segundo dígito) ou o número da liberação de serviços(terceiro dígito).
Dessa forma dado um número da versão atual como 1.2.0, por exemplo, o número da nova versão poderia ser 2.1.0, 1.3.0, ou 1.2.1, dependendo da importância da liberação. Com o tempo, alguns clientes podem ter múltiplas versões do arquivo DLL no seu computador, para que possam verificar o número de versão de cada arquivo para encontrar qual desejam usar.
Criando um componente e referenciando-o em outra aplicação
Na parte prática vamos criar um projeto Class Library que será usada como uma DLL de acesso a dados. Para não complicar muito vamos definir apenas um método em nosso componente.
A seguir vamos criar uma aplicação Windows Forms que referencia este componente e utiliza os seus recursos.
Na criação do nosso componente vamos usar os recursos da ADO .NET e criar uma classe genérica para acessar vários banco de dados usando a classe DbProviderFactory.
O nosso componente fornecerá dois métodos: GetConexao e GetDataAdapter.
Estes dois métodos irão ler a
informação a partir do usuário e com base no tipo de ligação
e outras informações fornecidas pelo usuário eles vão criar e
retornar a saída desejada. A definição dos métodos é a
seguinte:
GetConexao
IDbConnection público (int connType, string connString)
público IDbDataAdapter GetDataAdapter (int connType, string
connString, string sql)
Observe que ao invés de retornar um objeto conexão relacionado
a um provedor de dados ele retorna um IDbConnection.
Assim criar objetos SqlConnection ou OleDbConnection (poderiamos
ter implementado também para OdbcConnection) depende do tipo de
argumento fornecido na conexão pelo usuário em tempo de
execução.
Abra o Visual Basic 2010 Express Edition ou o Visual Studio e crie um novo projeto do tipo Class Library chamado AcessoGenerico;
![]() |
Ao salvar o projeto informe como nome da solução : AcessoGenericoLibrary
![]() |
Agora vamos renomear a classe Class1.vb criada por padrão para ConexaoDB.vb e incluir o seguinte código nesta classe:
mports System.Data Imports System.Data.Common Imports System.Data.OleDb Imports System.Data.SqlClient Public Class ConexaoDB Private idbConn As IDbConnection = Nothing Private idbAdapter As IDbDataAdapter = Nothing Public Sub New() End Sub 'retorna um IDbConnection Public Function GetConexao(ByVal connType As Integer, ByVal connString As String) As IDbConnection Try Select Case connType Case 1 ' OleDb Data Provider idbConn = New OleDbConnection(connString) Case 2 ' Sql Data Provider idbConn = New SqlConnection(connString) Case Else End Select Return idbConn Catch ex As Exception Throw ex End Try End Function ' 'retorna um IDbDataAdapter Public Function GetDataAdapter(ByVal connType As Integer, ByVal connString As String, ByVal sql As String) As IDbDataAdapter Try Select Case connType Case 1 ' OleDb Data Provider idbAdapter = New OleDbDataAdapter(sql, connString) Case 2 ' Sql Data Provider idbAdapter = New SqlDataAdapter(sql, connString) Case Else End Select Return idbAdapter Catch ex As Exception Throw End Try End Function End Class |
Usamos o namespace System.Data.SqlClient para acessar o SQL Server e o namespace System.Data.Oledb para acessar o MS Access.
Neste ponto você pode compilar o seu projeto e gerar o arquivo AcessoGenerico.dll que já esta pronto para ser usado em qualquer outro projeto.
Vamos lá...
Consumindo a livraria criada
Para simplificar vamos um projeto Window Forms Application nesta mesma solução para referenciar e usar a biblioteca criada.
No menu File-> Add -> New Project selecione o template Windows Forms Application e informe o nome AcessoDados;
No formulário padrão form1.vb inclua os seguintes componentes:
Conforme o leiaute da figura abaixo:
![]() |
Agora vamos incluir a referência a nossa library criada. Para isso clique com o botão direito sobre o nome do projeto Windows Forms e selecione Add Reference;
Em seguida selecione na guia Projects o projeto AcessoGenerico que já criamos e clique em OK;
![]() |
Agora declare as seguintes variáveis no formulário form1.
Private connString, sql As String
Dim conn As IDbConnection = Nothing
Dim adapter As IDbDataAdapter = Nothing
No evento Click do botão de comando - Conectar - inclua o código abaixo:
Private Sub btnConexaoBD_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConexaoBD.Click Dim accGen As New AcessoGenerico.ConexaoDB sql = "SELECT * FROM Employees" Try If rdbAccess.Checked Then connString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\dados\Northwind.mdb" conn = accGen.GetConexao(1, connString) adapter = accGen.GetDataAdapter(1, connString, sql) ElseIf rdbSQLServer.Checked Then connString = "Data Source=.\SQLEXPRESS;Initial Catalog=Northwind;Trusted_Connection=True;" conn = accGen.GetConexao(2, connString) adapter = accGen.GetDataAdapter(2, connString, sql) End If Catch ex As Exception MessageBox.Show(ex.Message) Return End Try Try 'abra a conexao conn.Open() ' preenche o DataSet Dim ds As New DataSet adapter.Fill(ds) 'exibe os dados no datagridiview dgvDados.DataSource = ds.Tables(0).DefaultView Catch exp As Exception MessageBox.Show(exp.Message) Finally 'fecha a conexao se estiver aberta If conn.State = ConnectionState.Open Then conn.Close() End If End Try End Sub |
O código é trivial, nele estamos criando uma instância da nossa classe ConexaoDB e usando os métodos GetConexao e GetDataAdapter para realizar a conexão com o banco de dados selecionado pelo usuário;
Para simplificar estamos acessando a tabela Employees do banco de dados Northwind tanto no SQL Server como no MS Access;
O resultado final será idêntico conforme mostra a figura a seguir:
![]() |
Pegue o projeto completo
aqui: AcessoGenericoLibrary.zip
João 2:23
Ora, estando ele em Jerusalém pela festa da páscoa, muitos, vendo os sinais que fazia, creram no seu nome.Referências: