Desenvolvimento - ASP. NET
.NET Remoting – Parte 2 - Acessando informações remotamente
Na primeira parte desse artigo, conhecemos com detalhes a arquitetura da tecnologia .NET Remoting. A parte final desse artigo abordará os detalhes do desenvolvimento para implantação de Remoting em suas aplicações.
por Andrey Sanches
Na primeira parte desse artigo (.NET Remoting – Parte 1), conhecemos com detalhes a arquitetura da tecnologia .NET Remoting. A parte final desse artigo abordará os detalhes do desenvolvimento para implantação de Remoting em suas aplicações. Faremos um exemplo simples de acesso e retorno dos dados para preenchimento de uma DataGrid afim de demonstrar de forma clara a implantação. Teremos 4 projetos em nossa solution sendo eles:
Abra o Visual Studio .NET e vamos iniciar a criação da nossa aplicação que fará uso de .NET Remoting: Crie um novo projeto (Menu File => New => Project) escolha um projeto do tipo C# Class Library, nomeie o projeto para InterfaceRemoting, a Solution para Remoting e clique OK. Após a criação do Projeto, codifique o arquivo Class1.cs conforme mostra o código abaixo:
Essa interface expõe o método getProducts que será implementado pelo componente de negócio e invocado pelo projeto WindowsApplication que criaremos logo a seguir. Em seguida adicione um novo projeto (clique com o botão direito na solution => “Add” => “New Project”) do tipo C# Class Library por nome Negocio, confirme com “OK” e codifique o arquivo Class1.cs conforme mostra o código abaixo:
Veja que estamos fazendo referência ao projeto InterfaceRemoting que contém a interface ICliente, vamos então referenciar o assembly no projeto. Para adicionar a referência, clique com o botão direito no Projeto Negocio => “Add Reference” => Guia “Projects” selecione o assembry e confirme conforme mostra a Figura 1. É necessário ainda tornar a classe Cliente derivada (herdar) de MarshalByRefObjecte também implementar a interface ICliente conforme visto anteriormente para que a infra-estrutura do Remoting seja capaz de interpretar a transferência dos objetos.
O objeto RemotingConfiguration utiliza do método RegisterWellKnownServiceType para informar os parâmetros de criação da infra-estrutura do Remoting. O parâmetro Type recebe o tipo do objeto que será tranportado pelo canal remoting. O segundo parâmetro recebe o nome da Ativação e o terceiro parâmetro recebe o tipo da Ativação (SingleCall / Singleton). Em seguida utilizamos do método RegisterChannel do objeto ChannelServices para registrar o canal do Remoting através da porta 1235 (poderia ser usado outra porta). Como você pode notar, fizemos referência aos namespaces do Remoting “System.Runtime”, para isso precisamos também referenciar o Assembly no projeto (botão direito no Projeto Server, aponte para “Add Reference”) conforme mostra a Figura 2:
Além dessa referência, ainda é necessário referenciar os assemblys Negocio e InterfaceRemoting (pois fazemos referencia a classe Cliente) utilizando o mesmo procedimento mas localizando-os na Guia Projects.
Adicione também a referência para o projeto InterfaceRemoting conforme mostra a Figura 1 e para o Assembly “System.Runtime.Remoting” conforme mostra a Figura 2. Com o formulário já finalizado, importe os namespaces necessários e codifiquei o evento Click do botão btCarregar como mostra o código abaixo:
Ao clicar no botão btCarregar será feito a chamada ao componente remoto através do método getObject do objeto Activator. Ele recebe por parâmetro o tipo requerido para a chamada, o endereço remoto (no exemplo utilizei localhost) acompanhado da porta mais o nome da URI informada no componente Servidor. Veja que utilizamos o protocólo TCP mas como já visto no artigo anterior poderiamos ter utilizado HTTP para o tranporte do objeto. Após a chamada atribuimos o retorno ao dataGrid para que os dados sejam exibidos. Para fazer o teste da aplicação, é necessário alterar a ordem da chamada dos projetos e configurar para executar em “Multiple Startup Projects”, para isso, clique com o botão direito na solution “Remoting” e configure a janela conforme mostra a figura abaixo.
|