Artigo Clube Delphi Edição 19 - Dcom Objetos COM e processamento distribuído

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)

Artigo da Revista Clube Delphi Edição 19.

Esse artigo faz parte da revista Clube Delphi edição 19. Clique aqui para ler todos os artigos desta edição

 

Atenção: por essa edição ser muito antiga não há arquivo PDF para download. Os artigos dessa edição estão disponíveis somente através do formato HTML. 

 

Dcom Objetos COM e processamento distribuído

 

Cada vez mais as empresas e grandes corporações necessitam de tecnologias inovadoras e avançadas, que vão bem além das simples soluções cliente-servidor que estávamos acostumados. Neste contexto, inserem-se o COM e DCOM, que servem de base para muitas tecnologias e aplicações distribuídas, destacando-se a OLE, ActiveX, Automation, MTS, DCOM, COM+ e Active Server Objects. Antes de construirmos um exemplo usando o COM e DCOM, vamos analisar alguns aspectos-chave e alguns conceitos básicos.

        

Conceitos sobre COM e DCOM

 

         COM (Component Object Model) é a tecnologia desenhada pela Microsoft que possibilita a comunicação entre aplicações clientes e aplicações servidoras. Essa comunicação é feita através do que chamamos de interfaces. Uma interface COM é a maneira como um objeto expõe sua funcionalidade ao meio externo. Um GUID (Globally Unique Identifier) é um número utilizado no COM para identificar uma interface ou uma  Co-Class. Quando utilizado para identificar uma interface, um GUID é também chamado de IID (interface ID).

         O mecanismo que permite a comunicação entre aplicações de diferentes máquinas em uma rede chama-se DCOM (Distributed COM).

O COM também é base de outras tecnologias da Microsoft, como a OLE e ActiveX. Segundo a Microsoft, o COM é uma extensão do próprio sistema operacional.

         Objetos COM são independentes de linguagem. Isso significa que eles podem ser desenvolvidos em qualquer linguagem que dê suporte a essa tecnologia, e o Delphi é uma delas. Neles, você pode desenvolver tanto a aplicação servidora (o objeto COM) quanto a aplicação cliente. O servidor COM poderá residir em um EXE, OCX ou em uma DLL. A implementação de sua funcionalidade é transparente ao cliente que utilizará seus recursos.

Criando Objetos COM

 

         O Delphi oferece um assistente para a criação de objetos COM no Object Repository. Esse processo não é muito diferente de criar uma classe da maneira tradicional.

         Vamos então criar nosso primeiro objeto COM. Siga os seguintes passos :

 

1) Clique em File|New. Na guia ActiveX clique em ActiveX Library. Uma nova biblioteca será criada, a DLL, que conterá nosso objeto COM. Salve esta biblioteca com o nome de ExemploLib.

 

 

2) Clique novamente em File|New. Na guia ActiveX escolha agora COM Object.

 

3)  Na caixa de diálogo que aparece, digite 'Exemplo' para o nome da classe. O Delphi automaticamente preenche o nome da interface a ser implementada. Deixe a opção Multiple Instance como padrão para Instancing (isso fará com que uma nova instância de nosso objeto seja criada para cada aplicação cliente). Na opção Threading Model, deixe o padrão Apartment: cada objeto COM é executado dentro de seu próprio Thread.

 

4)  Logo após, aparecerá a Type Library do objeto COM. Salve a unidade criada com o nome de uExemplo.        

 

 

         Uma Type Library constitui a maneira de identificarmos os métodos suportados por uma interface. O Delphi oferece um editor onde se pode facilmente construir uma interface para um objeto, e através de código Pascal implementar essa interface. Para visualizar o editor da Type Library de um objeto, você pode acessar o menu View|Type Library.

 

Continuando nosso exemplo:

"

A exibição deste artigo foi interrompida :(
Este post está disponível para assinantes MVP

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