Sistemas de Objetos Distribuídos Alex Carneiro Carlos Eduardo Elmadjian Karina Awoki Prof. Fabio Kon POO 2016.1
Agenda Conceitos Histórico CORBA Demos Comparação com SOA Conclusão 1
CONCEITOS 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 Call 8
CONCEITOS 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 Cliente método ----------- arg 1 ----------- arg 2 Servidor return ----------- 8
CONCEITOS ORB (Object Request Broker) 9
CONCEITOS 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 Obj 1 Obj 2 ORB 9
PANORAMA 1990 s 10
PANORAMA 1990 s Remote Procedure Calls (RPCs) 10
PANORAMA 1990 s Remote Procedure Calls (RPCs) CORBA 1.0 10
PANORAMA 1990 s Remote Procedure Calls (RPCs) CORBA 1.0 CORBA 2.0 10
PANORAMA 1990 s Remote Procedure Calls (RPCs) CORBA 1.0 CORBA 2.0 DCOM - Microsoft 10
PANORAMA 1990 s Remote Procedure Calls (RPCs) CORBA 1.0 CORBA 2.0 DCOM - Microsoft Java Remote Method Invocation (RMI/J2EE) 10
PANORAMA 2000 s 11
PANORAMA 2000 s COM+ - Microsoft 11
PANORAMA 2000 s COM+ - Microsoft CORBA 3.0 11
PANORAMA 2000 s COM+ - Microsoft CORBA 3.0 Sucesso no mercado corporativo 11
PANORAMA 2000 s COM+ - Microsoft CORBA 3.0 Sucesso no mercado corporativo Aperfeiçoamento das RPCs 11
PANORAMA 2000 s COM+ - Microsoft CORBA 3.0 Sucesso no mercado corporativo Aperfeiçoamento das RPCs Frameworks para linguagens (DRuby, Pyro...) 11
CORBA 12
CORBA Common Object Request Broker Architecture 12
CORBA Common Object Request Broker Architecture Colaboração entre sistemas heterogêneos 12
CORBA Common Object Request Broker Architecture Colaboração entre sistemas heterogêneos Padrão aberto orientado a objetos 12
CORBA Common Object Request Broker Architecture Colaboração entre sistemas heterogêneos Padrão aberto orientado a objetos Interface Definition Language (IDL) para especificação 12
CORBA 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 12
CORBA Arquitetura Fonte: Aleksy et al. Implementing Distributed Systems with Java and CORBA 13
CORBA Arquitetura Fonte: Aleksy et al. Implementing Distributed Systems with Java and CORBA 14
CORBA IDL 15
CORBA IDL Puramente declarativa e orientada a objetos 15
CORBA IDL Puramente declarativa e orientada a objetos Diversos mapeamentos (ADA, C, C++, COBOL, Java, Python, Ruby, Smalltalk...) 15
CORBA IDL Puramente declarativa e orientada a objetos Diversos mapeamentos (ADA, C, C++, COBOL, Java, Python, Ruby, Smalltalk...) Sintaxe inspirada em C++ 15
CORBA IDL Puramente declarativa e orientada a objetos Diversos mapeamentos (ADA, C, C++, COBOL, Java, Python, Ruby, Smalltalk...) Sintaxe inspirada em C++ Fortemente tipada 15
CORBA IDL - tipos Fonte: Aleksy et al. Implementing Distributed Systems with Java and CORBA 16
CORBA IDL - interfaces 17
CORBA IDL - interfaces Interfaces são mapeadas para classes 17
CORBA IDL - interfaces Interfaces são mapeadas para classes Herança se dá por meio delas (inclusive múltipla) 17
CORBA IDL - interfaces 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 17
CORBA IDL - interfaces 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 17
CORBA IDL - interfaces 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 17
CORBA IDL - operações 18
CORBA IDL - operações Operações são síncronas (exceção: oneway) 18
CORBA IDL - operações Operações são síncronas (exceção: oneway) O tipo de retorno sempre deve ser declarado 18
CORBA IDL - operações Operações são síncronas (exceção: oneway) O tipo de retorno sempre deve ser declarado Podem conter uma lista de exceções 18
CORBA IDL - operações 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: 18
CORBA IDL - operações 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 18
CORBA IDL - operações 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 18
CORBA IDL - operações 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 18
CORBA Exemplo 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); }; 19
DEMO Vamos ver isso na prática Demo de R2CORBA (Ruby) Demo de omniorbpy (Python) Demo de Distributed Ruby (DRb) 20
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. 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 DOA HW1 SW1 HW1 SW1 HW2 SW2 HW2 SW2 24
COMPARAÇÃO ENTRE SOA E DOA Diferenças SOA: utiliza linguagens flexíveis para descrição das interfaces como WDSL. DOA: utilizadas linguagens que são compiladas com o software para descrição das interfaces, como IDL. 25
COMPARAÇÃO ENTRE SOA E DOA Diferenças SOA: comunicação entre serviços baseada em troca de mensagens. DOA: comunicação entre componentes de software baseada na chamada de métodos. 26
COMPARAÇÃO ENTRE SOA E DOA Diferenças SOA: identifica as interfaces tipicamente por URIs para cada serviço que recebe as requisições. DOA: identifica as interfaces de forma mais rígida, e. g. CORBA IORs ou referências a objetos. 27
COMPARAÇÃO ENTRE SOA E DOA Diferenças SOA: consiste de aplicações independentes que conhecem apenas as interfaces para troca de mensagens. DOA: pode ser visto como uma única aplicação que invoca métodos de objetos instanciados remotamente. 28
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?