Clique para saber mais...
  Home     Download     Produtos / Cursos     Revista     Vídeo Aulas     Fórum     Contato   Clique aqui para logar | 12 de Junho de 2026
  Login

Codinome
Senha
Salvar informações

 Esqueci minha senha
 Novo Cadastro

  Usuários
82 Usuários Online

  Revista ActiveDelphi
 Assine Já!
 Edições
 Sobre a Revista

  Conteúdo
 Apostilas
 Artigos
 Componentes
 Dicas
 News
 Programas / Exemplos
 Vídeo Aulas

  Serviços
 Active News
 Fórum
 Produtos / Cursos

  Outros
 Colunistas
 Contato
 Top 10

  Publicidade

  [Artigos]  Desenvolvendo e distribuindo aplicações multicamadas com Delphi
Publicado por Admin : Quarta, Setembro 17, 2003 - 02:33 GMT-3 (37104 leituras)
Comentários 1 Comentário   Enviar esta notícia a um amigo Enviar para um amigo   Versão para Impressão Versão para impressão
Administrador Este artigo ensina o desenvolvimento de aplicações multicamadas com Delphi, mostrando a criação da aplicação servidora, a aplicação cliente e o que nem os livros ensinam, a distribuição de uma aplicação multicamadas na rede. Assim o leitor pode aprender passo a passo todos os processos de criação de aplicações com esta tecnologia.
Quando desenvolvemos uma aplicação cliente/servidor normal, temos que instalar e configurar o banco de dados no servidor e em cada computador cliente, o que acaba sendo muito cansativo. As aplicações multicamadas resolvem este problema, pois basta instalar o banco de dados no servidor, criar um aplicativo que rode no próprio servidor e que ao acessar o banco de dados, envie os dados do servidor para os computadores clientes. Assim, os computadores clientes apenas precisam estar conectados na rede para acessar os dados e não é preciso nenhuma instalação de banco de dados neles. Neste artigo aprenderemos como desenvolver aplicações multicamadas utilizando a tecnologia DCOM.

 

A lógica das aplicações multicamadas

Uma aplicação multicamadas e dividida em três partes:

Um aplicativo servidor, que fica no computador servidor;

Um servidor remoto de dados, que acessa os dados do servidor e envia as informações `as aplicações clientes e

Um aplicativo cliente, que acessa os dados do servidor.

A aplicação servidora e o servidor remoto de dados (Remote Data Module) ficam juntas, rodando no servidor.

 

Criando a aplicação servidora

Inicie o Delphi, vá em File | New Application;

Após este passo, vamos inserir no projeto, um modulo de dados remoto também conhecido como Remote Data Module . Para isso, vá em File|New|Other e selecione Remote Data Module da aba Multitier . Em seguida clique em OK. Assim:

 

(Inserindo um Remote Data Module no projeto)

 

Após clicar em OK, aparecera uma tela, que é de configuração do Remote Data Module como a mostrada abaixo:

 

(Configurando o Remote Data Module)

 

Deixe a opção Instancing como Multiple Instance e a opção Threading Model como Apartment. Na opção CoClass Name digite Servidor , este será o nome da classe servidora.

Após feitas estas configurações, clique em OK. O nosso Remote Data Module é então inserido no projeto.

Para simplificar, usarei o componente Ttable para o acesso a dados. Insira os seguintes componentes no Remote Data Module:

 

- 1 Ttable (palheta BDE);

- 1 TDataSetProvider (palheta Data Access);

de modo que o modulo de dados fique assim:

Vamos agora ligar a tabela (table1) a um banco de dados.

Configure a propriedade DatabaseName do componente Ttable como DBDEMOS .

Após termos selecionado a base de dados (Database), vamos selecionar a tabela da base de dados, a qual queremos acessar. Para isso vá à propriedade TableName do componente Ttable e selecione events.db . Para ativar a tabela, vá à propriedade Active , ainda do componente Ttable e selecione True .

Agora que já ligamos o componente Ttable ao banco de dados, vamos configurar o componente TDataSetProvider. Este componente é o “elo de ligação” entre o componente Ttable do Remote Data Module e a aplicação cliente que ainda iremos criar.

A configuração do TDataSetProvider é simples, basta colocar sua propriedade DataSet como Table1 .

Agora, a nossa aplicação servidora está pronta. É preciso registrar essa aplicação servidora na maquina que será servidora. Em nosso exemplo, basta executar a aplicação para que ela fique registrada na maquina servidora. Após executar a aplicação, Salve-a.

Observação: O acesso a dados pode ser feito através de qualquer componente de acesso dados do Delphi, não se restrinja a usar somente Ttable em seus projetos multicamadas.

 

Criando a aplicação cliente

 

Inicie o Delphi, vá em File | New Application;

O componente do Delphi que serve como “segundo elo de ligação” nas aplicações multicamadas e o DCOMConnection da palheta DataSnap, pois ele se liga ao TDataSetProvider do Remote Data Module.

Vamos inserir os seguintes componentes no form:

 

•  1 TDCOMConnection (palheta DataSnap);

•  1 TClientDataSet (palheta Data Access);

 

O form devera ficar como na figura abaixo:

Para ligarmos o componente TDCOMConnection ao Remote Data Module, vá em sua propriedade ServerName e selecione Pserver.Server , que é o nome do projeto servidor junto com o nome do Remote Data Module. Após este passo, mude a propriedade Connected para True .

 

Observação: Neste exemplo não estamos configurando a propriedade ComputerName do componente TDCOMConnection, pois a aplicação servidora está na mesma maquina que a aplicação cliente. Neste caso deixamos esta propriedade em branco. Porem, como a tecnologia multicamadas existe para ser usada em rede, quando a aplicação servidora já estiver na maquina servidora, basta selecionar o nome da maquina da rede que e a servidora através desta propriedade. Se a aplicação cliente criada será rodada em uma maquina que não seja a servidora, eu aconselho que a propriedade Computer Name seja configurada de uma vez, para não ser necessário no futuro que essa configuração seja feita através de código.

 

Após termos conectado o TDCOMConnection ao Remote Data Module, vamos ligar o TClientDataSet ao Remote Data Module através do TDCOMConnection. Para isso, vá à propriedade RemoteServer do TClientDataSet e selecione DCOMConnection1. Agora vá à propriedade ProviderName do TClientDataSet e selecione DataSetProvider1 . Este DataSetProvider1 é o que foi inserido na criação do Remote Data Module. O que falta fazer agora é ativar o TClientDataSet, para isso vá à propriedade Active e selecione True.

Pronto, agora já conectamos a nossa aplicação cliente à servidora e apenas falta trabalhar com dados. Para isso, insira os componentes abaixo ao form:

 

•  1 TDataSource(palheta Data Acces);

•  1 TDBGrid(palheta Data Controls);

•  2 TEdit(palheta Standard);

•  1 TButton(palheta Standard)

Agora vamos às ligações. Primeiro vamos ligar o TDataSource ao TClientDataSet. Para isso, vá à propriedade DataSet do TDataSource e selecione ClientDataSet1 . Após feito isso, vamos ligar o TDBGrid ao TDataSource. Para isso, vá à propriedade DataSource do componente TDBGrid e selecione DataSource1 . Com isso, o form devera ficar assim:

 

 

Vamos agora fazer com que o usuário ao acessar um número de evento(o banco de dados escolhido se refere a eventos), insira um novo nome para o evento escolhido, assim:

No Edit1 será feito o acesso ao numero de evento que o usuário escolher (relativo ao campo EventNo) e será inserido o texto do Edit2 ao campo Event_Name. Faça com que o código do botão seja igual ao código da listagem 1 :

 

Observação:

Preste atenção para a antipenúltima linha de código, onde está escrito:

 

clientdataset1.ApplyUpdates(0);

 

Se você fizer os testes, verá que sem ela, o texto inserido no TClietDataSet não terá valor e não será gravado no banco de dados realmente, porem estará lá enquanto o programa estiver em execução. Isto acontece, pois o TClietDataSet, ao iniciar o programa, “pega” os dados da aplicação servidora. O comando post grava o texto no componente, porem não envia a atualização ao servidor. O comando ApplyUpdates(0) faz a atualização, ou seja, pega as alterações feitas na maquina cliente e as envia para a aplicação servidora. Então os dados são realmente gravados.

 

Agora basta salvar e rodar a aplicação cliente.

 

Distribuindo aplicações multicamadas em uma rede

 

Antes de tudo, devo ressaltar que a tecnologia DCOM utilizada na nossa aplicação multicamadas não é da Borland e não foi fabricada por ela. A tecnologia DCOM é da Microsoft. Ao contrario do que muitos pensam, a distribuição de uma aplicação multicamadas não é simplesmente ligar dois computadores na rede, um cliente e um servidor rodar a aplicação cliente na maquina cliente. Bem, a lógica é essa, porem é necessário que instalemos alguns pacotes para que a aplicação servidora e a cliente funcionem na rede em computadores diferentes. Aqui se encontra a chave das aplicações multicamadas que utilizam DCOM, pois os livros em geral, não ensinam a distribuir as aplicações multicamadas, mas apenas a cria-las assim como fizemos acima. Muitos programadores que aprendem a criar uma aplicação multicamadas muitas vezes desistem da tecnologia, pois na hora de rodar a aplicação cliente na maquina servidora ela roda perfeitamente, mas na hora de roda-la na maquina cliente, o Windows diz que o programa executou uma operação ilegal.

Como os pacotes necessários para que a aplicação funcione na rede não vem com o windows, temos que fazer o download deles na internet. Podemos encontra-los para download no próprio site da Microsoft nos seguintes endereços:

 

http://www.microsoft.com/com/dcom/dcom98/download.asp

Para Windows 98 e NT

e

http://www.microsoft.com/com/dcom/dcom95/download.asp

Para Windows 95

 

Configuração da maquina servidora

 

Na maquina servidora é onde é feita a parte mais complicada da configuração.

Entre no site para baixar os pacotes(de acordo com o sua versão do windows).

Os dois pacotes são divididos em :

 

•  DCOM98 for Windows 98;

•  DCOM98 for Windows configuration utility;

Para Windows 98 e NT e:

 

•  DCOM95 for Windows 95;

•  DCOM95 for Windows configuration utility;

Para Windows 95.

O primeiro pacote é o que podemos chamar de pacote base para o funcionamento de nossa aplicação. Ele é necessário, pois ele é o DCOM da Microsoft. Este primeiro pacote deverá ser instalado tanto na maquina servidora quanto nas maquinas clientes.

O segundo pacote é o utilitário de configuração do DCOM. Ele é uma espécie de administrador de aplicações servidoras DCOM e garante a configuração de acesso e funcionamento da aplicação servidora que foi criada.

Na maquina em que está a aplicação servidora, faça o download do primeiro pacote e instale-o. No site dado, o link dele está no tópico 3. Depois de feito o download, rode o arquivo, ele automaticamente será instalado no computador.

Agora faça o download do segundo pacote de arquivos indicado. Este pacote deverá ser instalado apenas na maquina servidora. No site, o link para download está no tópico 4. Após ter baixado o pacote de arquivos, execute-o. Ele será assim, instalado.

Depois de instalados os pacotes necessários ao servidor, vamos às configurações da rede. Vá em Painel de controle | Redes | Controle de acesso , verifique se sua rede está configurada com controle de acesso em nível de usuário ou com controle de acesso em nível de compartilhamento. A não ser que sua maquina seja um servidor NT, marque a opção Controle de acesso em nível de compartilhamento. Compartilhe as pastas onde estão o banco de dados e a aplicação servidora, porem compartilhe como completo e não apenas como leitura, pois se o compartilhamento for configurado como “Somente leitura”, as alterações feitas pela maquina cliente não poderão ser salvas no servidor e aparecerão mensagens de erros. Veja abaixo a aba de compartilhamento de pasta:

 

Agora que a rede já está configurada, vamos às configurações do DCOM na maquina servidora. Vá em iniciar | executar , digite dcomcnfg e clique em OK. Este comando abrirá o utilitário de configuração que foi baixado.

Clique na palheta Default Properties.

Selecione “Enable distributed COM on this computer”, deixe esta opção como ON, ou seja, marcada.

Selecione (None) em Default Althentication Level.

Selecione Impersonate em Default Impersonation Level

Deixe a opção Provide additional security for reference tracking como OFF, ou seja, desmarcada.

Com estas configurações, a tela deverá ficar como a tela abaixo:

 

Agora clique em aplicar, o Windows pedira para ser reiniciado, reinicie para que as alterações sejam feitas.

 

Na aba Default Security, Deixe a opção Enable remote connection como ON, ou seja, marcada.

Vá à aba Applications e selecione Server Object na caixa de opções com os nomes de aplicações DCOM que é a aplicação servidora que criamos. Ela se chama Server Object, pois o nome que demos ao Remote Data Module quando salvamos foi Server. Após esta seleção, clique no botão Properties . Abrirá uma tela, nesta tela selecione a aba Location. Nesta aba, selecione a primeira e a segunda opção e as deixe marcadas. O próprio utilitário verifica qual é a que esta funcionando e aplica na hora da execução. Agora basta selecionar Aplicar e OK.

 

 

Configuração das maquinas clientes

 

Nas maquinas clientes, o processo é bem mais simples, basta instalar o primeiro pacote de arquivos, o DCOM98 for Windows 98 para Windows 98 ou DCOM95 for Windows 95 para Windows 95. Como já foi dito, estes arquivos podem ser baixados no site da Microsoft. Basta executar o arquivo baixado, para que ele seja instalado. Após instalado o pacote de arquivos e o servidor devidamente configurado, falta apenas copiar a aplicação cliente para cada maquina cliente e executar.

 

Observação: Se a aplicação servidora não estiver rodando, ou seja, aberta, em execução, a aplicação cliente nas maquinas clientes dará uma mensagem dizendo:

“Falha ao executar o servidor”

 

A programação multicamadas utilizando DCOM é basicamente isto. Onde se deve ficar atento é na parte de configuração do servidor, pois é onde ocorrem os principais erros e é a causa de principais falhas de execução da aplicação cliente nas maquinas clientes.

Espero que tenham gostado, qualquer duvida me contatem no meu e-mail, davicdc@yahoo.com.br .

 

Davi Cançado Dutra Cota é estudante do Colégio Técnico(Coltec) da UFMG, onde cursa neste ano de 2003 o 1º ano do segundo grau. Gosta de programação em Delphi, Java e C, juntamente com bancos de dados relacionais, principalmente Interbase.

Observação: Por Davi Cota



Comentários Comentários
   Ordem:  
Comentários pertencem aos seus respectivos autores. Não somos responsáveis pelo seus conteúdos.


por: robotpost : Out 18, 2005 - 01:41
(Informações sobre o membro | Enviar uma mensagem) http://
Muito bom este artigo! Sempre procurei informação na internet sobre aplicações multi-camadas, mas nunca encontrei nada tão explicativo, e fácil de entender. Estava tendo problemas com uma aplicação que estou desenvolvendo, mas reestruturei-a para uma aplicação de tres camadas, e ficou excelente. Parabéns pelo artigo, muito bom mesmo!
  Edição 112

Revista ActiveDelphi

  50 Programas Fontes


  Produtos

Conheça Nossos Produtos

Copyright© 2001-2016 – Active Delphi – Todos os direitos reservados