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
|