COM+ Services em ASP.NET

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (1)  (0)

É muito comum o emprego de componentes COM+ como a camada de negócios em aplicações n-tiers. Veja com Laércio como desenvolver aplicativos que suportem esta estrutura.

Usando um componente COM+ em suas aplicações ASP.NET

Veremos neste artigo como desenvolver um componente COM+ e utilizá-lo em uma aplicação ASP.NET.

Background

É muito comum o emprego de componentes COM+ como a camada de negócios em aplicações n-tiers. Dessa forma, a nosso conhecimento em desenvolver aplicativos que suportem esta estrutura, torna-se proeminente, também, na arquitetura .NET. Neste artigo, espero estar passando o mínimo para que você seja capaz de escrever um componente COM e usá-lo em suas aplicações .NET.

1 - A estrutura do componente

O componente que iremos escrever, é bastante simples. Ele acessará um banco de dados do SQL Server (Northwind) e retornará os dados solicitados pelo nosso programa. Os campos da tabela que consultaremos pode ser vistos na figura abaixo:

tabelaestrutura.JPG
Figura 1: Estrutura da tabela Employees usada em nossos
exemplos.

Nota: Escolhemos a tabela de exemplo do banco de dados SQL Server para facilitar o desenvolvimento deste artigo, já que o desenvolvimento de um banco mais detalhado estaria fora do escopo deste artigo. Pórem, você pode ficar à vontade para desenvolver esta etapa em qualquer outro banco de dados, desde que saiba acessá-lo via ADO.NET.

Com o banco de dados já pronto, podemos iniciar o desenvolvimento do nosso componente COM. No Visual Studio.NET, inice uma nova aplicação do tipo Class Library e salve com o nome de BusinessComp. Para que possamos acessar e incluir as funcionalidades de um componente COM legado em nosso objeto, devemos referenciar o namespace System.EnterpriseServices em nosso projeto, e adicionarmos adioná-lo em nossa classe:

Imports System.EnterpriseServices
Imports System.Data
Imports System.Data.SqlClient

Altere o nome da classe para BComp, e acrescente os seguintes atributos na declaralção da classe, listados na Listagem 1.

Listagem 1
ObjectPoolingAttribute(5, 20, 30)> _
Public Class BComp
 Inherits ServicedComponent

O atributo TransactionAttribute nos permite configurar o comportamento do nosso objeto transacional. Em nosso exemplo não iremos trabalhar com modificações nos registros (INSERT, UPDATE, DELETE). Sendo assim, poderíamos omitir este atributo de nossa classe sem nenhuma perda de desempenho.

ObjectPoolingAttribute configura a atuação do pooling de objetos - pense no pooling de objetos como uma espécie de repositório de objetos já criados - do COM+ sobre o nosso componente. E por último, observe que a nossa classe herda de ServicedComponent, classe base para o desenvolvimento de componentes COM transacionais.

Após ter configurado o comportamento da nossa classe, iremos agora implementar um método chamado GetEmployeeInfo. Este método recebe como parâmetro um Id numérico e retorna um DataSet com os dados do banco. Implemente o método como descrito na Listagem 2.

Listagem 2

Const strSel = "SELECT EmployeeID, LastName, FirstName, Title FROM Employees WHERE EmployeeID = "
Const
strConn = "Initial Catalog=Northwind;Data Source=SqlServer;User id=sa;password=;"

Public Function GetEmployeeInfo(ByVal number As Integer) As DataSet
'Criando os objetos
  Dim objConn As New SqlConnection(strConn)
  Dim objAdap As New SqlDataAdapter(strSel + Convert.ToString(number), objConn)
  Dim dsDados As New DataSet
'Recuperando os dados do bd
  objConn.Open()
  objAdap.Fill(dsDados, "Dados")
'Fechando o banco
  objConn.Close()
'Enviando o Dataset
  GetClientInfo = dsDados
End Function

Após ter codificado o componente como exibido nas listagens acima, devemos instalá-lo no catálogo do COM+. Para isso devemos gerar um Strong Name para nosso componente. Este nome forte, serve como uma chave identificadora exclusiva do nosso componente, sendo pré-requisito para sua instalação no ambiente COM+. Para criar esta chave, usaremos o utilitário de linha de comando sn incluso no Framework .NET.

Dica: Para facilitar o uso dos utilitários de linha de comando citados no artigo, copie-os para o diretório da nossa aplicação.

No console de sua máquina, entre com o seguinte comando: sn -k BusinessCompKey.snk. Este comando criará uma chave de nome "BusinessCompKey" em nosso diretório.

O próximo passo será referenciá-la em nosso componente. No Solution Explorer aplique um clique duplo sobre o arquivo AssemblyInfo.vb e acrescente a seguinte linha:

<Assembly: AssemblyKeyFile("C:\BusinessCompKey.snk")>

Pronto! agora é dar um Build Solution.

1.2 - Instalando o componente

Para instalarmos o nosso componente utilizaremos outro utilitário de linha de comando do Framework, chamado RegSvcs. Volte à janela de console e entre com o comando: regsvcs BusinessComp.dll. Este comando irá efetuar a instalação (Figura 2) e configuração do nosso componente seguindo as informações descritas em nosso código.

console.JPG
Figura 2: Componente disponível no catálogo do COM+.

2 - Usando o componente

Para avaliar o funcionamento do nosso componente, criaremos uma aplicação ASP.NET que receberá os dados do banco Access. No Visual Studio.NET, inicie uma nova aplicação do tipo ASP.NET e salve com o nome WebComApp. Para trabalhar com o componente COM+, nossa aplicação deverá referenciar o namespace System.EnterpriseServices e o assembly BusinessComp.dll. Após ter adicionado as referências pressione F7, para alternar a visualização para o código do form e insira a seguinte linha:

Public objCOM As BusinessComp.BComp

Abra a região chamada "Web Form Designer Generated Code" da nossa classe e insira o código da Listagem 3 no método Page_Init. Este código irá instanciar o nosso objeto:

Listagem 3

Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
  InitializeComponent()
 'Instanciando o objeto 
  objCOM = New BusinessComp.BComp()
End Sub

Volte para o Form Design (Shift+F7), e inclua os controles como exibido na Figura 3.

webcontrols.JPG
Figura 3: WebControls exibidos no IDE do VS.NET

Implemente o manipulador do evento OnClick do botão como mostrado na Listagem 4. Neste código faremos uma consulta ao banco de dados, através do método GetEmployeeInfo passando o conteúdo do TextBox como parâmetro.

Listagem 4

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'DataSet que receberá os dados
   Dim myDataSet As DataSet= objCOM.GetEmployeeInfo(CInt(TextBox1.Text))
'Ligando o grid aos dados
   DataGrid1.DataSource = myDataSet
'Carregando os dados
   DataGrid1.DataBind()
End Sub

Pronto! Basta executar a aplicação, informar um parâmetro no TextBox e consultar os dados (Figura 4).

final.JPG
Figura 4: Execução da aplicação web.

Conclusão

Vimos neste artigo como tirar proveito do suporte ao COM+ do .Net Framework. Para maiores informações examine o MSDN Library, e fique ligado na MSDN Magazine. Até a próxima!

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Ficou com alguma dúvida?