Sistemas de Objetos - Stoa Social · Sintaxe inspirada em C++ Fortemente tipada CORBA. IDL ... DOA:...

99
Sistemas de Objetos Distribuídos Alex Carneiro Carlos Eduardo Elmadjian Karina Awoki Prof. Fabio Kon POO 2016.1

Transcript of Sistemas de Objetos - Stoa Social · Sintaxe inspirada em C++ Fortemente tipada CORBA. IDL ... DOA:...

Sistemas de Objetos Distribuídos

Alex CarneiroCarlos Eduardo Elmadjian

Karina Awoki

Prof. Fabio KonPOO 2016.1

Agenda

● Conceitos

● Histórico

● CORBA

● Demos

● Comparação com SOA

● Conclusão

1

Sistemas distribuídos

2

CONCEITOS

Sistemas distribuídos

● Componentes de software autônomos

2

CONCEITOS

Sistemas distribuídos

● Componentes de software autônomos

● Comunicação via rede

2

CONCEITOS

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

3

CONCEITOS

Sistemas distribuídos

● Requisitos não funcionais:

3

CONCEITOS

Sistemas distribuídos

● Requisitos não funcionais:

○ tolerância a falhas

3

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

4

CONCEITOS

Objetos distribuídos

● Localizados em diferentes dispositivos

4

CONCEITOS

Objetos distribuídos

● Localizados em diferentes dispositivos

● Comunicação via rede

4

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

Objetos distribuídos - Arquitetura

5

CONCEITOS

Middleware

6

CONCEITOS

Middleware

● RPC - Chamada Remota de Procedimento (Remote Procedure

Call)

6

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

7

CONCEITOS

RPC - Remote Procedure Call

● Comunicação entre cliente e servidor

7

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 CallCONCEITOS

8

RPC - Remote Procedure Call

● Empacota dados usando um processo de serialização

8

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)CONCEITOS

9

ORB (Object Request Broker)

● Comunicação entre objetos

9

CONCEITOS

ORB (Object Request Broker)

● Comunicação entre objetos

● Transparência de acesso

9

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

1990’s

10

PANORAMA

● Remote Procedure Calls (RPCs)

1990’s

10

PANORAMA

● Remote Procedure Calls (RPCs)

● CORBA 1.0

1990’s

10

PANORAMA

● Remote Procedure Calls (RPCs)

● CORBA 1.0

● CORBA 2.0

1990’s

10

PANORAMA

● Remote Procedure Calls (RPCs)

● CORBA 1.0

● CORBA 2.0

● DCOM - Microsoft

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

2000’s

11

PANORAMA

● COM+ - Microsoft

2000’s

11

PANORAMA

● COM+ - Microsoft

● CORBA 3.0

2000’s

11

PANORAMA

● COM+ - Microsoft

● CORBA 3.0

● Sucesso no mercado corporativo

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

CORBA

12

● Common Object Request Broker Architecture

CORBA

12

● Common Object Request Broker Architecture

● Colaboração entre sistemas heterogêneos

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

Arquitetura

13

Fonte: Aleksy et al. Implementing Distributed Systems with Java and CORBA

CORBA

Arquitetura

14Fonte: Aleksy et al. Implementing Distributed Systems with Java and CORBA

CORBA

IDL

15

CORBA

IDL

15

● Puramente declarativa e orientada a objetos

CORBA

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 - tipos

16

Fonte: Aleksy et al. Implementing Distributed Systems with Java and CORBA

CORBA

IDL - interfaces

17

CORBA

IDL - interfaces

17

● Interfaces são mapeadas para classes

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

CORBA

IDL - operações

18

● Operações são síncronas (exceção: oneway)

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

24

COMPARAÇÃO ENTRE SOA E DOA

SOA

HW1

HW2

SW1

SW2

DOA

HW1

HW2

SW1

SW2

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

Obrigado!Perguntas?