Curso de dbExpress e DataSnap - Parte XXIII

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (0)  (0)

Veja neste artigo de Guinther Pauli, mais um capítulo do curso de dbExpress e DataSnap. Acesso exclusivo para Assinantes.

Curso de dbExpress e DataSnap

Parte XXIII – Introdução ao COM+

Como víamos, um dos problemas do DCOM é a sua escalabilidade. Isto é, ele não apresenta os mesmo resultados quando há um aumento do número de conexões, perdendo desempenho. Objetos DCOM mantém informações persistentes sobre cada cliente que instancia um objeto do seu tipo, e só irá liberar tais recursos quando a variável sair do escopo no programa cliente. Devido aos objetos DCOM permanecerem ativos com informações sobre o cliente e sua ativação, são conhecidos como objetos com estado.

O sucessor do DCOM foi o MTS (Microsoft Transaction Server). Ele incorporou diversos recursos a essa tecnologia. O MTS é instalado como parte do Windows NT 4 Server (Option Pack). Diferente do DCOM que não possui um gerenciador próprio (a não ser o pequeno DCOMCNFG.EXE), o MTS utiliza o MMC (Microsoft Management Console) para configurar e gerenciar objetos. O COM + é o sucessor do MTS (mais o MSMQ – Microsoft Message Queue), e herda deles inúmeros recursos: gerenciamento centralizado, pooling de objetos, suporte a transação e escalabilidade.

O COM+ acompanha o Windows 2000/XP, formando a chamada camada lógica de negócio em um sistema Distribuído (Multicamadas).

 

image001.png 

Figura. COM + atuando na camada lógica de negócio em uma arquitetura distribuída

Criando componentes COM+

Clique em File|New|Active X|Transactional Object.

 

 image003.png

Figura. Criando um objeto COM+

Na caixa de diálogo que aparece digite “Soma” para CoClas Name.

 

 image005.png

Figura. Opções de criação de um objeto COM+

Pressione File|Save All e salve a unit como “uSoma.pas” e o projeto como “LibSoma.dpr”. Da mesma forma que fizemos para o objeto COM criado neste mesmo módulo, crie um método chamado Somar que aceite dois parâmetros do tipo Single.

 

 image007.png

Figura. Editor da Type Library

Implemente a função na unit da seguinte forma:

 

function TSoma.Somar(x, y: Single): Single;

begin

  result:=x+y;

end;

 

Clique em Project|Build LibSoma.

TMtsAutoObject

A classe TMtsAutoObject encapsula objetos e interfaces de um servidor de aplicação MTS.

 

TSoma = class(TMtsAutoObject, ISoma)

protected

  function Somar(x, y: Single): Single; safecall;

end;

 

TMtsAutoObject = class(TAutoObject, IObjectControl)

private

  FObjectContext: IObjectContext;

  FCanBePooled: Boolean;

protected

  { IObjectControl }

  procedure Activate; safecall;

  procedure Deactivate; stdcall;

  function CanBePooled: Bool; virtual; stdcall;

 

  procedure OnActivate; virtual;

  procedure OnDeactivate; virtual;

  property ObjectContext: IObjectContext read FObjectContext;

public

  procedure SetComplete;

  procedure SetAbort;

  procedure EnableCommit;

  procedure DisableCommit;

  function IsInTransaction: Bool;

  function IsSecurityEnabled: Bool;

  function IsCallerInRole(const Role: WideString): Bool;

  property Pooled: Boolean read FCanBePooled write FCanBePooled;

end;

Instalando o servidor COM+

Você pode instalar o objeto COM+ de duas formas:

·         Usando o gerenciador MMC chamado Serviços de Componente

·         Usando a opção Install COM+ Objects disponível na IDE do Delphi.

Usaremos a segunda opção. Clique em Run|Install COM+ Objects.

 

image009.png 

Figura. Instalando um servidor COM+

Preencha as opções como mostra a figura a seguir.

 

image011.png 

Figura. Instalando um servidor COM+

Atenção: Quando você instala a aplicação no catálogo do COM+ ela estará automaticamente registrada.

Criando o cliente

Clique em File|New|Application. Clique em File|Save All e salve a unit como “uCliSoma.pas” e a aplicação como “CliSoma.dpr”. Clique em Project|Add to Project e adicione o arquivo LibSoma_TLB.pas, que é a Type Library do servidor criado anteriormente. No formulário principal aperte ALT+F11 e adicione a TLB à cláusula uses. No evento OnClick do botão digite:

 

Edit3.text:=FloatToStr(CoSoma.Create.Somar(

  StrToInt(Edit1.Text),StrToInt(Edit2.Text)));

 

image013.png 

Figura. Cliente para um servidor COM+

 

Download

Você pode fazer download de todos os exemplos deste curso a partir do endereço http://cc.borland.com/Author.aspx?ID=222668. É preciso fazer o cadastro na BDN, que é gratuito e pode ser feito a partir do endereço http://bdn.borland.com

 

dbExpress, DataSnap e ClientDataSet: Técnicas Avançadas

Para mais informações sobre acesso a dados no Delphi e técnicas avançadas, sugiro a leitura do meu livro, “Delphi: Programação para Banco de Dados e Web”, como apoio para o aprendizado das tecnologias. Na obra mostro várias técnicas introdutórios e avançadas de desenvolvimento com ClientDataSet, dbExpress e DataSnap (multicamadas, incluindo SOAP e COM+). Para mais informações, consulte o link http://www.clubedelphi.net/guinther

Leia todos artigos da série

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?