COM, DCOM, COM+ José de Anchieta Isaac de Lima Oliveira Filho André Gustavo Pereira Humberto Nunes...

Post on 17-Apr-2015

106 views 1 download

Transcript of COM, DCOM, COM+ José de Anchieta Isaac de Lima Oliveira Filho André Gustavo Pereira Humberto Nunes...

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