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ães



Introdução

Utilize 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!

Ramon Durães

Ramon Durães - Especialista em desenvolvimento de software e Microsoft Most Valuable Professional (MVP) em Visual Studio Team System. Realiza treinamentos de .NET Framework em empresas, consultoria em arquitetura de software e implantação de Visual Studio Team System. Palestrante nos principais eventos da Microsoft no Brasil (Tech-Ed 2005, Tech-Ed 2006, Tech-Ed 2007, Tech-Ed 2008, Tech-ED 2009), Microsoft Innovation Days 2007 (Salvador, Brasília, Recife, Goiânia, Natal, Maringá), Microsoft Innovation Days 2009 (Salvador) , Campus Party Brasil 2009 e eventos regionais relacionados a grupos de usuários e universidades. Conhecido autor de artigos para os principais portais de conteúdo e autor de 10 publicações eletrônicas em CD (Video-Aula) pela editora Linha de Código além dos livros "Desenvolvendo para web usando o Visual Studio 2008" e "Gerenciando projetos de software usando Visual Studio Team System" pela editora Brasport. Pode ser encontrado em seu blog http://www.ramonduraes.net e @ramonduraes no Twitter.