• Nenhum resultado encontrado

Objetos Distribuídos

N/A
N/A
Protected

Academic year: 2021

Share "Objetos Distribuídos"

Copied!
35
0
0

Texto

(1)

1

argonavis.com.br

2

Objetos Distribuídos

Plataformas para Aplicações Distribuídas

2

Objetivos

Este capítulo aborda os seguintes assuntos

Revisão geral: orientação a objetos

Objetos distribuídos (Remote Method Invocation)

Padrões OMG

OMG CORBA

Soluções de RMI da Microsoft

Soluções de RMI da Sun

Messaging assíncrono

(2)

3

argonavis.com.br

O que é um objeto?

Objetos são

conceitos

que têm

identidade,

estado e

comportamento

Características de Smalltalk, resumidas por Allan Kay:

•Tudo(em um programa OO) são objetos

Um programaé um monte de objetos enviando mensagens uns aos outros

O espaço(na memória) ocupado por um objeto consiste de outros objetos

Todo objeto possui um tipo(que descreve seus dados)

Objetos de um determinado tipo podem receber as mesmas mensagens

4

Objetos (2)

Em uma linguagem orientada a objetos pura

Um número, uma letra, uma palavra, uma valor booleano, uma data, um registro, uma botão da GUI são objetos

Em Java, objetos são armazenados na memória de

heap

e manipulados através de uma

referência

(variável), guardada na

pilha

.

Têm estado(seus atributos)

Têm comportamento(seus métodos)

Têm identidade(a referência)

Valores

unidimensionais

não são objetos

em Java

Números, booleanos, caracteres são armazenados na pilhaTêm apenas identidade (nome da variável) e estado (valor

literal armazenado na variável); - dinâmicos; + rápidos Heap 001A 0010 001A 001F ref 23 5 Pilha

(3)

5

argonavis.com.br

O que é uma classe?

Classes são uma especificaçãopara objetos

Uma classe representa um tipo de dadoscomplexo

Classes descrevem

Tipos dos dados que compõem o objeto (o que podem armazenar)

Procedimentos que o objeto pode executar (o que podem fazer)

Casa boolean abrePorta(){} int numero Color cor

static String arquiteto

12

56

72

Classe

Instâncias da classe Casa (objetos)

Casa c1 = new Casa(); c1.numero = 12; c1.cor = Color.yellow; Casa c2 = new Casa(); c2.numero = 56; c2.cor = Color.red; Casa c3 = new Casa(); c3.numero = 72; c3.cor = Color.white; c3.abrePorta();

6

Ou seja...

Classes não são os objetos que representam

A planta de uma casa é um objeto, mas não é uma casa

Classes definem lógica estática

Relacionamentos entre classes são definidos na programação e não mudamdurante a execução

Relacionamentos entre objetos são dinâmicos e podem mudar. O funcionamento da aplicação reflete a lógica de relacionamento entre os objetos, e não entre as classes.

Classes não existem no contexto da execução

Uma classe representavários objetos que ocupam espaço na memória, mas ela não existe nesse domínio

A classe tem papel na criação dos objetos, mas não existe quando os objetos trocam mensagens entre si.

(4)

7

argonavis.com.br

Membros: atributos e métodos

Uma classe define uma estrutura de dados não-ordenada

Pode conter componentes em qualquer ordemOs componentes de uma classe são seus membros

Uma classe pode conter três tipos de componentes

Membros estáticos ou de classe:não fazem parte do "tipo"

Membros de instância:definem o tipo de um objeto

Procedimentos de inicializaçãoMembros estáticos ou de classe

Podem ser usados através da classe mesmo quando não há objetos

Não se replicam quando novos objetos são criadosMembros de instância

Cada objeto, quando criado, aloca espaço para eles

Só podem ser usados através de objetosProcedimentos de inicialização

Usados para inicializar objetos ou classes

8 (...) CDPlayer cd1; cd1 = new CDPlayer (); cd1.liga(); cd1.selecionaFaixa (3); cd1.executa(); (...)

Objetos possuem uma interface ...

Através da

interface*

é possível utilizá-lo

Não é preciso saber dos detalhes da implementação

O

tipo

(Classe) de um objeto determina sua interface

O tipo determina quais mensagenspodem ser enviadas

CDPlayer liga() desliga() selecionaFaixa(int) avança() retorna() executa() pausa() para() Interface Tipo

Classe Java (tipo)

Envio de mensagem Criação de objeto Referência Em Java Formato das mensagens que se pode enviar para um objeto

(5)

9

argonavis.com.br

... e uma implementação (oculta)

Implementação não interessa à quem

usa

objetos

Papel do usuário de classes

•não precisa sabercomo a classe foi escrita, apenas quais seus métodos, quais os parâmetros (quantidade, ordem e tipo) e valores que são retornados

usa apenas a interface(pública) da classe

Papel do desenvolvedor de classes

definenovos tiposde dados

•expõe, através de métodos, todas as funções necessárias ao usuário de classes, e ocultao resto da implementação

tem a liberdadede mudar a implementaçãodas classes que cria sem que isto comprometa as aplicações desenvolvidas pelo usuário de classes

10

Separação interface-implementação: maior reuso

Reuso depende de bom planejamento e design

Uma vez criada uma classe, ela deve representar uma

unidade de código útil para que seja reutilizável

Formas de uso e reuso

Uso e reuso de objetoscriados pela classe: mais flexívelComposição: a “é parte essencial de”b

Agregação: a “é parte de”bAssociação: a “é usado por”b

Reuso da interface da classe: pouco flexívelHerança: b “é”a(substituição pura)

ou b “é um tipo de”a(substituição útil, extensão)

Reuso de implementação

b a b a b a b a * Notação UML *

(6)

11

argonavis.com.br

Agregação, composição e associação

Composição: um tremé formado por locomotiva e vagões

Agregação: uma locomotiva temum farol (mas não vai deixar de ser uma locomotiva se não o tiver)

Associação: um tremusauma estrada de ferro (não faz parte do trem, mas ele depende dela)

Trem EstradaDeFerro Trem Locomotiva usa Vagão Locomotiva 1..* 1 Farol 12

Herança (reuso de interface)

Um carro

é um

veículo

Fuscas e Porsches

são

carros (e também veículos)

Veículo Carro Veículo Carro Fusca Porsche Veículo getVelocidade():float getPassageiros():int acelera() freia() representação UML representação UML detalhada de ‘Veículo’ representação UML simplificada (não mostra os métodos)

(7)

13 argonavis.com.br

Extensão e sobreposição

Extensão

Sobreposição

Carro Fusca Porsche Veículo Carro abastece() fechaPorta() abrePorta() abrePorta() getVelocidade() freia() Redefine os métodos implementados

previamente (Um objeto do tipo Fusca tem o mesmo númerode métodos de um objeto do tipo Carro

Acrescenta novos

métodos aos já herdados (Um objeto do tipo Carro tem maismétodos que um objeto do tipo Veiculo) Veículo getVelocidade():float getPassageiros():int acelera() freia() 14

Polimorfismo

Uso de um objeto no lugar de outro

pode-se escrever código que não dependa da existência prévia de tipos específicos

Figura

Círculo Quadrado Triângulo desenha()

desenha() desenha() desenha() Desenhista

geraFigura()

«usa»

Conhece apenas interface do tipo genérico (Figura) Chama "desenha()" sem saber qual objeto será desenhado. Objeto real pode ser "plugado"

durante a execução. Cada desenha() sobrepõe funcionamento original com algo diferente

Ligação da interface com o objeto real pode ser feita durante a execução

(8)

15

argonavis.com.br

Encapsulamento

Simplifica o objeto expondo apenas a sua interface

essencial

Código dentro de métodos é naturalmente encapsulado

Não é possível acessar interior de um método fora do objeto

Métodos que não devem ser usados externamente e

atributos podem ter seu nível de acesso controlado em

Java, através de modificadores

•private: apenas acesso dentro da classe

•package-private(default): acesso dentro do pacote*

•protected: acesso em subclasses

•public: acesso global

* não existe um modificador com este nome em Java. A ausência de um modificador de acesso deixa o membro com acesso package-private

16

Resumo de características OO

Abstração de conceitos

Classes, definem um tipo separando interface de implementação

Objetos: instâncias utilizáveis de uma classeHerança: "é um"

Aproveitamento do códigona formação de hierarquias de classes

Fixada na compilação (inflexível)Associação "tem um"

Consiste na delegação de operações a outros objetos

Pode ter comportamento e estrutura alterados durante execução

Vários níveis de acoplamento: associação, composição, agregaçãoEncapsulamento

Separação de interface e implementação que permite que usuários de objetos possam utilizá-los sem conhecer detalhes de seu códigoPolimorfismo

(9)

17

argonavis.com.br

Componentes

Composição de um ou mais objetos com interface

definida, meta-informação, etc. fácil de distribuir,

executar, implantar

Em Java, componentes são armazenados em JARs

Java Archive: extensão de ZIP com meta-informação

Podem ser formados por classes, arquivos, etc.

Podem ser executáveis, instaláveis ou bibliotecas

Ex: JavaBeans, EJB, aplicações Web, etc.

.NET oferece componentes similares

Assemblies: empacotados em DLLs, EXEs, CABs

Contém arquivo com meta-informação

Reutilizáveis, e com interface definida

18

Java ARchive

Para construir, pode-se usar WinZIP

Estrutura (META-INF e Manifest obrigatórios)

Exemplo de Manifest.mf para componente executável

Para executar

> java -jar abc.jar META-INF Manifest.mf pacote subpacote Classe Classe Classe Arquivo Main-class: com.empresa.exec.Executavel ... abc.jar

(10)

19

argonavis.com.br

Sistemas distribuídos: RMI e RPC

RMI e RPC são técnicas usadas para isolar, dos clientes e servidores, os detalhes da comunicação em rede

Utilizam protocolos padrão, stubs e interfaces

Lidam com diferentes representação de dados

RPC: Remote Procedure Call

Chamada procedural de um processo em uma máquina para um processo em outra máquina.

Permitem que os procedimentos tradicionais permanecam em múltiplas máquinas, porém consigam se comunicar

RMI: Remote Method InvocationÉ RPC em versão orientada a objetos

Permite possível chamar métodos em objetos remotos

Beneficia-se de características do paradigma OO: herança, encapsulamento, polimorfismo

20

Dificuldades em RMI

Para dar a impressão de comunicação local, implementações de RPC precisam lidar com várias dificuldades, entre elas

Marshallinge unmarshalling(transformação dos dados em um formato independente de máquina)

Diferenças na forma de representação de dadosentre máquinas

Implementações RMI tem ainda que decidir como lidar com particularidades do modelo OO:

Como implementar e controlar referências dinâmicas remotas (herançae polimorfismo)

Como garantir a não duplicação dos dados e a integridade do

encapsulamento?

Como implementar a coleta de lixo distribuída?

Como implementar a passagem de parâmetrosque são objetos?

Padrões diversos. Como garantir a interoperabilidade?OMG - Object Management Group!

(11)

21

argonavis.com.br

O que é a OMG

Um dos maiores

consórcios

do mundo na área de

tecnologia da informação

500-800* membros (grandes empresas de TI, empresas de telecom, universidades, governo, etc.)

Cria e mantém especificações que visam a

interoperabilidade

entre aplicações distribuídas

orientadas a objetos

Não desenvolve produtos: somente

especificações

Todas as especificações podem ser baixadas de graça

* O número de membros ativos varia

22

Alguns membros da OMG

? ABN AMRO Bank

? AT&T ? Attachmate ? Bank of America ? BBV Software Services AG ? BEA Systems ? Boeing

? Borland Software Corporation

? Carnegie Mellon University

? Cisco Systems

? Deutsche Telekom AG

? Ericsson

? Federal Reserve System

? Fujitsu ? GE Aircraft Engines ? Hewlett-Packard ? Hitachi ? IBM ? Lockheed Martin ? Microsoft ? Motorola ? NASA

? National Science Foundation

? NEC ? Nokia ? Oracle ? Rational Software ? Siemens AG ? Sun Microsystems ? Unisys ? US Postal Service ? Visionnaire (Brasil) ? W3 Consortium ... e vários outros.

(12)

23

argonavis.com.br

Padrões da OMG

MDA

- Model Driven Architecture

UML

- Unified Modelling Language

MOF

- Meta Object Facility

XMI

- XML Metadata Interface

CWM

- Common Warehouse Metamodel

CORBA

- Common ORB Architecture

24

MDA: Model Driven Architecture

Busca

separar

lógica de apresentação e lógica de

negócios da tecnologia da plataforma

Isola aplicações corporativas da evolução da tecnologia

•Controla todo o ciclo de vida da aplicação: análise, design, implementação, instalação, manutenção, evolução

Aplicações independentes de plataforma construidas

usando MDA podem executar em plataformas

abertas ou não

.NET, J2EE, Web Services, CORBA, ...

Padrões relacionados

(13)

25

argonavis.com.br

UML: Unified Modeling Language

Linguagem gráfica

independente de metodologia que

representa análise e design orientados a objeto

Define diversos diferentes tipos de diagramas

Quatro tipos de diagramas estruturais: classe, objeto, componente, deployment

Cinco tipos de diagramas comportamentais: casos de uso, atividade, seqüência, colaboração, estado

Três tipos de diagramas de representação de modelos: pacotes, modelos, subsistemas

26

MOF - Meta Object Facility

Padroniza um

meta-modelo

para análise e design

orientados a objetos

Estruturas similares em linguagens diferentes

Repositório para modelos e metamodelos

Permite que informações possam ser trocadas entre

meta-modelos diferentes

Modelos UML, que são baseados no meta-modelo MOF, podem ser compartilhados entre ferramentas usando XMI

(14)

27

argonavis.com.br

XMI - XML Metadata Interchange

Permite que modelos compatíveis com o MOF

possam ser compartilhados como conjuntos de dados

XML

(XML DataSet)

Informações do UML e MOF são incluídos em tags XML de acordo com esquema padrão

Podem ser

mapeados a XML

usando XMI:

Modelos de dados, expressos em CWM

Modelos de aplicações, expressos em UML

28

CWM

- Common Warehouse Metamodel

Padrão para representação de modelos de dados de

uma corporação

Engloba diferentes repositórios e armazéns de dados

Inclui meta-modelos para

Dados

Transformações

OLAP

Data mining

Funções de data-warehousing como processos e operações

(15)

29

argonavis.com.br

CORBA - Common ORB Architecture

ORB

=

O

bject

R

equest

B

roker: corretor de

requisição de objetos

Especificação para

interoperabilidade

de sistemas

Independente de

Plataforma,

Sistema operacional,

Linguagem de programação

Protocolo de rede

Composta por várias outras especificações menores

OMG IDL - Interface Definition Language

IIOP - Internet Inter-ORB Protocol

POA - Portable Object Adapter

CCM - CORBA Component Model

30

Arquitetura CORBA

Common Object Request Broker ArchitectureEspecificação da OMG - Object Management Group

Padrão para interoperabilidade de objetos distribuídos

Componentes

• IIOP- Internet Inter ORB Protocol

• ORB- Object Request Broker

OMG IDL- Interface Definition Language

• COS- CORBA Object Services (opcionais)

Principais características

• Transparência de localidade: não precisa saber onde estão objetos

• Independência de plataforma: objetos podem estar distribuídos em plataformas diferentes

• Neutralidade de linguagem: objetos se comunicam mesmo escritos em linguagens diferentes

(16)

31

argonavis.com.br

Comunicação CORBA: ORB

IDL

Abstração da interface do objeto remoto

Usada para gerarstubs e esqueletos

Stub(lado-cliente)

Transforma os parâmetros em formato independente de máquina (marshalling) e envia requisições para o objeto remoto através do ORB passando o nome do método e os dados transformados

ORB: barramento comum

ORB do cliente passa dados via IIOP para ORB do servidor

Esqueleto(lado-servidor)

Recebe a requisição com o nome do método, decodifica (unmarshals) os parâmetros e os utiliza para chama o método no objeto remoto

Transforma (marshals) os dados retornados e devolve-os para o ORB ORB void m() {...} ObjetoRemoto ORB srv-->m(); stub Cliente IIOP IIOP Internet Comunicação aparente IDL 32

Padrões associados a CORBA

OMG

IDL

- Interface Definition Language

IIOP

- Internet Inter-ORB Protocol

POA

- Portable Object Adapter

CCM

- Corba Component Model

(17)

33

argonavis.com.br

OMG IDL - Interface Definition Language

Linguagem usada para expressar a

interface de

operações

para um objeto

Usa sintaxe genérica (mas parecida com C++)

Isola a

interface

dos detalhes da implementação

(inclusive linguagem, tipos, sistema operacional,

tecnologia, etc.)

Usuário da interface ignora detalhes da implementação

Existem

mapeamentos de IDL

para todas as

principais linguagens de programação

C, COBOL, Lisp, C++, Ada, Java, Python, Smalltalk têm mapeamento padrão definido na OMG

34

IIOP - Internet Inter ORB Protocol

Um cliente acessa os

serviços de um objeto

local ou

remoto através do

ORB

O cliente não distingue objeto local de objeto remoto

IIOP viabiliza a

comunicação entre ORBs

diferentes,

oferecendo

transparência de localidade

Se o cliente chama um objeto remoto,é o ORB que sabe que ele é remoto(do ponto de vista do cliente, todos os objetos são locais) e usa IIOP para passar as informações de chamada e receber os resultados

IIOP abstrai as diferenças de plataforma. ORB converte objetos (marshalling) no formato IIOP e de volta para o formato nativo (unmarshalling)

(18)

35

argonavis.com.br

POA - Portable Object Adapter

Permite a criação de implementações de objetos que são portáteis entre diferentes fabricantes de ORBs

Mapeia abstrações de objetos CORBA às suas implementações verdadeiras

Podem ser configurados (transparente para cliente)

Podem ser aninhados

Fonte: http://www.iona.com POA Stub ORB Cliente Objeto Remoto 36

CCM - CORBA Component Model

Arquitetura para criar aplicações baseadas em componentes reutilizáveis que rodam em ambiente operacional de um servidor de aplicações, utilizando seus serviços

Arquitetura consiste de

Containers CCM (ambiente que oferece serviços aos componentes)

Componentes CORBA (sessão com estado e sem estado, entidade)

POA, ORB e serviços CORBA

Implementação padrão: Enterprise JavaBeans

Componente CCM Nomes Transações Segurança Persistência Servidor de Aplicações Container CCM Cliente Interage com

(19)

37

argonavis.com.br

OMA - Object Management Architecture

Oferece um ambiente comum

contendo serviços e facilidades

disponíveis aos objetos via ORB

Classifica os objetos em quatro categorias. São

acessíveis através de interfaces IDL

•CORBA Services: são serviços essenciais como registro de nomes, transações, segurança, persistência, etc.

•CORBA Facilities: serviços não essenciais porém genéricos (impressão, internacionalização)

•CORBA Domain Objects: serviços específicos para um determinado tipo de indústria

•Application Objects: serviços específicos de uma

aplicação. Esta categoria não faz parte da padronização.

38

Arquiteturas Microsoft

Apesar de participar ocasionalmente da OMG, a

Microsoft possui seus próprios modelos de

arquitetura para objetos distribuídos

COM - Component Object Model

DCOM - Distributed COM

COM+ / Microsoft Transaction Server

Plataforma .NET

Tecnologias restritas a plataformas Microsoft

Dentro da filosofia da OMG, que busca integração,

há capítulos da especificação dedicados à integração

entre CORBA e essas arquiteturas

(20)

39

argonavis.com.br

COM - Component Object Model

Oferece uma interface e ambiente que opera sobre

essa interface para permitir o reuso de objetos

Objetos COM podem ser escritos em qualquer linguagem

Clientes conectam-se apenas através de interfaces

Interfaces são escritas em Microsoft IDL (MIDL)

Objetos são registrados em serviços de nomes

Middleware gera código de adaptação da interface (stubs)

Middleware

void m() {...} Objeto COM srv-->m();

Cliente MIDL

stub Registry stub

Localiza objeto Java C++ 40 Processo Cliente

DCOM - Distributed COM

DCOM é uma versão de COM estendida para

funcionar em rede

Protocolo DCE RPC faz a comunicação

Comunicação é transparente a clientes COM

Objeto Local Processo Servidor Objeto Local COM Stub COM Proxy Local Proxy Remoto Aplicação Processo Servidor Objeto Local COM Stub RPC RPC Máquina local Máquina remota Interfaces MIDL

(21)

41

argonavis.com.br

COM+

COM+

(MTS - Microsoft Transaction Service)

oferece

serviços de middleware

para COM e DCOM

Suporte a transações locais (OLETx) ou distribuídas (XA)

Segurança declarativa (por papéis) ou programática

Controle de ciclo de vida, pooling de recursos, etc.

Baseado no modelo de componentes e containers

Container para requisição de objetos (ORB baseado em COM/DCOM)

Container Web (Internet Information Server)

COM+ tem conceitos similares ao CCM

Promove arquitetura em três camadas (apresentação, negócios e dados) baseada em componentes e serviços

Não suporta componentes de entidade (apenas de sessão)

42

Java RMI

Outra solução popular de comunicação distribuída

através de objetos remotos que não é CORBA é o

Java Remote Method Invocation

Consiste de

Um protocolo RPC: Java Remote Method ProtocolUm registro de objetos: RMI Registry

Uma APIincluindo uma especificação para definição de interfaces (similar a IDL, mas usando Java)

Java RMI tem a vantagem de ser mais simples para

desenvolvedores de sistemas 100% Java

(22)

43

argonavis.com.br

Arquitetura Java RMI

A arquitetura Java RMI pode ser comparada com a arquitetura CORBA

Usa um protocolo: JRMP- Java Remote Method Protocol

Possui um serviço de registro de nomes: RMI Registry- que funciona de forma centralizada e não hierárquica

Possui uma interface descrevendo as operações remotas: uma extensão de java.rmi.Remoteé base para sua interface "IDL"

Principais características

• Centralizada: cliente tem que saber em que servidor está o objeto remoto (não é transparente quanto à localização)

• Independente de plataforma: por ser 100% Java (não suporta comunicação com objetos escritos em outras linguagens)

• Suporta transferência de bytecode: objetos remotos podem ser transferidos fisicamente para o cliente (por ser 100% Java)

• Suporta coleta de lixo distribuída

• Suporta passagem de parâmetros por valor e por referência

44

Comunicação RMI

Interface Remote

Abstração da interface do objeto remoto

Usada para gerarstubs e esqueletos

Stub(lado-cliente) Transforma parâmetros

(serializados) e envia requisição pela rede (sockets)

Esqueleto(lado-servidor)

Recebe a requisição, desserializa os parâmetros e chama o método no objeto remoto. Depois serializa objetos retornados.

RMIRegistry

Servidor registra o objeto usando java.rmi.Naming.bind()

Cliente recupera o objeto usando java.rmi.Naming.lookup() RMIRegistry void m(){...} ObjetoRemoto srv.m(); stub Cliente JRMP Comunicação aparente void m(); java.rmi.Remote ObjRemote lookup() bind()

(23)

45

argonavis.com.br

Java RMI sobre IIOP

Java RMI sobre IIOP

é a solução da Sun para

integração entre o mundo RMI e o mundo CORBA

Mesmo modelo de desenvolvimento que Java RMI (mais fácil para programadores Java)

•Integração e compatibilidade com o modelo CORBA (pode comunicar-se com serviços e objetos CORBA ou

accessíveis via CORBA)

Java RMI suporta os mesmos padrões que CORBA

Serviço de nomes COS Naming

Linguagem para definição de interfaces OMG IDL ou Java

Protocolo RPC: IIOP

46

Arquitetura Java RMI sobre IIOP

Modelo de programação RMI com comunicação CORBAUsa protocolo IIOP

Comunica-se através de ORB e IIOP

A interface java.rmi.Remoteé base para sua interface remota

Gera IDLse necessário

Principais características

• Transparência de localidade: não precisa saber onde estão objetos

• Independência de plataforma: objetos podem estar distribuídos em plataformas diferentes

• Neutralidade de linguagem é possível: pode se comunicar com objetos escritos em linguagens diferentes (gera IDL)

• Suporta passagem de parâmetros por valor e por referência • Sem suporte à transferência de bytecode

• Sem suporte à coleta de lixo distribuída

(24)

47 argonavis.com.br

Comunicação RMI-IIOP

Interface RemoteAbstração da interface do objeto remoto

Usada para gerarstubs e esqueletos

Stub(lado-cliente) Transforma parâmetros

(serializados) em formato independente

de máquina e envia requisição pela rede através do ORB

ORB: barramento comum

ORB do cliente passa dados via IIOP para ORB do servidor

Esqueleto(lado-servidor)

Recebe a requisição do ORB e desserializa os parâmetros

Chama o método do objeto remoto

Transforma os dados retornados e devolve-os para o ORB void m() {...} ObjetoRemoto srv.m(); Cliente Comunicação aparente void m(); java.rmi.Remote ObjRemote

ORB stub ORB

IIOP IIOP

Internet

48

Messaging: comunicação assíncrona

Método de comunicaçãoentre componentes ou aplicações

Arquitetura peer-to-peercom serviço centralizadopara repasse de mensagens recebidas e enviadas

Clientes e servidores enviam e recebem mensagens para canais administrados por serviço central de mensagens (MOM)

Comunicação distribuída com acoplamento fraco

Interface genérica: MOM ignora conteúdo e repassa qualquer coisa. Formato do conteúdo deve ser conhecido pelas partes

Assíncrona: Comunicação pode ocorrer mesmo que o cliente e servidor não estejam disponíveis ao mesmo tempo

MOM C S S C C C

(25)

49

argonavis.com.br

Message-oriented Middleware (MOM)

Sistemas de messaging são freqüentemente chamados de

Message-Oriented Middleware

(

MOM

)

Conceito não é novo: já existiam há algum tempo em implementações proprietárias (e incompatíveis)

Java Message Service API: solução independente de fabricante para acessar serviços MOM por clientes Java

Alguns produtos MOM compatíveis com JMS:

•Open source: JBossMQ, OpenJMS, JORAM

IBM MQSeries, IPlanet MQ, Bea WebLogic, HP-MS, Progress SoniqMQ

Mais em: java.sun.com/products/jms/

50

Messaging vs. RMI/RPC

Messaging

Mensagens são representadas como eventos

Interface genérica(reutilizada em aplicações diferentes)

Arquitetura centralizada(tudo passa pelo MOM)

Serviços de nomes localizam canais de comunicação

(destinos)

RMI/RPC (Corba, Java RMI, etc.)

Mensagens são representadas como chamadaspara métodos remotos

Cada aplicação se comunica através de interface definida

Pode ser descentralizado(rede de ORBs ligados por IIOP)

(26)

51

argonavis.com.br MOM

Messaging vs. RMI/RPC

Sistema de Messaging com paradigma pub/sub

Protocolo comum:

mensagem

Sistema RMI/RPC (Java RMI ou CORBA)

Protocolo comum:

interface dos objetos Message Broker ORB srv.metodo(); stub Cliente ORB srv.metodo(); stub Cliente ORB skeleton metodo() { // ... } Objeto Remoto Inter-ORB Protocol mom.publica(); Remetente onMessage(msg) { . . .} Destinatário msg msg inscreve -se notifica 52

Web Services

Ambiente de computação distribuída (DCE) que

utiliza

XML

em todas as camadas

No formato de dados usado na comunicação

Na interfaceusada para descrever as operações suportadas

Na aplicação usada para registrar elocalizar serviços

Serviços são transportados principalmente via HTTP

Podem também utilizar outros protocolos populares

Web Services visam comunicação entre

máquinas

Serviços podem ser implementados usando CGI (com C, Perl, etc.), ASP, PHP, servlets, JSP, CFML, etc.

Acesso é feito via clientes HTTP (ou de outros protocolos)

(27)

53

argonavis.com.br

Serviços Web elementares

Clientes HTTP usam o método POST para

enviar

dados

Tipicamente usado por browsers para enviar dados de formulários HTML e fazer upload de arquivos

Exemplo

Formulário HTML

Requisição POST gerada pelo browser para o servidor

POST /cgi-bin/catalogo.pl HTTP/1.0

Content-type: text/x-www-form-urlencoded

Content-length: 15

isbn=2877142566

<FORM ACTION="/cgi -bin/catalogo.pl" METHOD="POST">

<H3>Consulta preço de livro</H3>

<P>ISBN: <INPUT TYPE="text" NAME=" isbn"> <INPUT TYPE="Submit" VALUE="Enviar"> </FORM> Cabeçalho HTTP Mensagem(corpo da requisição) Linha em branco 54

Enviando XML sobre POST

Você pode criar um

servico RPC

simples (um Web Service!)

trocando mensagens XML via HTTP POST!

•Defina esquemaspara as mensagens de chamada e resposta

•Escreva clienteque envie requisições POST para servidor Web

•Escreva uma aplicação Web(JSP, ASP, PHP, servlet, CGI)

POST /ISBNService.jsp HTTP/1.0

Content -type: text/xml Content -length: 90 <chamada>

<funcao>

<nome>getPrice</nome> <param>2877142566</param> </funcao>

</chamada>

HTTP/1.1 200 OK Content -type: text/xml Content -length: 77 <resposta> <funcao> <param>19.50</param> </funcao> </resposta> ISBNService.jsp ISBNClient ISBNQuery getPrice() 2877142566 19.50 BD 1 2 3 4 gera requisição gera resposta

(28)

55

argonavis.com.br

XML-RPC

Especificação para RPC em XML via HTTP POST

Projetada para ser a solução mais simples possível

Várias implementações: veja www.xml-rpc.com

Exemplo anterior implementado com XML-RPC

(cabeçalhos HTTP omitidos)

<methodCall>

<methodName>getPrice</methodName> <params> <param> <value><string>2877142566</string></value> </param> </param> </methodCall> <methodResponse> <params> <param> <value><double>19.5</double></value> </param> </param> </methodResponse> Resposta Requisição 56

Arquitetura de Web Services: papéis

Provedor de serviços

Oferece serviços, alguns dos quais podem ser Web Services

Registro de serviços

Catálogo de endereços: repositório central que contém informações sobre web services

Cliente de serviços

Aplicação que descobre um web service, implementa sua interface de comunicação e usa o serviço

Provedor de serviços Registro UDDI Cliente 1 2 3 4 5 publica procura mapeia interface usa acha SOAP WSDL

(29)

57

argonavis.com.br

Arquitetura de Web Services: camadas

Serviços oferecidos via plataforma Web (HTTP) ou via SMTPProtocolo, interface de comunicação e registro são todos definidos em

esquema XML padronizado

Componentes

• SOAP- Simple Object Access Protocol

• UDDI- Universal Discovery, Description and Integration (registry)

• WSDL- Web Service Description Language

Principais características

• Interoperabilidade: permite a comunicação entre arquiteturas diferentes (usa um formato de mensagem padrão)

• Transparência de localidade: não precisa saber onde estão objetos

• Independência de plataforma: objetos podem estar distribuídos em plataformas diferentes

• Neutralidade de linguagem: objetos se comunicam mesmo escritos em linguagens diferentes

58

Comunicação SOAP: ORB

WSDL

Contém, entre outras informações, descrição da interface do objeto remoto

Usada para gerarcódigo do cliente e/ou servidor

Stub(lado-cliente)

Transforma os tipos e coloca os dados em um envelope SOAP

Recebe a resposta do servidor, abre o envelope e remove os dados.

Registro UDDI

Onde cliente obtém descrição do serviço (ou localização do WSDL)

Handler(lado-servidor)

Recebe mensagem em envelope SOAP, extrai parâmetros (unmarshalling), constrói a chamada do método

Chama o método, obtém resposta, coloca em envelope SOAP (marshalling) e devolve a mensagem.

void m() {...} Serviço J2EE srv.m(); stub Cliente .NET HTTP Registro UDDI WSDL SOAP

(30)

59

argonavis.com.br

SOAP

S

imple

O

bject

A

ccess

P

rotocol

Protocolo padrão baseado em XML para trocar

mensagens

entre aplicações

SOAP não é um protocolo RPC, mas um par de mensagens SOAP pode ser usado para esse fim

Transporte pode ser HTTP, SMTP ou outro

Mensagens podem conter qualquer coisa (texto, bytes)

É extensível (mecanismo de RPC, por exemplo, é extensão)

Envelope Attachment Attachment XML XML Mensagem SOAP Header Body Envelope Estrutura de uma mensagem SOAP Conteúdo baseado em esquema do usuário ... 60

Simples requisição SOAP-RPC

Principal aplicação do SOAP, hoje, é RPC sobre HTTP

Esquema do corpo da mensagem lida com RPC

POST /xmlrpc -bookstore/bookpoint/BookstoreIF HTTP/1.0 Content -Type: text/xml; charset="utf -8"

Content -Length: 585 SOAPAction: "" <?xml version="1.0" encoding="UTF -8"?> <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"

xmlns:xsi="http://www.w3.org/2001/XMLSchema -instance"

xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/"

env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" > <env:Body>

<ans1:getPrice xmlns:ans1="http://mybooks.org/wsdl"> <String_1 xsi:type="xsd:string">2877142566</String_1> </ans1:getPrice>

</env:Body> </env:Envelope>

(31)

61

argonavis.com.br

Resposta SOAP-RPC

HTTP/1.1 200 OK

Content -Type: text/xml; charset="utf -8" SOAPAction: ""

Date: Thu, 08 Aug 2002 01:48:22 GMT

Server: Apache Coyote HTTP/1.1 Connector [1.0] Connection: close

<?xml version="1.0" encoding="UTF -8"?>

<env:Envelope

xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"

xmlns:xsd="http://www.w3.org/2001/XMLSchema"

xmlns:xsi="http://www.w3.org/2001/XMLSchema -instance"

xmlns:enc="http://schemas.xmlsoap.org/soap/encoding/"

xmlns:ns0="http://mybooks.org/types"

env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" > <env:Body>

<ans1:getPriceResponse xmlns:ans1="http://mybooks.org/wsdl"> <result xsi:type="xsd:decimal">19.50</result>

</ans1:getPriceResponse> </env:Body> </env:Envelope> Resposta (Preço) 62

Descrição de um serviço RPC: WSDL

Para saber usar um Web Service, é preciso

Saber o que um serviço faz (quais as operações?)

Como chamar suas operações (parâmetros? tipos?)

Como encontrar o serviço (onde ele está?)

W

eb

S

ervices

D

escription

L

anguage

•Documento XML de esquema padrão que contém todas as informações necessárias para que um cliente possa utilizar um Web Service

Define informações básicas (operações, mapeamentos, tipos, mensagens, serviço) e suporta extensões

Tem basicamente mesmo papel que linguagens IDL

usadas em outros sistemas RPC

(32)

63

argonavis.com.br

.NET

.NETé a nova arquitetura da Microsoft para aplicações locais e distribuídas

Comunicação de rede baseada em Web Services(e não mais em protocolos RPC proprietários): ainda é comum usar COM/DCOM mas indiretamente através de wrappers

Compiladores .NET traduzem código de várias linguagens diferentes para bytecode comum(MSIL: Microsoft Intermediate Language) que é independente de versões do Windows*

Plataforma .NET é baseada em máquina virtual(CLR: Common Language Runtime) que executa bytecode

Gerencia aplicações: memória (coleta de lixo), threads, acesso remoto

Principal linguagem: C# tem sintaxe quase idêntica a Java. Suporta tratamento de exceções, referências, interfaces, etc.

Framework inclui ferramentas (Visual Studio) e S.O. (Windows)

* MSIL, CLR e CLI são especificações publicadas pelo consórcio ECMA. Uma versão de .NET open-source e multi-plataforma está em desenvolvimento (Mono)

64

Arquitetura

(33)

65

argonavis.com.br

.NET: Linguagens suportadas

Todas as linguagens abaixo podem ser compiladas para bytecode compatível com a máquina virtual CLR

Aplicações podem ser construídas por desenvolvedores escrevendo código em linguagens diferentes e gerando os mesmos binários

Linguagem compartilham gerenciamento de memória, recursos (coleta de lixo) e tipos de dados (CTS: Common Type System). Objeto pode usar ou herdar de objeto escrito em outra linguagem

APL Fortran Pascal

C++ Haskell Perl

C# Java 1.4 (J++) Python COBOL Microsoft JScript RPG Component Pascal Mercury Scheme Curriculum Mondrian SmallTalk Eiffel Oberon Standard ML

Forth Oz Microsoft Visual Basic

66

Java vs. .NET

Independência de plataforma

Máquina Virtual Java (JVM): roda em todas as plataformas mais populares (Windows, Mac, Unix, palmtops, celulares, cartões inteligentes) e browsers

Máquina Virtual Microsoft (CLR): roda nas plataformas Microsoft (Windows para desktop, servidor, palmtops, celulares, cartões) e browsers (Internet Explorer)

Independência de linguagem e tipos de dados

Plataforma Java: executa bytecode gerado a partir de código Java (outras linguagens, como Python, geram bytecode Java, mas Sun não suporta). Busca integração com outras linguagens via CORBA

Plataforma .NET: bytecode pode ser gerado a partir de diversas linguagens. Modelo de dados é compartilhado e podem-se misturar objetos escritos em linguagens diferentes.

(34)

67

argonavis.com.br

CORBA (J2EE) vs. .NET

Dependência de fabricante

CORBA: solução de integração aberta: suportada por cerca de 700 empresas independentes

.NET: solução da Microsoft para integração entre diferentes linguagens e plataformas Microsoft

Disponibilidade

.NET ainda depende muito de integração com sistemas existentes. Serviços prometidos ainda não existem.

CORBA: implementações em operação de vários fabricantes.

Performance e produtividade

Benchmarks imparciais (theserverside.com) apontam vantagens na produtividade e performance nas aplicações .NET. Isto é facilitado pela disponibilidade de ferramentas, múltiplas linguagens .NET, uso de arquiteturanativa e acoplada e capacidade de integração do fabricante com seu próprio sistema operacional

68

Comparação entre soluções de RPC

Registro Descrição de Serviços Transporte

Java RMI

CORBA RMI / IIOP DCOM

RMI Registry

COS Naming JNDI SCM

Java

OMG IDL OMG IDLJava ou MIDL

Java RMI

IIOP IIOP (~DCE RPC)MS RPC

Web Services*

UDDI WSDL SOAP

* Vale também para.NET usando apenas Web Services como solução de comunicação em rede. Na prática, é mais comum, hoje, usar .NET sobre COM/DCOM através de wrappers (Runtime COM Wrapper)

(35)

69

argonavis.com.br

Fontes

[1] Helder da Rocha.J100 - Programação Orientada a Objetos usando Java.

2003. http://www.argonavis.com.br/cursos/java/j100

[2] Object Management Group. http://www.omg.org

[3]Helder da Rocha.J433 - Minicurso de Aplicações Distribuídas em Java.

2000. http://www.argonavis.com.br/cursos/java/j433

[4] David Flanagan et al.Java Enterprise in a Nutshell, 2nd. edition. Abril

2002 (O'Reilly).

[5] Microsoft. Understanding the .NET Framework. Microsoft Corporation.

http://msdn.microsoft.com/netframework/using/understanding/netframe work/default.aspx

[6] Wei Huang. Comparison between .NET and CORBA. OGI, 2003.

http://www.cse.ogi.edu/class/cse515/middleware/corba-net.pdf

70

Plataformas para Aplicações Distribuídas

Versão 1.0 © 2003, Helder da Rocha

Referências

Documentos relacionados

Figura 11 - Os gráficos mostram os valores do tempo para geração do pico de trombina dos pacientes do estudo antes do início da quimioterapia (basal), no momento da febre (febre) e

Nenhuma empresa, possuindo ou não empregados, poderá contribuir a este título com importância inferior a R$ 59,00 (cinquenta e nove reais), valor este que sofrerá a incidência das

Apenas foram submetidos aos protocolos de provocação e/ou dessensibilização com AAS, os pacientes com asma controlada e, portanto, os pacientes que tinham asma grave não

Note que, para capturar a variação ocorrida no dia 26, tomamos como base a data da negociação anterior, o dia 21 de fevereiro.Porém, nas últimas três semanas os mercados

Anexo 1 – Classificação Geral no Processo Seletivo 2016 C L A S S IF IC A Ç Ã O F IN A L NOME DO CANDIDATO ETAPA 1 PROVA ESCRITA (Eliminatória) RESULTADO

Nesse estudo, todos os pacientes foram selecionados em centros de saúde sem qualquer relação com centros de atendimento odontológico e após análise ajustada para

As variáveis estudadas foram: idade, sexo, escolaridade, estado civil, renda e classe social, tempo de trabalho, peso, estatura, circunferência da cintura, índice de massa

Em três pontos os valores saíram dos limites de controle, em duas delas para baixo, o que seria bom para a empresa e para os produtores, tendo em vista que valores