Curso de dbExpress e DataSnap - Parte XXIII
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).
Figura. COM + atuando na camada lógica de negócio em uma arquitetura distribuída
Clique em File|New|Active X|Transactional Object.
Figura. Criando um objeto COM+
Na caixa de diálogo que aparece digite “Soma” para CoClas Name.
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.
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.
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;
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.
Figura. Instalando um servidor COM+
Preencha as opções como mostra a figura a seguir.
Figura. Instalando um servidor COM+
Atenção: Quando você instala a aplicação no catálogo do COM+ ela estará automaticamente registrada.
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)));
Figura. Cliente para um servidor COM+
Download
Leia todos artigos da série
- Curso de dbExpress e DataSnap
- Curso de dbExpress e DataSnap - Parte II
- Curso de dbExpress e DataSnap - Parte III
- Curso de dbExpress e DataSnap - Parte IV
- Curso de dbExpress e DataSnap - Parte V
- Curso de dbExpress e DataSnap - Parte VI
- Curso de dbExpress e DataSnap - Parte VII
- Curso de dbExpress e DataSnap - Parte VIII
- Curso de dbExpress e DataSnap - Parte IX
- Curso de dbExpress e DataSnap - Parte X
- Curso de dbExpress e DataSnap - Parte XI
- Curso de dbExpress e DataSnap - Parte XII
- Curso de dbExpress e DataSnap - Parte XIII
- Curso de dbExpress e DataSnap - Parte XIV
- Curso de dbExpress e DataSnap - Parte XV
- Curso de dbExpress e DataSnap - Parte XVI
- Curso de dbExpress e DataSnap - Parte XVII
- Curso de dbExpress e DataSnap - Parte XVIII
- Curso de dbExpress e DataSnap - Parte XIX
- Curso de dbExpress e DataSnap - Parte XX
- Curso de dbExpress e DataSnap - Parte XXI
- Curso de dbExpress e DataSnap - Parte XXII
- Curso de dbExpress e DataSnap - Parte XXIII
- Curso de dbExpress e DataSnap - Parte XXIV
- Curso de dbExpress e DataSnap - Parte XXV
- Curso de dbExpress e DataSnap - Parte XXVI
- Curso de dbExpress e DataSnap - Parte XXVII
- Curso de dbExpress e DataSnap - Parte XXVIII
- Curso de dbExpress e DataSnap - Parte XXIX
- Curso de dbExpress e DataSnap - Parte XXX
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo