Você está na página 1de 11

Desenvolvendo e distribuindo aplicaes multicamadas com Delphi

Este artigo ensina o desenvolvimento de aplicaes multicamadas com Delphi, mostrando a criao da aplicao servidora, a aplicao cliente e o que nem os livros ensinam, a distribuio de uma aplicao multicamadas na rede. Assim o leitor pode aprender passo a passo todos os processos de criao de aplicaes com esta tecnologia. Quando desenvolvemos uma aplicao 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 aplicaes multicamadas resolvem este problema, pois basta instalar o banco de dados no servidor, criar um aplicativo que rode no prprio 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 no preciso nenhuma instalao de banco de dados neles. Neste artigo aprenderemos como desenvolver aplicaes multicamadas utilizando a tecnologia DCOM.

A lgica das aplicaes multicamadas


Uma aplicao multicamadas e dividida em trs partes: Um aplicativo servidor, que fica no computador servidor; Um servidor remoto de dados, que acessa os dados do servidor e envia as informaes `as aplicaes clientes e Um aplicativo cliente, que acessa os dados do servidor. A aplicao servidora e o servidor remoto de dados (Remote Data Module) ficam juntas, rodando no servidor.

Criando a aplicao servidora


Inicie o Delphi, v em File | New Application; Aps este passo, vamos inserir no projeto, um modulo de dados remoto tambm 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)

Aps clicar em OK, aparecera uma tela, que de configurao do Remote Data Module como a mostrada abaixo:

(Configurando o Remote Data Module)

Deixe a opo Instancing como Multiple Instance e a opo Threading Model como Apartment. Na opo CoClass Name digite Servidor , este ser o nome da classe servidora. Aps feitas estas configuraes, clique em OK. O nosso Remote Data Module ento 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 . Aps 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 ligao entre o componente Ttable do Remote Data Module e a aplicao cliente que ainda iremos criar. A configurao do TDataSetProvider simples, basta colocar sua propriedade DataSet como Table1 . Agora, a nossa aplicao servidora est pronta. preciso registrar essa aplicao servidora na maquina que ser servidora. Em nosso exemplo, basta executar a aplicao para que ela fique registrada na maquina servidora. Aps executar a aplicao, Salve-a. Observao: O acesso a dados pode ser feito atravs de qualquer componente de acesso dados do Delphi, no se restrinja a usar somente Ttable em seus projetos multicamadas.

Criando a aplicao cliente

Inicie o Delphi, v em File | New Application; O componente do Delphi que serve como segundo elo de ligao nas aplicaes 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. Aps este passo, mude a propriedade Connected para True .

Observao: Neste exemplo no estamos configurando a propriedade ComputerName do componente TDCOMConnection, pois a aplicao servidora est na mesma maquina que a aplicao cliente. Neste caso deixamos esta propriedade em branco. Porem, como a tecnologia multicamadas existe para ser usada em rede, quando a aplicao servidora j estiver na maquina servidora, basta selecionar o nome da maquina da rede que e a servidora atravs desta propriedade. Se a aplicao cliente criada ser rodada em uma maquina que no seja a servidora, eu aconselho que a propriedade Computer Name seja configurada de uma vez, para no ser necessrio no futuro que essa configurao seja feita atravs de cdigo.

Aps termos conectado o TDCOMConnection ao Remote Data Module, vamos ligar o TClientDataSet ao Remote Data Module atravs 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 criao 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 aplicao 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 ligaes. Primeiro vamos ligar o TDataSource ao TClientDataSet. Para isso, v propriedade DataSet do TDataSource e selecione ClientDataSet1 . Aps 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 usurio ao acessar um nmero 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 usurio escolher (relativo ao campo EventNo) e ser inserido o texto do Edit2 ao campo Event_Name. Faa com que o cdigo do boto seja igual ao cdigo da listagem 1 :

Observao: Preste ateno para a antipenltima linha de cdigo, onde est escrito:

clientdataset1.ApplyUpdates(0);

Se voc fizer os testes, ver que sem ela, o texto inserido no TClietDataSet no ter valor e no ser gravado no banco de dados realmente, porem estar l enquanto o programa estiver em execuo. Isto acontece, pois o TClietDataSet, ao iniciar o programa, pega os dados da aplicao servidora. O comando post grava o texto no componente, porem no envia a atualizao ao servidor. O comando ApplyUpdates(0) faz a atualizao, ou seja, pega as alteraes feitas na maquina cliente e as envia para a aplicao servidora. Ento os dados so realmente gravados.

Agora basta salvar e rodar a aplicao cliente.

Distribuindo aplicaes multicamadas em uma rede

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

Configurao da maquina servidora


Na maquina servidora onde feita a parte mais complicada da configurao. Vamos s configuraes da rede: verifique se sua rede est configurada com controle de acesso em nvel de usurio ou com controle de acesso em nvel de compartilhamento. A opo Controle de acesso em nvel de compartilhamento dever ser estabelecida. Compartilhe as pastas onde esto o banco de dados e a aplicao servidora, porm compartilhe como completo e no apenas como leitura, pois se o compartilhamento for configurado como Somente leitura, as alteraes feitas pela maquina cliente no podero ser salvas no servidor e aparecero mensagens de erros. Veja abaixo a aba de compartilhamento de pasta:

Agora que a rede j est configurada, vamos s configuraes do DCOM na maquina servidora. A Microsoft adicionou algumas melhorias de segurana no Windows XP Service Pack 2. Isto alterou tambm a janela de configurao do DCOM do Windows XP. Para configurar esta verso: 1. Se o computador pertencer a um workgroup em vez de um domnio, certifique-se de que no usa compartilhamento simples de arquivo. Abra o Windows Explorer ou d um duplo clique em Meu Computador, clique em Ferramentas/ Opoes de Pastas, selecione Modo de Exibio e desmarque Usar compartilhamento simples de arquivo. 2. Clique em Iniciar, clique em Programas, clique em Ferramentas administrativas, clique em Servios de componente. (Outra forma seria clicar em Painel de Controle, Ferramentas Administrativas, Servios de componente ou simplesmente V em iniciar | executar, digite dcomcnfg e clique em OK. Este comando abrir o utilitrio de configurao):

3. Expanda a rvore Servios de componente, expanda Computadores e clique com o boto direito em Meu Computador. Selecione Propriedades. 4. Clique em Propriedades padro. Selecione Ativar DCOM neste computador. Configure a propriedade Nvel de autenticao padro para Conectar (Nenhum tambm funciona). Configure o Nvel de representao padro para Identificar (Representar tambm funciona).

5. Clique em Segurana padro. 6 Na aba "Segurana COM", em "Permisses de acesso" clique em Editar padro. Adicione com permisso Local e remota SYSTEM, INTERATIVO, REDE e o usurio que ir fazer a autenticao (se for o caso de se especificar um usurio que ir acessar a aplicao servidora) utilizando o COM precisam ser includos na lista. Existem algumas formas de se fazer isso. Voc pode adicionar o usurio especfico ou simplesmente adicionar o grupo a que este usurio pertence. Os valores possveis so: - Domnio\NomeDoUsurio (Um usurio especfico) - Domnio\Administradores (Todos os administradores do domnio especificado) - Todos (Todos os usurios / Everyone em ingls) 7. Em Permisses de acesso clique em Editar Limites. O Service Pack 2 vem com os seguintes valores: LOGON ANNIMO (Acesso local) e Todos (Acesso Local e Remoto). Tenha certeza que os valores esto listados e ento adicione o usurio que ir se autenticar. Este usurio precisa ter permisso Local e Remota.

8. Em Permisses de Inicializao e Ativao clique em Editar padro. Adicione com permisso Local e remota para ativao e inicializao SYSTEM, INTERATIVO, REDE e o usurio que ir fazer a autenticao. 9. Em Permisses de Inicializao e Ativao clique em Editar Limites. O Service Pack 2 vem com os seguintes valores: COMPUTADOR\Administradores (Ativao Local e Remota e Inicializao Local e Remota) e Todos (Ativao Local e Inicializao Local). Tenha certeza que os valores esto listados e ento adicione o usurio que ir se autenticar. Este usurio precisa ter permisso Local e Remota para Inicializao e ativao.

10. O Service Pack 2 vem com o Windows Firewall ativado. Se o firewall estiver ativado, voc precisa permitir que sua aplicao COM acesse a sua rede e desta forma receber chamadas de solicitao de licena. Caso voc tenha outro firewall protegendo sua rede, voc pode desabilitar este sem problema. - Clique em Painel de Controle e em Firewall do Windows. - Selecione Desativado em Geral. V aba Config. DCOM do aplicativo Servios de Componente e selecione Servidor Object na caixa de opes com os nomes de aplicaes DCOM que a aplicao servidora que criamos. Ela se chama Servidor Object, pois o nome que demos ao Remote Data Module quando salvamos foi Servidor. Aps esta seleo, clique no boto Properties. Abrir uma tela, nesta tela selecione a aba Local. Nesta aba, selecione a primeira e a segunda opo e as deixe marcadas. O prprio utilitrio verifica qual a que esta funcionando e aplica na hora da execuo. Agora basta selecionar Aplicar e OK.

Configurao das maquinas clientes


Nas maquinas clientes, o processo bem mais simples. Aps o servidor devidamente configurado, falta apenas copiar a aplicao cliente para cada maquina cliente e executar. Observao: Se a aplicao servidora no estiver rodando, ou seja, aberta, em execuo, a aplicao cliente nas maquinas-clientes dar uma mensagem dizendo: Falha ao executar o servidor A programao multicamadas utilizando DCOM basicamente isto. Onde se deve ficar atento na parte de configurao do servidor, pois onde ocorrem os principais erros e a causa de principais falhas de execuo da aplicao cliente nas maquinas clientes.

Você também pode gostar