• Nenhum resultado encontrado

OBJETOS DISTRIBUÍDOS: CONCEITOS E PADRÕES

N/A
N/A
Protected

Academic year: 2021

Share "OBJETOS DISTRIBUÍDOS: CONCEITOS E PADRÕES"

Copied!
21
0
0

Texto

(1)

MINISTÉRIO DA CIÊNCIA E TECNOLOGIA INSTITUTO NACIONAL DE PESQUISAS ESPACIAIS

INPE-7939-TDI/744

OBJETOS DISTRIBUÍDOS: CONCEITOS E PADRÕES

Samira Rachid da Costa

Dissertação de Mestrado em Computação Aplicada, orientada pelo Dr. Tatuo Nakanishi, aprovada em 27 de abril de 2000.

INPE

São José dos Campos 2000

(2)

681.3.06

COSTA, S. R.

Objetos distribuídos: conceitos e padrões / S. R. ta. - São José dos Campos: INPE, 1993.

230p. - (INPE-7939-TDI/744).

1.Processamento distribuído. 2. Programação orientada a objeto. 3 Sistemas cliente servidor. 4.Programação de putador. 5.Objetos distribuídos. I.Título.

(3)

Aprovado pela Banca Examinadora em cumprimento a requisito exigido para a obtenção do Título de Mestre em Computação Aplicada.

Candidato (a) : Samira Rachid da Costa

(4)
(5)
(6)

AGRADECIMENTOS

Ao Dr. Tatuo Nakanishi que orientou este trabalho de modo seguro, compreensivo e amigo.

À Embraer (VPI/DTE/GEN/NSI), na figura do sr. Laerte Jeronimo de Oliveira, que permitiu o desenvolvimento deste trabalho.

Ao colega Marcelo José Ruv Lemes pelos conselhos sempre tão pertinentes.

A meus pais, pelo amor e sacrifício; e a meus familiares e amigos pelo encorajamento.

A meus tão queridos Elcio, Pedro e Bruno pela paciência, compreensão, apoio e amor.

(7)

RESUMO

Ao se decidir distribuir um sistema deve-se considerar tanto o “overhead” que isto implica quanto o benefício que pode ser alcançado. Tipicamente, após iniciar-se o modelamento de um sistema, determina-se quais objetos precisam ser implementados como locais e quais como distribuídos. A modelagem apresenta um problema quanto à escolha da arquitetura de distribuição. Estas arquiteturas suportam o desenvolvimento de aplicações executando num ambiente heterogêneo e distribuído, dispondo de serviços comuns às aplicações, tais como, comunicação entre cliente e servidor, isolamento das aplicações em relação às plataformas de hardware, sistemas operacionais, protocolos de rede e linguagens de implementação. Cada uma delas apresentará vantagens e desvantagens, isto é, uma melhor adequação para cada sistema em particular. Através de pesquisa bibliográfica, verificou-se que as arquiteturas mais referenciadas são: o “Common Object Request Broker Architecture” (CORBA) e o “Distributed Component Object Model” (DCOM). Assim um estudo das similaridades e diferenças entre ambos, levantadas através de seus modelos de objeto, protocolos de comunicação, funcionalidades e abrangência, passa a ser um ponto de partida para obter um panorama do estado da arte da tecnologia de distribuição de objetos, assim como, para o desenvolvimento de aplicações distribuídas que se utilizem dessas arquiteturas de distribuição.

(8)

DISTRIBUTED OBJETS: CONCEPTS AND PATTERNS

ABSTRACT

When deciding to distribute a system, it should be taken into account that the distribution implies "overhead". Yet, the benefit it provides should be explored. Typically, after starting the modeling of a system, is necessary to determine which objects must be implemented as locals or as distributed. The modeling presents a problem in relation to the choice of the distribution architecture. These architectures support the development of applications performing in a heterogeneous environment. They also provide common services to the applications such as communication between server and client; isolation of applications concerned to hardware plataforms; operational systems; net protocols; and implementation languages. Each architecture will present advantages and disadvantages. That is, a more suitable architecture for each particular system. Through bibliographic research, it was possible to observe that the most referred architectures are: “Common Object Request Broker Architecture” (CORBA) and “Distributed Component Object Model” (DCOM). Thus a disquisition showing the similarities and differences between then could be the first step to obtain an overview of the distributed object technology; and also assist the development of distributed application based on one of this distribution architectures.

(9)

SUMÁRIO

Pág.

LISTA DE FIGURAS LISTA DE TABELAS

LISTA DE SIGLAS E ABREVIATURAS

CAPÍTULO 1 - INTRODUÇÃO ... 29

CAPÍTULO 2 - OBJETOS E DISTRIBUIÇÃO ... 35

2.1 - OBJETOS DISTRIBUÍDOS ... 35

2.2 - SISTEMAS DISTRIBUÍDOS ORIENTADOS A OBJETOS... 37

CAPÍTULO 3 - “MIDDLEWARE” ... 41

3.1 - ARQUITETURA CLIENTE/SERVIDOR ... 41

3.1.1 - ARQUITETURA CLIENTE/SERVIDOR DE DUAS CAMADAS ... 42

3.1.2 - ARQUITETURA CLIENTE/SERVIDOR DE TRÊS CAMADAS ... 43

3.1.2.1 - MONITORES DE PROCESSAMENTO DE TRANSAÇÃO ... 44

3.1.2.2 - SERVIDOR DE MENSAGENS ... 45

3.1.2.3 - “OBJECT REQUEST BROKER”... 46

3.2 - “MIDDLEWARE”... 47 3.2.1 - SERVIÇOS “MIDDLEWARE” ... 51 3.2.2 - TIPOS DE “MIDDLEWARE” ... 51 3.2.2.1 - COM/DCOM ... 52 3.2.2.2 - CORBA... 53 3.2.2.3 - JAVA... 53 3.2.2.4 - DCE ... 53

(10)

CAPÍTULO 4 - DCOM ... 57

4.1 - OBJETO COM... 57

4.2 - INTERFACES ... 64

4.2.1 - IDENTIFICADOR DE INTERFACE ... 64

4.2.2 - LINGUAGEM DE DEFINIÇÃO DE INTERFACE... 65

4.2.3 - “VTABLE” ... 65

4.2.4 - INTERFACE FUNDAMENTAL IUnknown... 67

4.2.4.1 - INTERFACE IUnknown::QueryInterface... 67

4.2.4.2 - INTERFACE IUnknown::AddRef / IUnknown::Release ... 68

4.3 - BIBLIOTECA COM ... 69

4.3.1 - CRIAÇÃO DE OBJETOS COM ... 71

4.3.2 - FÁBRICA DE OBJETOS ... 72

4.4 - PERSISTÊNCIA ... 74

4.4.1 - ARMAZENAGEM ESTRUTURADA ... 75

4.4.2 - INTERFACES IPersist... 78

4.5 - “MONIKERS” ... 79

4.6 - COMUNICAÇÃO CLIENTE/OBJETO COM... 82

4.6.1 - CLIENTE E SERVIDOR DE OBJETOS NO MESMO PROCESSO ... 82

4.6.2 - CLIENTE E SERVIDOR DE OBJETOS LOCAL ... 83

4.6.3 - CLIENTE E SERVIDOR DE OBJETOS REMOTO ... 85

4.6.4 - “MARSHALING” E “UNMARSHALING” ... 85

4.6.5 - “TYPE INFORMATION”... 87

4.7 - INTERFACE IDispatch ... 89

4.8 - DCOM... 91

4.8.1 - CRIAÇÃO DE UM OBJETO REMOTO... 91

4.8.1.1 - CRIAÇÃO DE UM OBJETO REMOTO - CoCreateInstance... 91

4.8.1.2 - CRIAÇÃO DE UM OBJETO REMOTO - CoCreateInstanceEx... 93

4.8.1.3 - CRIAÇÃO E INICIAÇÃO DE UM OBJETO REMOTO ... 95

(11)

4.8.2 - ACESSO A UM OBJETO REMOTO... 97 4.8.2.1 - OBJETO RPC... 97 4.8.2.2 - OXIDs ... 98 4.8.2.3 - OBJREFs... 99 4.8.2.4 - INTERFACE IRemUnknown ... 101 4.8.2.5 - “PINGING” ... 102

4.8.3 - ACESSO SEGURO A UM OBJETO REMOTO ... 103

4.8.3.1 - SEGURANÇA DE ATIVAÇÃO ... 103 4.8.3.2 - CHAMADA SEGURA... 103 4.9 - CONSIDERAÇÕES FINAIS... 104 CAPÍTULO 5 - CORBA ... 105 5.1 - MODELO DE OBJETO... 105 5.2 - COMPUTAÇÃO DISTRIBUÍDA ... 105

5.2.1 - ADIÇÃO DE “BROKER” ENTRE CLIENTES E SERVIDORES ... 106

5.2.2 - PROCESSOS SERVIDORES ... 108

5.2.3 - SUPORTE À COMUNICAÇÃO SÍNCRONA E ASSÍNCRONA ... 108

5.3 - CONCEITOS E TERMOS ASSOCIADOS AO CORBA ... 109

5.3.1 - REQUISIÇÕES ... 109

5.3.2 - IDL ... 110

5.3.3 - INSTÂNCIAS E REFERÊNCIAS DE OBJETOS ... 114

5.3.4 - IMPLEMENTAÇÃO DE OBJETOS ... 114

5.4 - ARQUITETURA CORBA ... 116

5.5 - “INTEROPERABILIDADE” CORBA ... 123

5.6 - “OBJECT MANAGEMENT ARCHITECTURE”... 126

5.7 - SERVIÇOS CORBA ... 127

5.7.1 - SERVIÇOS DE GERENCIAMENTO DE INFORMAÇÃO ... 128

5.7.1.1 - SERVIÇO DE PROPRIEDADE ... 128

(12)

5.7.1.3 - SERVIÇO DE CONSULTA ... 130

5.7.1.4 - SERVIÇO DE “EXTERNALIZAÇÃO” ... 131

5.7.1.5 - SERVIÇO DE PERSISTÊNCIA DE OBJETO ... 132

5.7.1.6 - SERVIÇO DE COLEÇÃO ... 133

5.7.2 - SERVIÇOS DE GERENCIAMENTO DE TAREFAS ... 134

5.7.2.1 - SERVIÇO DE EVENTOS ... 134

5.7.2.2 - SERVIÇO DE CONCORRÊNCIA ... 134

5.7.2.3 - SERVIÇO DE TRANSAÇÃO ... 135

5.7.3 - SERVIÇOS DE GERENCIAMENTO DE SISTEMA ... 136

5.7.3.1 - SERVIÇO DE NOMEAÇÃO ... 136

5.7.3.2 - SERVIÇO DE CICLO DE VIDA ... 139

5.7.3.3 - SERVIÇO DE LICENCIAMENTO ... 140 5.7.3.4 - SERVIÇO DE NEGÓCIOS ... 141 5.7.4 - SERVIÇOS DE INFRA-ESTRUTURA ... 142 5.7.4.1 - SERVIÇO DE TEMPO ... 142 5.7.4.2 - SERVIÇO DE SEGURANÇA ... 143 5.8 - FACILIDADES CORBA ... 144 5.8.1 - FACILIDADES HORIZONTAIS ... 145

5.8.1.1 - FACILIDADE DE INTERFACE DE USUÁRIO ... 145

5.8.1.2 - FACILIDADE DE GERENCIAMENTO DE INFORMAÇÃO ... 146

5.8.1.3 - FACILIDADE DE GERENCIAMENTO DE SISTEMA ... 147

5.8.1.4 - FACILIDADE DE GERENCIAMENTO DE TAREFA ... 147

5.8.2 - FACILIDADES VERTICAIS ... 148

5.9 - OMG ... 149

5.10 - CONSIDERAÇÕES FINAIS ... 150

CAPÍTULO 6 – CORBA / DCOM ... 153

6.1 - CORBA/DCOM ... 154

(13)

6.1.2 - MODELO DE OBJETO ... 156

6.1.3 - INTERFACE DE OBJETO ... 157

6.1.4 - IDL ... 161

6.1.5 - HERANÇA DE INTERFACE ... 164

6.1.6 - REPOSITÓRIO DE INTERFACES ... 165

6.1.7 - CICLO DE VIDA DO OBJETO ... 166

6.1.8 - PROTOCOLO ... 169 6.1.9 - ERROS E EXCEÇÕES ... 170 6.1.10 - PERSISTÊNCIA ... 171 6.1.11 - SERVIÇOS ... 172 6.1.12 - SEGURANÇA ... 178 6.2 - CLASSIFICAÇÃO ... 179 6.3 - “INTEROPERABILIDADE” CORBA/DCOM ... 181 6.4 – CONSIDERAÇÕES FINAIS ... 182 CAPÍTULO 7 - JAVA... 197 7.1 - CARACTERÍSTICAS DA LINGUAGEM ... 197 7.1.1 - INTERFACE ... 190 7.1.2 - BIBLIOTECAS JAVA ... 191 7.2 - RMI ... 194

7.2.1 - CAMADA “STUB / SKELETON” ... 197

7.2.2 - CAMADA DE REFERÊNCIA REMOTA ... 199

7.2.3 - CAMADA DE TRANSPORTE ... 200

7.3 - APLICAÇÔES UTILIZANDO RMI ... 200

7.4 - CARREGAMENTO DINÂMICO DE “STUB” ... 202

7.5 - “GARBAGE COLLECTION” DE OBJETOS REMOTAS ... 203

(14)

CAPÍTULO 8 - CONCLUSÕES ... 205

REFERÊNCIAS BIBLIOGRÁFICAS ... 209

(15)
(16)

LISTA DE FIGURAS

Pág.

3.1 - Arquitetura cliente/servidor de duas camadas ... 43

3.2 - Arquitetura cliente/servidor de três camadas ... 44

3.3 - Monitores de processamento de transações ... 45

3.4 - Funções do ORB... 46

3.5 - “Middleware” ... 48

3.6 - Arquitetura DCE... ... 54

4.1 - Objeto COM... ... 58

4.2 - Ponteiros para interfaces de objeto COM... ... 59

4.3 - Localização de objetos COM... ... 60

4.4 - Reuso por contenção... ... 62

4.5 - Reuso por agregação... 63

4.6 - Formato padrão... ... 66

4.7 - Uso do método QueryInterface da interface IUnknown... ... 68

4.8 - Criação de uma instância de um objeto COM... ... 71

4.9 - Criação de um objeto COM utilizando fábrica de objetos... ... 74

4.10 - Armazenagem Estruturada... ... 76

4.11 - Objeto COM acessando armazenadores e conjuntos de dados... ... 77

4.12 - Utilização de “Moniker”... ... 80

4.13 - Acesso a objetos COM no mesmo processo do cliente... 83

4.14 - Acesso a objetos COM locais... ... 84

4.15 - Acesso a objetos COM remotos... ... 85

4.16 - ”Type library”... ... 88

4.17 - Interface IDispatch... ... 90

4.18 - Criação de objeto COM remoto usando CoCreateInstance... ... 92

4.19 - Criação de objeto COM remoto utilizando CoCreateInstanceEx... ... 94

(17)

4.20 - Criação de objeto COM remoto utilizando “Monikers”... ... 96

4.21 - OXID “resolver”... ... 99

4.22 - Interface IRemUnknown... 101

5.1 - Relacionamentos clientes e servidores... 106

5.2 - Múltiplos clientes e servidores com ORB ... ... 107

5.3 - Exemplo de IDL CORBA mapeada para C... ... 112

5.4 - Exemplo de uma definição de interface... ... 113

5.5 - Um cliente associado a uma implementação no servidor... ... 115

5.6 - Arquitetura CORBA... 116

5.7 - Invocação via “stubs” e DII... 119

5.8 - Estrutura típica do Adaptador de Objeto... ... 121

5.9 - Relacionamento entre Repositórios de Interface e Implementação... 123

5.10 - Relacionamento entre os protocolos inter-ORB... 125

5.11 - Arquitetura de Gerenciamento de Objeto (OMA)... ... 127

5.12 - Exemplo de um Serviço de Relacionamento... ... 130

5.13 - Exemplo de um Serviço de Persistência de Objeto... ... 132

5.14 - Exemplo de um gráfico de nomes... 138

5.15 - Interação entre o negociante e seus clientes... 142

5.16 - Arquitetura de Gerência de Objetos... 151

6.1- Número de interfaces necessárias para integração entre objetos... 161

6.2 - Mapeamento do IDL CORBA ... 163

6.3 - Herança de interface CORBA e DCOM... ... 165

6.4 - Ciclo de vida de um objeto CORBA ... ... 158

6.5 - Windows DNA ... 173

6.6 - Esquema geral de um “gateway” entre CORBA e DCOM ... 181

7.1 - Ambiente Java... ... 193

7.2 - RMI... ... 197

(18)

LISTA DE TABELAS

Pág.

5.1 - Capacidades da facilidade de Interface de Usuário... 145

5.2 - Capacidades da facilidade de Gerenciamento de Informação ... 146

5.3 - Capacidades da facilidade de Gerenciamento de Sistema ... 148

5.4 - Capacidades da facilidade de Gerenciamento de Tarefa ... 149

5.5 - Capacidades das facilidades Verticais... 140

6.1 - Similaridades e diferenças entre CORBA e DCOM ... 183

A.1 – Interfaces IDL ... ... 224

A.2 – Implementação do cliente ... ... 225

A.3 – Implementação do objeto servidor ... 227

(19)

LISTA DE SIGLAS E ABREVIATURAS

ACID - Atomic, Consistent, Isolated, Durable

ACL - Access Control List

ANSI - American National Standards Institute API - Application Programming Interface

ASCII - American Standard Code for Interchange of Information

BNF - Backus-Naur Form

BOA - Basic Object Adapter

CDR - Common Data Representation

CDS - Cell Directory Service CLSID - Class Identifier

COM - Component Object Model

CORBA - Common Object Request Broker Architecture DBMS - Data Base Management System

DCE - Distributed Computing Enviroment

DCE ESIOP - DCE Especific Environment Inter-ORB Protocol

DCE RPC - Distributed Computing Enviroment Remoto Procedure Call DCOM - Distributed Component Object Model

DFS - Distributed File Service

DHTML - Dynamic Hipertext Markup Language DII - Dynamic Invocation Interface

DLL - Dynamic Link Library

DNA - Windows Distributed interNet Applications DSOM - Distributed Object Model

DSPID - Dispatch Identifier

DOT - Distributed Object Technology DTS - Distributed Time Service

EBCDIC - Extended Binary-Coded Decimal Interchange Code

EJB - Enterprise JavaBeans

(20)

GIOP - General Inter-ORB Protocol GUI - Graphic User Interface GUID - Globally Unique Identifier HTML - Hipertext Markup Language HTTP - Hiper Text Transfer Protocol IDL - Interface Definition Language IID - Interface Identifier

IIOP - Internet Inter-ORB Protocol

IP - Internet Protocol

ISO - International Standards Organization

JDK - Java Developer´s Kit

JIT - Just-in-Time

JRMP - Java Remote Method Protocol

JVM - Java Virtual Machine

LAN - Local Area Network

LDAP - Lightweight Directory Access Protocol MIDL - Microsoft Interface Definition Language

MS - Microsoft

MSQM - Microsoft Message Queue Server MS RPC - Microsoft Remoto Procedure Call MTS - Microsoft Transaction Server NDR - Network Data Representation

OA - Object Adapter

Object RPC - Object Remoto Procedure Call OMA - Object Management Architecture

OMG - Object Management Group

ORB - Object Request Broker

OSF - Open Software Foundation

OSI - Open System Interconnect

POA - Portable Object Adapter

(21)

RFC - Request for Comment

RFP - Request for Proposal

RMI - Remote Method Invocation

RPC - Remote Procedure Call

SQL - Structured Query Language

TIO - Time Interval Object

TP - Transaction Processing

TCP - Transmission Control Protocol

TCP/IP - Transmission Control Protocol / Internet Protocol UDA - Universal Data Access

UDP - User Datagram Protocol

UDP/IP - User Datagram Protocol / Internet Protocol UML - Unified Modeling Language

URL - Uniform Resource Locators ou Universal Resource Locators

UTO - Universal Time Object

UUID - Universally Unique Identifier

VM - Virtual Machine

Referências

Documentos relacionados

 Para os agentes físicos: ruído, calor, radiações ionizantes, condições hiperbáricas, não ionizantes, vibração, frio, e umidade, sendo os mesmos avaliados

O Museu Digital dos Ex-votos, projeto acadêmico que objetiva apresentar os ex- votos do Brasil, não terá, evidentemente, a mesma dinâmica da sala de milagres, mas em

nhece a pretensão de Aristóteles de que haja uma ligação direta entre o dictum de omni et nullo e a validade dos silogismos perfeitos, mas a julga improcedente. Um dos

Equipamentos de emergência imediatamente acessíveis, com instruções de utilização. Assegurar-se que os lava- olhos e os chuveiros de segurança estejam próximos ao local de

Tal será possível através do fornecimento de evidências de que a relação entre educação inclusiva e inclusão social é pertinente para a qualidade dos recursos de

Com o objetivo de compreender como se efetivou a participação das educadoras - Maria Zuíla e Silva Moraes; Minerva Diaz de Sá Barreto - na criação dos diversos

Completado este horário (09h do dia 24 de fevereiro), a organização encerra os revezamentos e fecha a área de troca, não sendo mais permitida a entrada de nenhum atleta

17 CORTE IDH. Caso Castañeda Gutman vs.. restrição ao lançamento de uma candidatura a cargo político pode demandar o enfrentamento de temas de ordem histórica, social e política