860 likes | 1k Views
COM, DCOM, COM+. José de Anchieta Isaac de Lima Oliveira Filho André Gustavo Pereira Humberto Nunes Filho. Sumário. Contextualização COM DCOM COM+ Considerações finais Referências. Contextualização. Em 1987, DDE (Dynamic Data Exchange) Compartilhamento de dados entre aplicações
E N D
COM, DCOM, COM+ José de Anchieta Isaac de Lima Oliveira Filho André Gustavo Pereira HumbertoNunesFilho
Sumário • Contextualização • COM • DCOM • COM+ • Considerações finais • Referências
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)
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
Contextualização • MTS (Microsoft Transaction Services) • Segurança • Escalabilidade • COM+ (COM + MTS)
COM(Component Object Model) Isaac de Lima Oliveira Filho
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) 7
GUID 128 bits Estrutura 8
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 9
Interface • Uma coleção de funções • Várias interfaces para cada COM class • Todas as classes COM são derivadas da classe IUnkown 10
Interface QueryInterface AddRef Release Base para todos as interfaces COM 11
Interface IUknonw IDispatch 12
Cliente X Servidor • Comportamento Síncrono • Chamadas individuais de métodos 15
Servidor COM • Serviços que estejam disponíveis na Interface COM. • Três tipos: 16
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. 17
Servidor COM COMPONETES AUXILIARES 18
Cliente • Pode ser feito em qualquer linguagem, desde que possa ter como referencia o objeto COM. 19
Abordagem Prática COM • 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
VisualBasic Visual C++ Visual J++ Cliente X Servidor(TesteCOM.dll) Cliente Servidor(Objetos) € Operacoes.cpp / TesteCOM.cpp Métodos (Objetos) Interface COM CANAL LOCAL Operacoes.h/ TesteCOM.h Bliblioteca COMRegsrv32:LOCAL Interface para COM Referência da Bliblioteca Chamada da Função COM TesteCOM.idl TesteCOM.dll 21
DCOM(Distributed Component Object Model) André Gustavo Pereira
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
Arquitetura DCOM • Visão Geral
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).
DCOM • Registro no Cliente [HKEY_CLASSES_ROOT\CLSID\{<CLSID_AuctionServer>}] "AppID"="{<APPID_AuctionServer>}" [HKEY_CLASSES_ROOT \APPID\{<APPID_AuctionServer>}] "RemoteServerName"="auctions.r.us.com"
DCOM • Código no Cliente IAuction* 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.
DCOM • Independência de localização
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)
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
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)
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
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
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
Escalabilidade • Alguns componentes críticos podem ser isolados em servidores dedicados sem necessidade de recompilação
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.
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
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
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
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.
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
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.
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)
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
Neutralidade de Protocolo • DCOM pode utilizar qualquer protocolo de transporte, incluindo TCP/IP, UDP, IPX/SPX e NetBIOS • Baseado em DCE RPC
Neutralidade de Plataforma • DCOM é aberto a todas as abordagens de desenvolvimento entre plataformas • Foi definido um padrão binário por plataforma.