Desenvolvimento - Visual Basic .NET
.NET Class Libary - Expanda as funcionalidades com seu Framework
Utilize de sua imaginação e aumente as funcionalidades das classes oferecidas no pacote do framework e olhe que não são poucas...
por Ramon DurãesUtilize de sua imaginação e aumente as funcionalidades das classes oferecidas no pacote do framework e olhe que não são poucas... Criando um Framework personalizado que venha agregar todas classes que você pretende utilizar nas aplicações, ganhando com isso uma boa reutilização de código e principalmente uma padronização do código utilizado. Fazendo com todos desenvovedores da empresa utilizem o mesmo padrão do desenvolvimento. A necessidade da construção de um framework próprio dar-se muito em empresas que possuem fabrica de software pois a movimentação de profissionais é grande então para garantir que os novos profissionais sigam o mesmo ritmo é fundamental a criação de um framework personalizado. Neste artigo vamos nos focar na construção da biblioteca de classes (Class Libary) que é a base.
Class Libary
Inicie um novo Projeto conforme Figura 1 digite o nome para a classe e conforme, o Visual Studio vai gerar todos arquivos para esse novo projeto. Como o projeto é Class Libary ele não tem interface de tela como nos outros projetos. Neste modelo você coloca o código de sua classe que antes você armazenava em conjunto com sua aplicação.
Figura 01 - Iniciando novo projeto de Class Libary
Por padrão o Visual Studio vai criar o arquivo Class1.vb conforme Figura 2. Esse tipo de projeto vem com básico de referencias, como vamos implementar uma rotina para exportar para excel (*.xls) e vamos precisar dos recursos disponibilizados pela classe System.Web vamos precisar adicionar referencia dessa dll ao nosso projeto, veja como fazer isso na Figura 3 e na Figura 4.
Figura 02 - Class Libary padrão
Por padrão é criando um NameSpace com o mesmo nome da aplicação (NameSpace no .NET tem a função de organizar as classes, para que não se misturem com outras classes de mesmo nome), como vamos criar nosso próprio NameSpace vamos remover o que já vem sugerido no projeto padrão, faça isso conforme a Figura 2a clicando com botão direito no projeto pelo solution explorer.
Figura 02a - Removendo NameSpace do projeto Class Libary
Por padrão projetos do tipo Class Libary vem com o básico de dll referenciadas, como vamos necessitar de uns recursos disponíveis na system.web vamos precisar antes adicionar a referencia para a mesma manualmente. Faça isso clicando em references conforme Figura 03, Selecione a dll System.Web.dll depois clique em {Select} e finalmente em {OK} para confirmar.
Figura 03 - Adicionando referência
Figura 4 - Adicionando referência System.Web.dll
Feito isso dentro desse projeto já podemos acessar os recursos contidos dentro de System.WebClasse com funcionalidades (JavaScript e Ado.NET)
Nossa primeira implementação será uma biblioteca de classe com funções javascript de modo que possam facilmente ser reutilizadas no código.
Listagem 01 - Código para criar classe de exportação XLS
Imports System.Data Imports System.Data.SqlClient Namespace Empresa.Framework Public Class JavaScript Public Sub Alerta(ByVal btBotao As System.Web.UI.WebControls.Button, ByVal strMsg As String) "Adiciona javascript alerta no botão btBotao.Attributes.Add("onclick", "window.alert("" + strMsg + "");") End Sub "<summary> "Botão de confirmação "</summary> Public Sub Confirma(ByVal btBotao As System.Web.UI.WebControls.Button, ByVal strMsg As String) Dim valor As String valor = " " btBotao.Attributes.Add("onclick", " return window.confirm("" + strMsg + ""); ") End Sub End Class Public Class DataAccess Public Function RetornaDT(ByVal strConnString As String, ByVal strQuery As String) As DataTable Dim conn As New SqlConnection "Criando objeto Connection Dim cmd As New SqlCommand "Criando objeto Command Dim da As New SqlDataAdapter "Crianda DataAdapeter Dim dt As New DataTable "Criando objeto DataSet Try conn.ConnectionString = strConnString cmd.Connection = conn cmd.CommandText = strQuery cmd.CommandType = CommandType.Text da.SelectCommand = cmd da.Fill(dt) Catch ex As Exception Throw New Exception("Falha:" + ex.Message) Finally da.Dispose() conn.Close() cmd.Dispose() End Try Return dt End Function Public Function ExecutaQuery(ByVal strConnString As String, ByVal strQuery As String) As Int32 Dim conn As New SqlConnection "Criando objeto Connection Dim cmd As New SqlCommand "Criando objeto Command Dim intRetorno As Int32 conn.ConnectionString = strConnString cmd.Connection = conn cmd.CommandText = strQuery cmd.CommandType = CommandType.Text Try conn.Open() intRetorno = cmd.ExecuteNonQuery Catch ex As Exception intRetorno = -1 Throw New Exception("Falha:" + ex.Message) Finally conn.Close() conn.Dispose() cmd.Dispose() End Try Return intRetorno End Function End Class End Namespace
Após adicionar o código da Listagem 1 efetue o Build do seu projeto e pronto. Seu componente já está pronto e você acabou de criar uma dll que pode ser usada por outras aplicações .NET. Com esse pequeno código você já pode oferecer a primeira versão do seu framework para os outros programadores de sua empresa.
Utilizando sua DLL em um projeto
Basta agora você iniciar um novo projeto, para nosso exemplo vamos criar uma aplicação web chamada de webframework com único objetivo de realizar teste. Para isso vá ao solution explorer e adicione uma nova aplicação web conforme Figura 5.
Feito isso, você deve adicionar uma referencia para esse componente para que possa utilizar as classes que encasulamos no nosso framework. Então com botão direito em referencias (References), clique em add e adicione a referencia conforme Figura 6.
Figura 5 - Adicionando nova aplicação para teste
Figura 6 - Localizando componente Class Libary
Concluída essa etapa adicione uma pagina aspx pelo solution exporer>projeto>add web form (Botao.aspx), após adicionar, vá ao toolbox e adicione um botão nessa pagina, de depois efetue um duplo clique na pagina e adicione o código conforme a Listagem 2.
Figura 6a - Componente framework já referenciado nesse projeto
Listagem 2 - Código pagina (botao.aspx)
Public Class botao Inherits System.Web.UI.Page Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load "Chamando Classe dentro do Framework Dim MeuFramework As New Empresa.Framework.JavaScript MeuFramework.Alerta(Me.btConsulta, "Você clicou no botão") End Sub End Class
Adicionando o código da Listagem 2 efetue o build da aplicação e teste você mesmo. Para meu caso a url será http://localhost/webframework/botao.aspx conforme Figura 7. Ao clicar no botão o mesmo vai apresentar um alerta
Figura 07 - Testando aplicação com primeiro botão
Vamos agora realizar um segundo teste, adicionando um segundo botão que deve exibir um alerta para confirmação. Utilize a Listagem 03 para implementação do código e configura na Figura 08.
Listagem 3 - Código pagina (botao.aspx)
Public Class botao Inherits System.Web.UI.Page Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load "Chamando Classe dentro do Framework Dim MeuFramework As New Empresa.Framework.JavaScript MeuFramework.Alerta(Me.btConsulta, "Você clicou no botão") MeuFramework.Confirma(Me.btSegundoBotao, "Você deseja continuar?") End Sub End Class
Figura 08 - Testando aplicação com segundo botão
Está contente com o resultado apresentado, veja agora o que vamos fazer neste outro exemplo. Adicione uma nova pagina chamada de DataGridTeste.aspx e adicione um DataGrid chamado de dgConsulta, depois clique bom botão direito no mesmo e escolha AutoFormat para escolher um layout.
Após isso efetue dois cliques no formulário e adicione o código da Listagem 4, e depois confira o resultado na Figura 09.
Listagem 4 - Código pagina (DataGridTeste.aspx)
Public Class DataGridTeste Inherits System.Web.UI.Page Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load If Not Me.Page.IsPostBack Then carregaDG() End If End Sub Sub CarregaDG() Dim MeuFrameWorkDB As New Empresa.Framework.DataAccess Dim strConnstring As String = _ "Data Source=localHost; User ID=sa; Password=;Initial Catalog=Northwind" Dim strQuery As String = "Select top 10 ProductID,ProductName from Products" Me.dgConsulta.DataSource = MeuFrameWorkDB.RetornaDT(strConnstring, strQuery) Me.dgConsulta.DataBind() End Sub End Class
Figura 09 - DataGrid carregado utilizando código do componente
Conforme visto na Figura 09, apresentamos um DataGrid. Já sabemos que não existe mistério em carregar o mesmo. Agora gostaria de chamar sua atenção é que carregamos o mesmo sem "utilizar o ado.net", utilizamos a nossa classe contida no Empresa.FrameWork que se encarrega de utilizar as classes do ADO.NET e apenas retornar o DataTable para utilizamos.
Significa então que podemos criar atalhos para os principais comandos do ADO.NET de forma que todos acessem o banco de dados da mesma forma, garantindo assim um procedimento padrão e eliminação do programador que está na linha de frente de conhecer a fundo o ADO.NET, bastando para o mesmo chamar as classes dos componentes.
Conclusão
Viu como foi fácil a implementação, gaste um pouco de tempo no projeto do seu framework e depois usufrua de todas as vantagens da reutilização de código e principalmente a padronização.
Com .NET Class Libary seu trabalho de implementação do componente realmente ficou muito simples, pois basta copia e colar a classe e pronto. Já temos um componente pronto.
"Construa seu próprio FrameWork ! "
Sua participação é fundamental. Mande suas sugestões.
Você é de Salvador/Bahia venha para o grupo de usuários http://www.mutex.com.br
Até o próximo artigo!
- Entity Framework 4: Repositório GenéricoVisual Basic .NET
- As edições 14 da Easy .net Magazine e 88 da .net Magazine já estão disponíveis.ADO.NET
- Postando no Twiiter com .NET e Migre.meC#
- Setup ApplicationsVisual Basic .NET
- Problemas na manipulação de arquivos do MS Excel com .NETVisual Basic .NET