com, dcom, com+ josé de anchieta isaac de lima oliveira filho andré gustavo pereira humberto nunes...
TRANSCRIPT
COM, DCOM, COM+José de Anchieta
Isaac de Lima Oliveira Filho
André Gustavo Pereira
Humberto Nunes Filho
1 /86
Sumário
Contextualização COM DCOM COM+ Considerações finais Referências
2 /86
Contextualização
Em 1987, DDE (Dynamic Data Exchange) Compartilhamento de dados entre aplicações
(Object Link Embbeding) OLE 1.0 Evolução da DDE Não possuia limitação no compartilhamento dos dados Noção de embarcado
Utilizavam Tabelas de Funções Virtuais (Vtables)
3 /86
Contextualização
OLE passou a ser OLE2 com novos recursos COM (Component Object Model) Possibilidade de reuso de componentes
DCOM O programador se preocupa apenas com a lógica de negócio Já possui implementado os padrões de rede de baixo nível
4 /86
Contextualização
MTS (Microsoft Transaction Services) Segurança Escalabilidade
COM+ (COM + MTS)
5 /86
COM(Component Object Model)
Isaac de Lima Oliveira Filho
6 /86
Definições Arquitetura de softtware independente da
plataforma de utilização, que permite desenvolver componentes de objetos que podem interagir com outras aplicações.
Comunicação entre processos COM especifica um binário padrão para
interfaces dinâmicas para garantir a interoperabilidade de objetos
Identificadores de classe (CLSIDs), que são identificadores globais únicos (GUID).
Cada componente COM expõe sua funcionalidade através de uma ou mais interfaces.
MIDL(Compilador COM para IDL)
77 /86
GUID
128 bits
Estrutura
88 /86
Propriedades Reflexivas, simétricas e transitivas. Um arquivo IDL permite que desenvolvedores
definam classes orientadas a objeto, interfaces, estruturas, enumerações e outros tipos definidos pelo utilizador, independentemente da linguagem de programação.
Reusabilidades de componentes Encapslamento de dados e de seu
processomento através dos ponteiros de interface
99 /86
Interface
Uma coleção de funções Várias interfaces para cada COM class Todas as classes COM são derivadas da classe
IUnkown
1010 /86
Interface
Base para
todos as
interfaces COM
QueryInterface
AddR
ef R
ele
ase
1111 /86
Interface
IDispatch
IUknonw
1212 /86
Passos para um Objeto COM Simples
1313 /86
Interagindo Cliente /Servidor
1414 /86
Cliente X Servidor
Comportamento Síncrono Chamadas individuais de métodos
1515 /86
Servidor COM
Serviços que estejam disponíveis na Interface COM.
Três tipos:
1616 /86
Servidor COM
In-process: implementados com Dynamic Link Libraries(DLL’s), servidor carregado Dinamicamente.
Out-of-process: programas executáveis. tratado por SCM em computadores também remotos(DCOM).
Windows NT: tratado pelo WINDOWS NT. Surrogate: In-process pode ocorrer
remotamente.
1717 /86
Servidor COM
COMPONETES AUXILIARES
1818 /86
Cliente
Pode ser feito em qualquer linguagem, desde que possa ter como referencia o objeto COM.
1919 /86
Abordagem Prática COM
20
Calculadora Plataforma Windows Ferramenta Visual Studio 2005 ATL (Active Template Library )Wizard COM Servidor tipo In-process, oferecendo
serviço implementado em Visual C++. Cliente em Visual Basic, chamando
quatro operações
20 /86
Cliente X Servidor(TesteCOM.dll)
Visual Basic
Visual C++
Visual J++
Operacoes.cpp /
TesteCOM.cpp
Operacoes.h/
TesteCOM.hInterface para COM
Métodos (Objetos)
TesteCOM.dllTesteCOM.dll
€
21
Cliente
Bliblioteca COM
Regsrv32:Regsrv32:LOCALLOCAL
CANAL LOCAL
Servidor(Objetos)
TesteCOM.idl
Interface COMInterface COM
Referência da BlibliotecaChamada da Função COM
21 /86
Cliente X Servidor(Object)
22 /86
DCOM(Distributed Component Object Model)
André Gustavo Pereira
23 /86
DCOM
Estende o COM para suportar comunicação entre objetos em máquinas diferentes, através de uma LAN, WAN ou da Internet.
Pode utilizar aplicações COM existentes
COM e DCOM não são propriedades da Microsoft, mas são gerenciados pelo consórcio independente ActiveX Consortium
24 /86
Arquitetura DCOM
Visão Geral
25 /86
DCOM
O gerenciador de serviços de controle (SCM) no cliente conecta ao SCM da máquina remota e solicita a criação do objeto
Para instanciar objetos em máquinas remotas, é necessário conhecer o nome do servidor e o identificador da classe (CLSID)
O nome do servidor pode ser obtido de três formas: Configuração fixa no sistema de registro ou no
DCOM Class Store Parâmetro fixo na chamada às funções de criação
dos objetos Nome de uma instância específica (moniker).
26 /86
DCOM
Registro no Cliente[HKEY_CLASSES_ROOT\CLSID\
{<CLSID_AuctionServer>}] "AppID"="{<APPID_AuctionServer>}"[HKEY_CLASSES_ROOT \APPID\
{<APPID_AuctionServer>}] "RemoteServerName"="auctions.r.us.com"
27 /86
DCOM Código no ClienteIAuction* pAuction = NULL;HRESULT hr=CoCreateInstance( CLSID_AuctionService, // Request an instance of
class CLSID_AuctionService
NULL, // No aggregation.
CLSCTX_SERVER, // Any server is fine.
IID_IAuction, // Ask for an interface of type IID_IAuction
(void**) &pAuction ); // Pointer to
returned interface pointer.
28 /86
Arquitetura DCOM
29 /86
DCOM
Independência de localização
30 /86
Marshaling e Unmarshaling
Baseado no padrão DCE RPC: A assinatura do método é descrita em IDL São gerados o proxy e o stub
Um ponteiro para a interface é utilizado para acessar o proxy
O processo de marshaling pode ser customizado. Isso pode ser necessário na comunicação com aplicações que não utilizam o padrão DCE RPC.
Referências estáticas podem ser passadas por valor ao invés de acessadas remotamente (Ex: monikers)
31 /86
Gerenciamento de Comunicação
Cada componente possui um contador de referências para controlar a quantidade de clientes conectados em um determinado momento. Quando este contador possui valor zero, o respectivo componente pode ser liberado da memória.
DCOM utiliza um protocolo de ping para detectar se o cliente ainda está ativo
32 /86
Gerenciamento de Comunicação
Um componente pode ser tanto um provedor como um consumidor de uma funcionalidade (fluxo de informações bidirecionais)
A comunicação pode ser síncrona ou assíncrona (a partir do Windows 2000)
33 /86
Concorrência
Apartment: associação entre um objeto COM e uma thread ou um grupo de threads
Single-Threaded Apartments: Uma única thread controla a chamada aos
métodos do objeto Uma única thread pode controlar todas as
instâncias, ou somente uma Chamadas feitas de outras threads são
enfileiradas quando o componente está em execução
Todos os métodos são sincronizados
34 /86
Concorrência
Multithreaded Apartment Várias threads podem chamar métodos de um
objeto O objeto deve sincronizar a execução dos
métodos, quando necessário
35 /86
Escalabilidade
Multiprocessamento Simétrico (SMP): gerenciamento de fila de threads para requisições
Para componentes “sem estado”, é possível executar múltiplas cópias em máquinas diferentes
36 /86
Escalabilidade
Alguns componentes críticos podem ser isolados em servidores dedicados sem necessidade de recompilação
37 /86
Escalabilidade
Inicialmente, uma única máquina servidora pode armazenar todos os componentes da aplicação. Com o aumento na demanda, tais componentes podem ser distribuídos em novos servidores.
38 /86
Escalabilidade
Novas interfaces podem ser acrescentadas a um componente, sem interferir no acesso às interfaces anteriores. Isso permite que diferentes versões do mesmo componente sejam utilizadas simultaneamente
39 /86
Desempenho
COM possui um mecanismo próprio para chamada remota de procedimentos (RPC) orientada a objetos
O protocolo de comunicação preferencialmente utilizado pelo DCOM é o UDP
Uma única mensagem de ping é enviada para um determinado cliente, independente da quantidade de componentes acessados no servidor
Múltiplos acessos a métodos remotos podem ser empacotados pelo proxy em uma única chamada
40 /86
Desempenho
Um componente pode conectar outros dois componentes diretamente, funcionando como um diretório de serviços
Quando um mesmo componente estiver sendo executado em mais de um servidor, um “broker” pode decidir qual das referências deve ser utilizada
41 /86
Segurança
DCOM utiliza o framework de segurança estensível do Windows NT
O DCOM encapsula os requisitos de segurança dos componentes
A lista de acesso aos componentes (ACL) é armazenada
A arquitetura de segurança do Windows NT suporta diversos provedores de segurança que podem ser utilizados em conjunto com protocolos padronizados da Internet.
42 /86
Segurança
43 /86
Balanceamento de Carga
Principais técnicas de balanceamento: isolamento de componentes críticos, execução paralela e pipeline de processos seqüenciais.
Balanceamento estático: um usuário acessa um servidor específico de uma aplicação, independente das condições atuais da rede
Um componente de referência pode estabelecer a conexão do cliente com um determinado servidor
44 /86
Balanceamento de Carga
Balanceamento Dinâmico: o componente de referência indica qual servidor deve ser conectado através de informações como a topologia de rede, estatísticas sobre demandas passadas, tempo de leitura do servidor, etc.
Balanceamento dinâmico não requer intervenção de um administrador
Outra alternativa é a utilização do proxy para interceptar a chamada a um método e redirecioná-lo para outro servidor.
45 /86
Tolerância a Falhas
46 /86
Tolerância a Falhas
Utiliza um mecanismo próprio de ping. Uma técnica pode ser implementada
utilizando o componente de redirecionamento.
Outra técnica é ter duas cópias do mesmo componente servidor sendo executadas em máquinas diferentes, processando a mesma informação (hot backup)
47 /86
Desenvolvimento
A localização de cada componente pode ser modificada com uma simples mudança de configuração.
Clientes podem ser atualizados através de repositórios (class store)
O componente de redirecionamento pode ser utilizado para retornar o componente apropriado para o cliente
48 /86
Neutralidade de Protocolo
DCOM pode utilizar qualquer protocolo de transporte, incluindo TCP/IP, UDP, IPX/SPX e NetBIOS
Baseado em DCE RPC
49 /86
Neutralidade de Plataforma
DCOM é aberto a todas as abordagens de desenvolvimento entre plataformas
Foi definido um padrão binário por plataforma.
50 /86
Neutralidade de Plataforma
Foram definidos serviços independentes da plataforma, como: conexão, criação e localização de componentes, chamada de métodos padrão e o framework de segurança
São utilizados ainda serviços disponíveis em cada plataforma para implementar multithread e controle de concorrência, interação com sistema de arquivos, etc.
Aplicações Java podem utilizar componentes DCOM importando uma descrição java compatível do componente
51 /86
Utilização na Internet
DCOM utiliza uma única porta para iniciar conexões e designa um intervalo de portas configurável para os componentes em execução (uma porta por processo)
DCOM pode ainda ser configurado para utilizar o protocolo HTTP
52 /86
Utilização na Internet
53 /86
COM+(Component Services)
Humberto Nunes Filho
54 /86
COM+ Component Services
Introdução Visão Geral
Evolução do COM e MTS Criado para dar suporte a transações distribuídas
aumentando a escalabilidade, disponibilidade, um melhor gerenciamento e processamento de aplicativos COM.
Usado para desenvolvimento e gerenciamento de aplicações distribuídas baseadas na plataforma Microsoft Windows
55 /86
COM+ Component Services Introdução
Visão Geral Foi projetado primeiramente para o Microsoft Visual C+
+ e o Microsoft Visual Basic. Acrescenta novos serviços e aplicações para
componentes COM em tempo de execução. Resposta da Microsoft a Sun Microsystems em relação
ao EJB. Na versão 1.5 requer Windows XP ou Windows Server
2003, na versão 1.0 requer Windows 2000.
56 /86
COM+ Component Services Introdução
Principais serviços COM+ Administração: novas ferramentas e serviços que
possibilitam programadores e administradores configurar e gerenciar componentes. Microsoft Management Console Component Services
Explorer. COM + também fornece um padrão de localização o
COM + Catalog, que serve para armazenar informações de configuração
57 /86
COM+ Component Services Introdução
Principais serviços COM+ Just - in-Time Activation (JITA): serviço que instância um
componente quando ele é chamado, e descarta quando ele não está mais sendo usado.
Object pooling: serviço que permite uma instância freqüentemente usada, como conexões de dados sejam mantidos num pool para que possam ser utilizadas por vários clientes. Melhorando o desempenho e a capacidade de resposta de uma aplicação dramaticamente.
58 /86
COM+ Component Services Introdução
Principais serviços COM+ Transações: serviço que permite que operações
realizadas por componentes distribuídos e recursos, como a base de dados possam ser tratados como uma única operação. Transações são requisitos da maioria dos sistemas comerciais.
Sincronização: serviço para controlar o acesso simultâneo aos objetos.
Segurança: serviço para autenticação e controle de acesso dos clientes em uma aplicação.
59 /86
COM+ Component Services Introdução
Principais serviços COM+ Componentes “enfileirados”: serviço que permite que
componentes possam se comunicar através de mensagens assíncronas.
Eventos: serviço que permite que componentes possam se informar mutuamente sobre mudanças significativas. Suporta o modelo de notificação de eventos publicar-escrever.
60 /86
COM+ Component Services Contexto em COM+
Modelo que explica o caminho percorrido pelos serviços para serem executados.
COM + fornece serviços para os componentes interceptando as chamadas que o cliente faz as interfaces desses componentes.
COM+ usa uma fiscal para fornecer os serviços e encapsular a execução exigida pelos objetos.
61 /86
COM+ Component Services Contexto em COM+
Encapsulamento com fiscal em COM+ Transparência na localização: permite que o código no
cliente seja independente da atual localização do objeto. Nada no código do cliente sabe onde o objeto executa.
Ao ignorar a localização do objeto o código do cliente é dissociado do objeto.
O código cliente não precisa ser modificado se a localização do objeto sofrer mudanças
62 /86
COM+ Component Services Contexto em COM+
Encapsulamento com fiscal em COM+ COM+ Introduz um proxy entre o objeto e o cliente COM+ divide o processo em apartamentos e cada
chamada entre eles é fiscalizada. O cliente interage diretamente com o objeto ou com o
proxy. COM+ fiscaliza a chamada do cliente mascarando a
verdadeira localização do objeto.
63 /86
COM+ Component Services Contexto em COM+
Encapsulamento com fiscal em COM+
64 /86
COM+ Component Services Contexto em COM+
Encapsulamento via interceptação em COM+ O COM+ também coloca um proxy e um stub entre o
cliente e o objeto se o serviço requer interceptação, independentemente do caminho em que são configurados.
COM+ subdivide os apartamentos em contextos e cada contexto pode conter um ou mais objetos.
65 /86
COM+ Component Services Contexto em COM+
Encapsulamento via interceptação em COM+ Os objetos de cada contexto possuem a mesma
configuração. Todas as chamadas devem ser fiscalizadas por um
proxy e um stub para que o COM+ possa interceptar as chamadas e providenciar a configuração do serviço.
66 /86
COM+ Component Services Contexto em COM+
Encapsulamento via interceptação em COM+
67 /86
COM+ Component Services
Contexto em COM+ O objeto contexto
COM+ representa cada contexto por um objeto chamado objeto contexto.
Todo contexto tem um objeto contexto Objetos podem obter um ponteiro para seus objetos
contexto chamando CoGetObjectContext( )
68 /86
COM+ Component Services Contexto em COM+
O objeto contexto
69 /86
COM+ Component Services Contexto em COM+
O objeto chamada COM+ cria um objeto transitório chamado objeto
chamada cada vez que o objeto é chamado. O objeto chamada representa a chamada atual. Objetos podem acessar o seu objeto chamada
chamando CoGetCallContext( )
70 /86
COM+ Component Services Gerenciamento de instância
COM+ fornece todo componente configurado com acesso já pronto ao serviço de gerenciamento de instância.
COM+ pode ser usado com dois serviços de gerenciamento de instância, objeto pooling e JITA, individualmente ou combinados.
71 /86
COM+ Component Services Gerenciamento de instância
Object Pooling COM+ pode manter um pool de objetos já prontos e
criados para servir os clientes. Com Objetot Pooling, para cada objeto do pool há um
único custo de criação e tal objeto pode ser reutilizado por vários clientes.
72 /86
COM+ Component Services Gerenciamento de instância
Object Pooling Objeto pooling é mais apropriado quando o objeto de
inicialização é genérico o bastante para não requerer parâmetros específicos do cliente.
Este é um bom serviço de gerenciamento de instância, mas o que fazer quando se tem clientes que usam o serviço por longos períodos de tempo?
73 /86
COM+ Component Services
Gerenciamento de instância Just-in-Time Activation (JITA)
COM+ fornece outra técnica de gerenciamento de instância denominada Just-in-Time Activation
Tal técnica permite a utilização do objeto somente durante a duração da chamada.
JITA é melhor utilizado quando a instanciação do objeto não é uma operação custosa comparada com a escassez de recursos ou com os gastos implicados com o objeto.
É especialmente usado quando o objeto é armazenado por longos períodos de tempo sem ser utilizado.
74 /86
COM+ Component Services Transações
O serviço de gerenciamento de transações COM+ é baseado no modelo MTS com algumas inovações.
As principais propriedades em uma transação são: atomicidade, consistência, isolamento e durabilidade.
75 /86
COM+ Component Services Transações
No modelo de programação COM +, pode-se criar componentes e deles extrair o melhor possível, permitindo que a lógica do negócio ou a criação de uma conexão com a base de dados possa automatizar suas operações.
COM+ permite que você possa especificar um tempo limite para transações diferentes e para os objetos que as exigem.
76 /86
COM+ Component Services Transações
Este procedimento resolve o tempo limite em transações curtas versus longas permitindo a execução de procedimentos armazenados.
Modelo de concorrência A idéia por trás do modelo de concorrência COM +
é simples mas poderosa, em vez de conseguir sincronização física, COM + atinge sincronização lógica.
77 /86
COM+ Component Services Modelo de concorrência
Se há garantia de um componente não ser acessado por vários treads lógicos ao mesmo tempo,a sincronização daquele componente é garantida.
Tudo que o COM+ provê é a garantia de que o componente não é acessado por mais de um tread lógico naquele momento.
78 /86
COM+ Component Services
Eventos COM+ Os serviços de eventos COM+ lidam com a
maioria dos eventos para publisher e subscriber. Os publisher oferecem os tipos de eventos
requeridos pelos subscriber. Ao contrário de uma sistema de eventos
acoplados rigoroso onde os publisher precisam lidar com uma sobrecarga de subscriber exigindo diretamente os serviços de eventos.
79 /86
COM+ Component Services
Eventos COM+ COM+ mantém a inscrição dos dados
simplificando o modelo de programação para publisher e subscriber porque o componente COM+ não precisa conter a lógica de construção da inscrição.
Os serviços de eventos COM+ usam um event class object para gerenciar a conexão entre o publisher e o subscriber.
80 /86
COM+ Component Services
Eventos COM+ O event class object é um componente COM+ que
é gerenciado e armazenado pelo sistema COM+ e contém as interfaces e os métodos usados pelo publisher para chamar os eventos.
É um objeto persistente que indica os eventos que podem ocorrer e opcionalmente identificar o publisher.
Você especifica as interfaces e os métodos que você quer e o event class para conter e providenciar o tipo de biblioteca especifico.
81 /86
COM+ Component Services
Introdução Visão Geral
Evolução do COM e MTS Criado para dar suporte a transações distribuídas
aumentando a escalabilidade, disponibilidade, um melhor gerenciamento e processamento de aplicativos COM.
Usado para desenvolvimento e gerenciamento de aplicações distribuídas baseadas na plataforma Microsoft Windows
82 /86
Considerações finais
Componentes não são tecnologia
COM passou a ser parte do consórcio Active X
Microsoft deixou COM e passou a utilizar .Net
83 /86
Referências
84 /50
MATOS, Telio; Introdução ao COM(Component Object Model).Disponível em http://www.dei.isep.ipp.pt/~tmatos/ ADAV/2004_2005/GuiaoCOM.pdf em novembro de 2004.
MORAGN, Bryan; Java e os Component Object Model. Acessado em 26 de março de 2008.
MSDN Liibrary. Acessado em 26 de março de 2008.
84 /86
Referências Microsoft Developer Network. DCOM Technical
Overview. Disponível em http://msdn2.microsoft.com/en-us/library/ms809340.aspx. Acesso em 02 de Abril de 2008.
MSDN Library. DCOM Architecture. Disponível em http://msdn2.microsoft.com/en-us/library/ms809311.aspx. Acesso em 02 de Abril de 2008.
85 /86
Referências LOWY, Juval. COM and .NET Component
Services. 1° Ed. Editora: O'Reilly Media, September 2001. 384 p.
Microsoft Developer Network. COM+ (Component Services). Microsoft Corporation 2008. Disponível em: <http://msdn2.microsoft.com/en-us/library/ms685978(VS.85).aspx>. Acesso em: 03/04/2008.
86 /86