sistemas de objetos - stoa social · sintaxe inspirada em c++ fortemente tipada corba. idl ... doa:...
TRANSCRIPT
Sistemas de Objetos Distribuídos
Alex CarneiroCarlos Eduardo Elmadjian
Karina Awoki
Prof. Fabio KonPOO 2016.1
Sistemas distribuídos
● Componentes de software autônomos
● Comunicação via rede
● Ausência de memória compartilhada
2
CONCEITOS
Sistemas distribuídos
● Componentes de software autônomos
● Comunicação via rede
● Ausência de memória compartilhada
● Coordenação descentralizada
2
CONCEITOS
Sistemas distribuídos
● Componentes de software autônomos
● Comunicação via rede
● Ausência de memória compartilhada
● Coordenação descentralizada
● Processamento paralelo
2
CONCEITOS
Sistemas distribuídos
● Requisitos não funcionais:
○ tolerância a falhas
○ sistema aberto
3
CONCEITOS
Sistemas distribuídos
● Requisitos não funcionais:
○ tolerância a falhas
○ sistema aberto
○ escalabilidade
3
CONCEITOS
Sistemas distribuídos
● Requisitos não funcionais:
○ tolerância a falhas
○ sistema aberto
○ escalabilidade
○ hardware heterogêneo
3
CONCEITOS
Sistemas distribuídos
● Requisitos não funcionais:
○ tolerância a falhas
○ sistema aberto
○ escalabilidade
○ hardware heterogêneo
● Encapsulamento da complexidade via middleware
3
CONCEITOS
Sistemas distribuídos
● Requisitos não funcionais:
○ tolerância a falhas
○ sistema aberto
○ escalabilidade
○ hardware heterogêneo
● Encapsulamento da complexidade via middleware
● Transparência para o usuário
3
CONCEITOS
Objetos distribuídos
● Localizados em diferentes dispositivos
● Comunicação via rede
● Referenciação complexa
4
CONCEITOS
Objetos distribuídos
● Localizados em diferentes dispositivos
● Comunicação via rede
● Referenciação complexa
● Troca de mensagens lenta
4
CONCEITOS
Objetos distribuídos
● Localizados em diferentes dispositivos
● Comunicação via rede
● Referenciação complexa
● Troca de mensagens lenta
● Podem executar operações em paralelo
4
CONCEITOS
Objetos distribuídos
● Localizados em diferentes dispositivos
● Comunicação via rede
● Referenciação complexa
● Troca de mensagens lenta
● Podem executar operações em paralelo
● Suscetível a ataques
4
CONCEITOS
Middleware
● RPC - Chamada Remota de Procedimento (Remote Procedure
Call)
● ORB - Agente de Requisição de Objetos (Object Request Broker)
6
CONCEITOS
Middleware
● RPC - Chamada Remota de Procedimento (Remote Procedure
Call)
● ORB - Agente de Requisição de Objetos (Object Request Broker)
● MOM - Middleware Orientado a Mensagem (Message Oriented
Middleware)
6
CONCEITOS
Middleware
● RPC - Chamada Remota de Procedimento (Remote Procedure
Call)
● ORB - Agente de Requisição de Objetos (Object Request Broker)
● MOM - Middleware Orientado a Mensagem (Message Oriented
Middleware)
● TP - Monitor de Processamento de Transações (Transaction
Processing Monitor)
6
CONCEITOS
RPC - Remote Procedure Call
● Comunicação entre cliente e servidor
● Troca de mensagens sincronizada
7
CONCEITOS
RPC - Remote Procedure Call
● Comunicação entre cliente e servidor
● Troca de mensagens sincronizada
● Transparência de acesso
7
CONCEITOS
RPC - Remote Procedure Call
● Empacota dados usando um processo de serialização
● Usa protocolo TCP ou UDP
8
Cliente Servidormétodo-----------
arg 1-----------
arg 2
return-----------
CONCEITOS
ORB (Object Request Broker)
● Comunicação entre objetos
● Transparência de acesso
● Transparência de localização
9
CONCEITOS
ORB (Object Request Broker)
● Comunicação entre objetos
● Transparência de acesso
● Transparência de localização
● Usado pela arquitetura CORBA
9
ORB
Obj 1 Obj 2
CONCEITOS
1990’s
10
PANORAMA
● Remote Procedure Calls (RPCs)
● CORBA 1.0
● CORBA 2.0
● DCOM - Microsoft
● Java Remote Method Invocation (RMI/J2EE)
2000’s
11
PANORAMA
● COM+ - Microsoft
● CORBA 3.0
● Sucesso no mercado corporativo
● Aperfeiçoamento das RPCs
2000’s
11
PANORAMA
● COM+ - Microsoft
● CORBA 3.0
● Sucesso no mercado corporativo
● Aperfeiçoamento das RPCs
● Frameworks para linguagens (DRuby, Pyro...)
CORBA
12
● Common Object Request Broker Architecture
● Colaboração entre sistemas heterogêneos
● Padrão aberto orientado a objetos
CORBA
12
● Common Object Request Broker Architecture
● Colaboração entre sistemas heterogêneos
● Padrão aberto orientado a objetos
● Interface Definition Language (IDL) para especificação
CORBA
12
● Common Object Request Broker Architecture
● Colaboração entre sistemas heterogêneos
● Padrão aberto orientado a objetos
● Interface Definition Language (IDL) para especificação
● Object Request Broker (ORB) para mediação
IDL
15
● Puramente declarativa e orientada a objetos
● Diversos mapeamentos (ADA, C, C++, COBOL, Java,
Python, Ruby, Smalltalk...)
CORBA
IDL
15
● Puramente declarativa e orientada a objetos
● Diversos mapeamentos (ADA, C, C++, COBOL, Java,
Python, Ruby, Smalltalk...)
● Sintaxe inspirada em C++
CORBA
IDL
15
● Puramente declarativa e orientada a objetos
● Diversos mapeamentos (ADA, C, C++, COBOL, Java,
Python, Ruby, Smalltalk...)
● Sintaxe inspirada em C++
● Fortemente tipada
CORBA
IDL - interfaces
17
● Interfaces são mapeadas para classes
● Herança se dá por meio delas (inclusive múltipla)
CORBA
IDL - interfaces
17
● Interfaces são mapeadas para classes
● Herança se dá por meio delas (inclusive múltipla)
● Não é possível usar overloading de operações
CORBA
IDL - interfaces
17
● Interfaces são mapeadas para classes
● Herança se dá por meio delas (inclusive múltipla)
● Não é possível usar overloading de operações
● Não é possível usar overriding de operações
CORBA
IDL - interfaces
17
● Interfaces são mapeadas para classes
● Herança se dá por meio delas (inclusive múltipla)
● Não é possível usar overloading de operações
● Não é possível usar overriding de operações
● Declaração de atributos geram getters e setters
CORBA
IDL - operações
18
● Operações são síncronas (exceção: oneway)
● O tipo de retorno sempre deve ser declarado
CORBA
IDL - operações
18
● Operações são síncronas (exceção: oneway)
● O tipo de retorno sempre deve ser declarado
● Podem conter uma lista de exceções
CORBA
IDL - operações
18
● Operações são síncronas (exceção: oneway)
● O tipo de retorno sempre deve ser declarado
● Podem conter uma lista de exceções
● Atributos são direcionais:
CORBA
IDL - operações
18
● Operações são síncronas (exceção: oneway)
● O tipo de retorno sempre deve ser declarado
● Podem conter uma lista de exceções
● Atributos são direcionais:
○ in
CORBA
IDL - operações
18
● Operações são síncronas (exceção: oneway)
● O tipo de retorno sempre deve ser declarado
● Podem conter uma lista de exceções
● Atributos são direcionais:
○ in
○ out
CORBA
IDL - operações
18
● Operações são síncronas (exceção: oneway)
● O tipo de retorno sempre deve ser declarado
● Podem conter uma lista de exceções
● Atributos são direcionais:
○ in
○ out
○ inout
CORBA
Exemplo
19
module Zoo {interface Animal {
attribute string nome;attribute short idade;string coma(in string comida);
};
interface Capivara : Animal {string nade(in string rio);
};
interface Preguica : Animal {void durma(in string arvore);
};};
CORBA
Vamos ver isso na prática
20
DEMO
● Demo de R2CORBA (Ruby)
● Demo de omniORBpy (Python)
● Demo de Distributed Ruby (DRb)
Histórico
● No princípio, SOA era vista como uma reinvenção de DOA
com um apelo de marketing.
21
COMPARAÇÃO ENTRE SOA E DOA
Histórico
● No princípio, SOA era vista como uma reinvenção de DOA
com um apelo de marketing.
● Este entendimento era fundamentado pelas semelhanças
entre os conceitos dos dois padrões.
21
COMPARAÇÃO ENTRE SOA E DOA
Semelhanças
● SOA e DOA definem padrões de software para sistemas
distribuídos, onde diferentes componentes de software
(serviços ou objetos) são executadas em máquinas remotas.
22
COMPARAÇÃO ENTRE SOA E DOA
Semelhanças
● SOA e DOA definem padrões de software para sistemas
distribuídos, onde diferentes componentes de software
(serviços ou objetos) são executadas em máquinas remotas.
● O objetivo de ambos é especificar como um software pode
gerar e atender demandas em outro software remoto.
22
COMPARAÇÃO ENTRE SOA E DOA
Semelhanças
● SOA e DOA utilizam linguagens específicas para a definição
das interfaces, e. g. WSDL ou IDL, e um protocolo de
comunicação independente da linguagem, e. g. SOAP ou IIOP.
23
COMPARAÇÃO ENTRE SOA E DOA
Semelhanças
● SOA e DOA utilizam linguagens específicas para a definição
das interfaces, e. g. WSDL ou IDL, e um protocolo de
comunicação independente da linguagem, e. g. SOAP ou IIOP.
● As duas abordagens permitem interoperabilidade entre
diferentes plataformas de hardware e software.
23
COMPARAÇÃO ENTRE SOA E DOA
Diferenças
SOA: utiliza linguagens flexíveis para descrição das interfaces
como WDSL.
25
COMPARAÇÃO ENTRE SOA E DOA
DOA: utilizadas linguagens que são compiladas com o software
para descrição das interfaces, como IDL.
Diferenças
SOA: comunicação entre serviços baseada em troca de
mensagens.
26
COMPARAÇÃO ENTRE SOA E DOA
DOA: comunicação entre componentes de software baseada na
chamada de métodos.
Diferenças
SOA: identifica as interfaces tipicamente por URIs para cada
serviço que recebe as requisições.
27
COMPARAÇÃO ENTRE SOA E DOA
DOA: identifica as interfaces de forma mais rígida, e. g. CORBA
IORs ou referências a objetos.
Diferenças
SOA: consiste de aplicações independentes que conhecem
apenas as interfaces para troca de mensagens.
28
COMPARAÇÃO ENTRE SOA E DOA
DOA: pode ser visto como uma única aplicação que invoca
métodos de objetos instanciados remotamente.
Conclusão
O modelo de sistemas de objetos distribuídos permitiu o
desenvolvimento de sistemas distribuídos entre os anos e 1990 e
2000.
29
Conclusão
Apesar de forçar o acoplamento entre os softwares cliente e
servidor, existem algumas flexibilidades com o uso de DOA, por
exemplo a substituição de software servidor sem a necessidade de
alteração do software cliente.
30
Conclusão
O padrão DOA tem sido substituído pelo SOA, porém é possível
aproveitar sistemas funcionais desenvolvido com DOA através de
Façades orientada a serviços que escondem as implementações
DOA e apenas oferecem interfaces compatíveis com SOA.
31
Referências
1. Saleh, K., Probert, R., & Khanafer, H. (1999). The distributed object computing paradigm: concepts and
applications. Journal of Systems and Software, 47(2), 125-131.
2. Özsu, M. T., Dayal, U., & Valduriez, P. (1992). An Introduction to Distributed Object Management. In IWDOM (pp.
1-24).
3. Baker, S., & Dobson, S. (2005). Comparing service-oriented and distributed object architectures. In On the Move
to Meaningful Internet Systems 2005: CoopIS, DOA, and ODBASE (pp. 631-645). Springer Berlin Heidelberg.
4. Aleksy, M., Korthaus, A., & Shader M. (2005). Implementing distributed systems with Java and CORBA. Springer
Berlin Heidelberg.
5. http://www.corba.org
32