You are on page 1of 18

Criando Servidor de Aplicao COM+

e Utilizando o Servio em uma Aplicao Cliente

Nvel Intodutrio Parte I

Por: Laercio Guero

Objetivando seguir uma linha baseada na simplicidade, iremos na sequncia, cria um


Componente de Acesso e Manipulao de Dados, implementado em Delphi 7 adotando tecnologia
COM+. Este propsito ser seguido, em funo de estarmos direcionando o artigo aos
prifissionais que ainda no tem conhecimento prvio sobre Desenvolvimento Baseado em
Componentes.

No propsito deste artigo, conceituar amplamente a tecnologia COM+, sobre tudo, esgotar
esclarecimento sobre seus efeitos e consequncias no desenvolvimento de sistemas.

De toda forma, segue uma pequena mas importante lista de benefcios que a adoo de COM+
traz aos aplicativos:

1-Quando devidamente registrado no COM+ (Utilitrio Servios de componentes), possibilita o


controle de pooled de conexo com o Banco de Dados. Isto por si s j valeria o empenho em
adotar esta tecnologia.

2-Implementa um dos paradigmas da Orientao a Objeto, que , centralizao da lgica de


negcio em um servio reutilizvel, de manuteno centralizada entre outraos.

3-Aponta para uma soluo onde esclabilidade alvejada.

4-No caso particular do Delphi, implementar COM+ em nossos aplicativos, no agrega


complexidade, muito pelo contrrio, como poder ser observado, facilita em muito a manuteno
e distribuio de aplicativos.

Como ltima obserao, tenha em mente uma aplicao convencional baseado no modelo
Client/Server, onde extrairemos o DataModele que acomoda os controles de acesso a dados, bem
como, possveis procedimentos ali implementados.

Esse DataModule, ser compilado a parte (em uma aplicao COM+), separando a lgica de
acesso a dados e de negciodo restante da aplicao.

O restante da aplicao, que corresponde aos possveis formulrios com seus controles de dados
(DataControls) ser compilados em uma aplicao a parte.

Detalhando melhor as tecnologias envolvidas, teremos na aplicao convencionada como


AppServer, o uso de uma middleware (no nosso caso dbExpress) para acesso a dodos, expondo
os DataSets por intermdio da tecnologia DataSnap (Midas)se utilizando do componente
DataSetProvider. Na aplicao cliente, denominada AppClient, utilizaremos os DataControls j
citados, apoiados por um componente DCOMConnection, que possibilitar o acesso aos recursos
da aplicao servidora.

Complementando o quadro, ainda na aplicao Cliente, adotaremos ClientDataSet como


mecanismo de acesso aos servios de dados do lado servidor do aplicativo.

Finalizando, teremos um peque tutorial de como registrar os servios (AppServer) no utilitrio


Servios de Compnetes do Windows.

Criando a aplicao AppServer

1-Menu New|Other|Multitier Ver figura 01


Figura 01

2-Em seguida, observer a figura 02, para a qual definiremos nosso datamodulo remoto

Figura 02

3-Salve o projeto exemplo em um diretrio denominado


ServerComPlus, nomeando a unidade referente ao
datamodule como Dados e o projeto como AppSever.

4-Aplique os componentes conforme imagem da figura


03, definindo a lista de propriedade que se segue:

Componete / Propriedade / Valor

SQLConn / Params /*Definir acesso ao banco de dados de sua escolha

SQLProdutos / SQLConnection / SQLConn

SQLProdutos / CommandText / Select * from Produtos

DSPProdutos / DataSet / SQLProdutos

Figura 03

Consideraes:
a) A tabela produto tem como estrutura: id_produto(Numrico), Descricao(Varchar),
Preco(Numrico) e saldo(Numrico).

b)No estamos utilizando parmetros na instruo Commandtext do DataSet, para simplificar o


exemplo.

5-Compile a aplicao, e observe no diretrio do projeto um arquivo denominado AppServer.dll

Bom, s nos resta agora, registrar nosso componente no COM+ (Servios de Componentes) para
podermos utilizar na aplicao cliente.

Registrando AppServer.dll no COM+

Bom, s nos resta agora, registrar nosso componente no COM+ (Servios de Componentes) para
podermos fazer uso na aplicao cliente.

1-Execute o aplicativo Servio de componentes - Iniciar | Painel de Controle | Ferramentas


Administrativas | Servio de Componentes ver figura 04.
Figura 04

2-Clicando com o boto direito do


mouse sobre o n COM+
Applications,escolha New |
Application. Na figura 05 clique
em Next.

Figura 05

3-Clique em Create an empty application Figura 06

Figura 06
4-Clique em Next, mas antes
defina como na imagem Figura 07

Figura 07
5-No cosidere a imagem da
figura 08, clicando em Next

Figura 08

6-Finalize a tima tela (Finish), e


observe como se apresenta o
diretrio de nosso aplicativo na
figura 09.

Figura 09
7-Para finalizar o
processo, clique com o
boto direito do mouse
sobre o n
AppServerTeste,
indicando New|
Component e v
avanando at alcanar a
imagem da figura 10.

Figura 10

8-Agora, clicando em Install new component(s), escolhendo o arquivo AppServer.dll conforme


imagens das figuras 11 e 12

Figura 11
Figura 12

Pronto atingimos o ponto em que


disponibilizamos o uso destes
servios a aplicativos clientes,
sobre tudo, na fase de
desenvolvimento dos mesmos.
Para completar este ecerccio, procure em Artigos neste site, o complemento deste, sob o
mesmo titulo, porm denominado Parte II.

Existe neste mesmo site, outros artigos correlatos, e bastante frequente em outros sites,
artigos do mesmo gnero. A saber, artigos de meu amigo Bruno Lichot e do Sr. Guinter Poali.
Esta uma forma revolucionria de desenvolvimento, porm, muito pouco divulgada e adotada.
Creio eu em minha humilde viso, de se tratar de falta de coragem, seguido da falta de literatura
especfica, com um certo acomodamento no desenvolvimento do j fadado modelo cliente
servidor.
Criando Servidor de Aplicao COM+
e Utilizando o Servio em uma Aplicao Cliente

Nvel Intodutrio Parte II - Final

Por: Laercio Guero

Dando continuidade ao artigo anterior, construiremos agora, um aplicativo que representar a


camada cliente do modelo de objetos distribuidos.

Algumas caractersticas diferem este aplicativo, devido ao modelo a que est incutido, dos
aplicativos convencionais. A saber, considere a lista que segue:

1-A principal caracterstica, que no h acesso a banco de dados, ainda, que nosso exemplo
manipule dados oriundos de um servidor de aplicao que cumpre este papel.

2-No acomoda regras, exceto claro aquelas inerentes a lgica de interface como: Tratamento
de data, mascaras, etc...

3-Tem requerimento de hard inferior aos aplicativos Cliente Servidor, devido ao fato de no
implementar conexo a SGBD.

4-No nosso exemplo, o ambiente de execuo Windows, devido ao fato de o Servidor de


Aplicao ter sido desenvolvido em COM+. Porm, caso tivessemos desenvolvido o Servidor
usando tecnologia de WebServices, por exemplo, devido ao protocolo http, teriamos um cliente
independente do protocolo proprietrio. Isto assunto para uma outra srie de artigos, que
complementaro este.

Aqui ser omitido um procedimento que diz respeito a exportao dos registros do Servidor
COM+, para que mquinas da rede possam utilizar os servios expostos pelo mesmo. O registro
em si foi amplamente abordado, com um tutorial passo-a-passo no artigo inicial. Procederemos
assim, para focarmos a tecnologia e seu uso de forma mais simples possvel. Em outra ocasio,
prometemos um artigo especfico a esta necessidade.

Criando a aplicao Client

1-Menu File|New|Application
2-Aplique os componentes conforme imagem da figura 01
Figura 01

3-Em seguida, observe a figura 02, onde dever ser incluido os componentes DCOMConnection,
da paleta DataSnap, um ClientDataSet da paleta DataAccess e por timo um DataSource tambm
da paleta DataAccess.

Obs: No utilizamos DataModule aqui para incurtar conversa. No deixe de utilizar em projetos
do mundo real.

Figura 02
4-As imagens que se seguem (figuras 03, 04 e 05) definem as
propriedades a serm manipuladas para os objetos em questo.

Obs: Visando melhor orientar o leitor, abaixo de cada imagem,so


comentadas as propriedades que devem ser manipuladas.

Figura 03

-Para a figura 03, observe a propriedade ServerName, para qual


escolhemos AppServer.ClasseDados. Isto foi possvel devido ao registro
no Servio de Componentes (COM+) do artigo inicial. Assim
procedendo, temos acesso a todos os servios(em nosso caso
DataSetProvider) ali contidos.

Figura 04

-Na figura 04, observamos a implementao do ClientDataSet, que o objetivo maior,


simplesmente, nesta ordem, manipulando as propriedades RemoteServer, que representa o
acesso ao servio, e a propriedade ProviderName, que permite a escolha do servio desejado.

Figura 05

-Finalizando, indique na propriedade DataSet (figura 05) CDSProdutos, e no se esquea


tambm, de completar a tarefa, indicando na propriedade DataSource do DBGrid, o DataSource
em questo.

Abaixo, observe o cdigo resultante, com destaque (negrito) para os procedimentos criados.

==============Fontes da Unit do Projeto==============================


program Pcliente;

uses

Forms,

complus in 'complus.pas' {Frmcomplus};

{$R *.res}

begin

Application.Initialize;

Application.CreateForm(TFrmcomplus, Frmcomplus);

Application.Run;

end.

==============Fim dos Fontes da Unit do Projeto=========================

==============Fontes da Unit do
Formulrio=============================

unit complus;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, DB, DBClient, MConnect, Grids, DBGrids, StdCtrls, Buttons;

type

TFrmcomplus = class(TForm)
BTAbrir: TBitBtn;

BTAtualizar: TBitBtn;

BTFechar: TBitBtn;

DBGrid1: TDBGrid;

DCOMConn: TDCOMConnection;

CDSProdutos: TClientDataSet;

DSProdutos: TDataSource;

procedure BTAbrirClick(Sender: TObject);

procedure BTAtualizarClick(Sender: TObject);

procedure BTFecharClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Frmcomplus: TFrmcomplus;

implementation

{$R *.dfm}

procedure TFrmcomplus.BTAbrirClick(Sender: TObject);

begin

CDSProdutos.Close;

CDSProdutos.Open;

//Abre o DataSet
end;

procedure TFrmcomplus.BTAtualizarClick(Sender: TObject);

begin

CDSProdutos.ApplyUpdates(0);

//Aplica possveis incluses, alteraes e excluses procedidas no lado cliente junto ao


Servidor.

end;

procedure TFrmcomplus.BTFecharClick(Sender: TObject);

begin

Frmcomplus.Close;

//Fecha o formulrio.

end;

end.

==============Fim dos Fontes da Unit do Formulrio======================

Como podemos ver, e foi prometido, o projeto de exemplo, inclusive a parte servidora da
aplicao, seguiu uma linha orientada pela simplicidade. Isto de maneira nehuma anula o
aprendizado, ficando aqui um desafio para o leitor avanar nesta forma de programao. De
nossa parte fica a promea de outros artigos que oriente o leitor neste sentido.

Uma ltima considerao, para que o leitor no se esqueade criar a tabela e por dados na
mesma,objetivando ter uma resposta ao exerccio.

You might also like