Componentes para Computação Distribuída



Documentos relacionados
Sistemas Distribuídos

Sistemas Distribuídos

Adriano Reine Bueno Rafael Barros Silva

Sistemas Distribuídos

Aula 03-04: Modelos de Sistemas Distribuídos

Princípios de Sistemas Distribuídos. Tecnologias utilizadas em sistemas distribuídos Aula 5

CORBA. Common Object Request Broker Architecture. Unicamp. Centro de Computação Rubens Queiroz de Almeida

Capítulo VI CORBA. Common Object Request Broker Architecture. [Cardoso2008] Programação de Sistemas Distribuídos em Java, Jorge Cardoso, FCA, 2008.

Arquiteturas de Sistemas Distribuídos

Introdução a Web Services

UNIVERSIDADE. Sistemas Distribuídos

Argo Navis J931 - Padrões de Design J2EE. Introdução. Objetivos de aprender padrões J2EE. Conhecer padrões para uso na plataforma J2EE

Computador E/S, Memória, Barramento do sistema e CPU Onde a CPU Registradores, ULA, Interconexão interna da CPU e Unidade de controle.

SISTEMAS DISTRIBUIDOS

UFG - Instituto de Informática

UNICE Ensino Superior Linguagem de Programação Ambiente Cliente Servidor.

SCE-557. Técnicas de Programação para WEB. Rodrigo Fernandes de Mello

Laboratório de Computação VI JAVA IDL. Fabricio Aparecido Breve

Introdução a Banco de Dados Aula 03. Prof. Silvestri

Rede de Computadores (REC)

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 14 PROFª BRUNO CALEGARO

INE Sistemas Distribuídos

Uma Introdução à Arquitetura CORBA. O Object Request Broker (ORB)

Camadas de Software - o Middleware. Sistemas Distribuídos Capítulo 2: Modelos e Arquitecturas. Aplicações. Middleware.

Sistemas Distribuídos Arquitetura de Sistemas Distribuídos I. Prof. MSc. Hugo Souza

Sistemas Operacionais Abertos. Prof. MSc. André Yoshimi Kusumoto

Linguagem de Programação Orientada a Objeto. Introdução a Orientação a Objetos Professora Sheila Cáceres

TECNOLOGIA WEB Aula 1 Evolução da Internet Profa. Rosemary Melo

Intranets. FERNANDO ALBUQUERQUE Departamento de Ciência da Computação Universidade de Brasília 1.INTRODUÇÃO

Unidade 8: Padrão MVC e DAO Prof. Daniel Caetano

Paradigmas de Linguagens de Programação

Disciplina: Redes de Comunicação. Curso Profissional Técnico de Gestão e Programação de Sistemas Informáticos. Setembro 2013

Sistemas Distribuídos Visão Geral de Sistemas Distribuídos I. Prof. MSc. Hugo Souza

Metadados. 1. Introdução. 2. O que são Metadados? 3. O Valor dos Metadados

Diagrama lógico da rede da empresa Fácil Credito

Banco de Dados Orientado a Objetos

Sistemas SCADAS. Apresentação dos sistemas de supervisão do mercado de automação: - Elipse E3 (fabricante Eilpse)

Resumo: Perguntas a fazer ao elaborar um projeto arquitetural

Computador Digital Circuitos de um computador (Hardware)

GLOSSÁRIO. ActiveX Controls. É essencialmente uma interface usada para entrada e saída de dados para uma aplicação.

ANEXO V Edital nº 03508/2008

QUESTÕES PROVA 2 (28 a 44)

Programação para Internet II

Service Oriented Architecture SOA

Sistemas Operacionais. Prof. André Y. Kusumoto

2. Conceitos e Arquitetura de Bancos de Dados

Web Services. (Introdução)

Tencologia em Análise e Desenvolvimento de Sistemas Disciplina: WEB I Conteúdo: Arquitetura de Software Aula 03

UFG - Instituto de Informática

Arquitetura dos Sistemas de Informação Distribuídos

Integração de sistemas utilizando Web Services do tipo REST

SISTEMAS DISTRIBUÍDOS

Prof. Antonio Almeida de Barros Jr. Prof. Antonio Almeida de Barros Junior

Introdução à Informática

Desenvolvimento Cliente-Servidor 1

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 1

Disciplina de Redes de Computadores Estudo Dirigido para a Prova II Professor Dr Windson Viana de Carvalho

Projuris Enterprise Visão Geral da Arquitetura do Sistema

Web services. Um web service é qualquer software que está disponível através da Internet através de uma interface XML.

BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSING

Estudo comparativo entre tecnologias Java: Applet e JWS.

Web Services. Integração de aplicações na Web. Sistemas Distribuídos

Nível do Sistema Operacional

Apostila da disciplina Introdução à Engenharia de Software Professor: Sandro Melo Faculdades São José Curso de Tecnologia de Sistemas de Informação

Serviços Web: Arquitetura

Julgue os itens a seguir, referentes a programas de navegação, programas de correio eletrônico e sítios de busca e pesquisa na Internet.

BACHARELADO EM SISTEMAS DE INFORMAÇÃO EaD UAB/UFSCar Sistemas de Informação - prof. Dr. Hélio Crestana Guardia

Gerenciamento do ciclo de vida de um documento Simone de Abreu

SUMÁRIO CAPÍTULO 1 - INTRODUÇÃO 19 CAPÍTULO 2 - CONCEITOS 25

MAPEAMENTO OBJETO RELACIONAL: UM ESTUDO DE CASO

2 Engenharia de Software

SISTEMAS DISTRIBUIDOS. Prof. Marcelo de Sá Barbosa

Sistemas Distribuídos na Web. Pedro Ferreira DI - FCUL

Oracle WebLogic Server 11g: Conceitos Básicos de Administração

Conceito de Rede e seus Elementos. Prof. Marciano dos Santos Dionizio

Programação para a Internet. Prof. M.Sc. Sílvio Bacalá Jr sbacala@gmail.com

Serviços Web: Introdução

Curso Tecnológico de Redes de Computadores 5º período Disciplina: Tecnologia WEB Professor: José Maurício S. Pinheiro V

INTEGRAÇÃO DE APLICAÇÕES UTILIZANDO WEB SERVICE 1. Kellen Kristine Perazzoli 2 ; Manassés Ribeiro 3

Conceitos Básicos de Rede. Um manual para empresas com até 75 computadores

O Gerenciamento de Documentos Analógico/Digital

Abstrações e Tecnologias Computacionais. Professor: André Luis Meneses Silva /msn: andreluis.ms@gmail.com Página: orgearq20101.wordpress.

UFG - Instituto de Informática

O que é o Virto ERP? Onde sua empresa quer chegar? Apresentação. Modelo de funcionamento

Introdução à Camada de Aplicação. Prof. Eduardo

1

Cliente/Servidor. Conceitos Gerais. Graça Bressan. Graça Bressan/LARC

Desenvolvendo uma Arquitetura de Componentes Orientada a Serviço SCA

GBD PROF. ANDREZA S. AREÃO

Sistemas Distribuídos (DCC/UFRJ)

Transcrição:

Componentes para Computação Distribuída Conceitos Foi a partir do fenômeno da Internet (WWW), no início dos anos noventa, que a computação distribuída passou a ter relevância definitiva, a ponto de a Internet tornar-se a plataforma preferida pela maioria dos desenvolvedores de software. Os projetos de Software passaram a incluir requisitos tais como acesso via WWW a sistemas corporativos legados, desenvolvimento de aplicações tipo cliente/servidor sobre TCP/IP. A difusão dos Sistemas Distribuídos sobre a Internet trouxe consigo a necessidade crescente de comunicação entre ambientes computacionais heterogêneos. Por exemplo, como num sistema envolvendo um determinado fabricante, seus fornecedores, distribuidores e clientes, podendo formar uma rede distribuída de grandes dimensões, envolvendo cidades e, até mesmo, países. Todavia, a comunicação entre sistemas heterogêneos apresenta diversas dificuldades resultantes do fato de que estes não foram originalmente projetados para trabalhar em conjunto, a exemplo da heterogeneidade de sistemas operacionais, protocolos, equipamentos e banco de dados. Diante desse cenário, há uma série de requisitos do ponto de vista de engenharia de software, sem os quais não seria possível uma integração plena dos softwares desenvolvidos de forma independente e em contextos variados (geográficos e computacionais). Conseqüentemente, na Internet, faz-se necessária uma representação uniforme e abstrata de componentes de software que permita a um usuário interagir com tais componentes sem conhecer detalhes de sua implementação e localização. Além disso, os componentes devem ser desenvolvidos de forma a possibilitar que usuários exploram dinamicamente suas estruturas, comportamentos e estados (no caso de componentes já em execução). Essas características são fundamentais para que componentes possam ser modificados depois de disponibilizados na rede global e adaptados para ambientes distintos, criando condições para uma maior produtividade na construção de software distribuído. Há também outros serviços básicos necessários ao desenvolvimento de software distribuído, que devem ser oferecidos, preferencialmente de forma transparente, como segurança (autenticação e controle de acesso) e persistência (a capacidade de um objeto continuar a existir após a finalização da aplicação que o criou ou simplesmente o ativou). Todas essas facilidades e serviços deveriam, idealmente, estar disponíveis através de linguagens de alto nível com mecanismos de coordenação de dados e fluxo de controle, inspeção, adaptação e disponibilização de componentes, e um ambiente de programação e integração com Application Programming Interfaces (APIs) tanto para implementadores de componentes como para desenvolvedores de aplicações (de preferência interfaces gráficas com visualização de estruturas de componentes, com ferramentas para integração de componentes e composição de aplicações). Várias plataformas comerciais e experimentais desenvolvidas, principalmente nos anos noventa, resolvem boa parte desses problemas: Common Object Request Broker Architeture (CORBA), Distributed Component Object Model (DCOM), Remote Method Invalation (JAVA RMI). No entanto, nenhuma dessas infra-estruturas de desenvolvimento e gerenciamento de software distribuído visava primordialmente o ambiente Internet, que é Compilado por Luiz Sergio Rocha de Souza, 5ºA INFO Uninove 1/5

reconhecidamente o grande desafio dos dias atuais. Para atender a essa demanda, nos anos dois mil surgiram os chamados Serviços Web (Web Services) e as arquiteturas de software orientadas a serviço (no caso, serviços Web). Por utilizarem a infra-estrutura já disponível para a WWW (como o protocolo Hyper Text Transfer Protocol - HTTP), amplamente usada para armazenamento e recuperação de páginas Web, e também por incorporarem os conceitos de middlewares distribuídos, como o CORBA, os serviços Web nasceram com o intuito de possibilitar uma integração e disponibilização global das computações distribuídas. Entretanto, sendo uma infra-estrutura global para a implementação de sistemas distribuídos, os Serviços Web por si só não resolvem todos os desafios tecnológicos, necessitando de outras tecnologias complementares para a exploração plena da Computação Distribuída, como, a utilização de computação paralela, o compartilhamento de conteúdos e a colaboração de forma generalizada (denominaremos essas novas tecnologias de tecnologias integradoras). Nesse sentido, nos últimos anos têm aparecido algumas tecnologias integradoras que possibilitam a organização de recursos computacionais (computadores) dispersos na Internet de modo facilitar seu uso de forma transparente por usuários ou softwares na Rede. Dentre essas tecnologias, destacam-se os sistemas peer-to-peer, as grades computacionais (grid computing), os aglomerados (clusters) e os agentes móveis. Diante da enorme tendência de utilização dos serviços Web (como veremos adiante), essas tecnologias integradoras também estão cada vez mais sendo desenvolvidas com base na infra-estrutura disponibilizada pelos serviços Web. No que se segue, inicialmente descrevemos a infraestrutura de serviços Web e, em seguida, abordaremos brevemente essas tecnologias integradoras, seus potencias e desafios. Serviços Web Serviços Web são parecidos com plataformas ou middewares orientados a objetos. Nesses middlewares, objetos estão espalhados em diversos sites e interagem para comporem aplicações distribuídas, que, por sua vez, dispõem de serviços para o acesso remoto por parte de usuários. Localização, registro e comunicação entre os objetos distribuídos são realizadas por um Object Request Broker (ORB). Exemplos de middlewares para objetos distribuídos incluem CORBA da OMG, DCOM da Microsoft e Remote Method Invocation (RMI) da Sun Microsystems. Embora esses middlewares disponham da infra-estrutura básica para a construção de aplicações distribuídas, seu sucesso tem sido limitado por não utilizarem tecnologias amplamente disponíveis na Internet. Por exemplo, na comunicação entre clientes e servidores em CORBA utiliza-se o protocolo Internet Interoperable Protocol, o que impede a comunicação com servidores de corporações protegidas por firewalls. Serviços Web combinam as tecnologias Web e middlewares orientados a objetos numa infra-estrutura onde a interação entre componentes (ou objetos) e usuários é feita através de tecnologias padrões da Web, como o Extensible Markup Language (XML) para representação dos dados e HTTP para comunicação. Dessa forma, um componente de um Serviço Web pode ser demandado por um browser ou por outro componente de outro Serviço Web. Uma vez publicados ou disponibilizados com identificadores universais da Web (Uniform Resource Locators - URLs), os serviços são acessados por protocolos padrões como o HTTP. DCOM Distribuited Component Object Model (DCOM) é um padrão de técnicas para a computação distribuida da Microsoft baseado na tecnologia OLE (Object Linkind Embedding) e uma expansão dos padrões COM (Component Object Model). Compilado por Luiz Sergio Rocha de Souza, 5ºA INFO Uninove 2/5

A tecnologia OLE define um procedimento padronizado em que um módulo cliente e outro servidor podem se comunicar através de uma interface. Esses módulos podem ser executados em um mesmo computador ou em computadores diferentes. Usualmente OLE e COM são usados com o mesmo significado, porem COM é a implementação do OLE. Inicialmente os códigos COM foram escritos através de C e C++, hoje muitas outras linguagem aceitam objetos OLE, tais como Object Pascal(Delphi) e o Visual Basic. Com objetos COM, a aplicação cliente não precisa conhecer onde o objeto reside, simplesmente gera chamadas para interfaces de objetos. Um objeto COM executa os passos necessários para gerar a chamada para localizar o objeto desejado. Quando são utilizados dois arquivos executáveis é utilizado o conceito de marshaling para permitir ao cliente fazer chamadas às funções da interface para objetos remotos em outro processo ou em uma máquina diferente. Os passos para a localização dos objetos diferem, dependendo se o objeto está no mesmo processo no cliente ou em outras máquinas: Servidores in-process: uma DLL (Dynamic Link Library) executando no mesmo espaço da aplicação cliente. Um controle ActiveX embutido em uma página WEB, funciona dessa maneira: o controle ActiveX é baixado para a máquina do cliente e invocado com alguns processos do navegador. O cliente comunica in-process com o servidor usando chamadas da interface COM. Servidores out-of-process: outra aplicação executando em um espaço diferente de processo, mas na mesma máquina do cliente. Uma planilha Excel embutida em um documento do Word; duas aplicações separadas executando na mesma máquina. O servidor local usa a interface COM para comunicar com o cliente. Servidores remotos: uma DLL ou outra aplicação executando em uma máquina diferente do cliente. Um Banco de Dados em Delphi está conectado com uma aplicação servidora em outra máquina da rede. O servidor remoto usa a interface DCOM (Distributed COM) para comunicar com a aplicação servidora. Com o COM é possível a comunicação de aplicativos numa mesma máquina. O DCOM (Distributed Component Object Model) permite que objetos de diferentes computadores possam se comunicar através de protocolos comuns, incluindo protocolos baseados na Internet e na Web. Java RMI O RMI (Remote Method Invocation), da Sun Microsystems é uma plataforma Java que implementa a comunicação entre objetos distribuidos. Podemos sitar como caracteristicas básicas: Orientada a objetos Possui diversas APIs amigáveis Multi-plataforma: Java Virtual Machine (JVM) Integrada à Internet: applets, JavaScript, JSP e Servlets Suporte a componentes: JavaBeans e EJB De fácil aprendizagem Compilado por Luiz Sergio Rocha de Souza, 5ºA INFO Uninove 3/5

Bem aceita pelos programadores Suportada por diversos fabricantes de SW A ferramenta fornece um suporte simples para RPC (Remote Process Calling) e RMI. Permite que um objeto Java chame métodos de outro objeto Java rodando em outro JVM (Java Virtual Machine), apesar deseuas facilidades é uma solução específica para a plataforma Java. A arquitetura da ferramenta é composta de quatro camadas: Stub, Skeleton, camada de referência remota e camada de transporte. Stub Representa o servidor para o cliente. Efetua serialização e envio dos parâmentros. Recebe a resposta do servidor, desserealiza e entrega ao cliente. Skeleton recebe a chamada e dessentraliza os parâmetros enviados pelo cliente. Faz a chamada no servidor e retorna o resultado ao cliente. Camada de referencia remota responsável pela localização dos objetos nas máquinas da rede. Permite que referências para um objeto servidor remoto sejam usadas pelos clientes para chamar métodos Camada de transporte cria e ferencia conexões de rede entre objetos remotos, elimina a necessidade do código do cliente ou do servidor interagirem com o suporte de rede. As chamada RMI tem uma dinâmica próprias representada pelos sequinte passos: 1. O servidor, ao iniciar, se registra no serviço de nomes (RMI Registry ); 2. O cliente obtém uma referência para o objeto servidor no serviço de nomes e cria a stub; 3. O cliente chama o método na stub fazendo uma chamada Local; 4. A stub serializa os parâmetros e transmite a chamada pela rede para o skeleton do servidor; 5. O skeleton do servidor recebe a chamada pela rede, desserializa os parâmetros e faz a chamada do método no objeto servidor; 6. O objeto servidor executa o método e retorna um valor para o skeleton, que o desserializa e o envia pela rede à stub do cliente; 7. A stub recebe o valor do retorno serializado, o desserializa e por fim o repassa ao cliente. CORBA CORBA (Common Object Request Broker Architecture) é a arquitetura padrão criada pelo Object Management Group para estabelecer e simplificar a troca de dados entre sistemas distribuídos heterogêneos. Em face da diversidade de hardware e software que encontramos atualmente, a CORBA atua de modo que os objetos (componentes dos softwares) possam se comunicar de forma transparente ao usuário, mesmo que para isso seja necessário interoperar com outro software, em outro sistema operacional e em outra ferramenta de desenvolvimento. CORBA é um dos modelos mais populares de objetos distribuídos, juntamente com o DCOM, formato proprietário da Microsoft. A arquitetura CORBA define o ORB (Object Request Broker) como um módulo intermediário entre cliente e objeto, sendo responsável em aceitar a requisição do Compilado por Luiz Sergio Rocha de Souza, 5ºA INFO Uninove 4/5

cliente, enviá-la para o objeto competente e, assim que disponível a resposta, entregá-la para o cliente. A CORBA utiliza a IDL (Interface Definition Language), uma linguagem baseada em C++ que não possui algoritmos nem variáveis, ou seja, é puramente declarativa, e, portanto, é independente da linguagem de programação utilizada para acessá-la. Há padrão de IDL definido pelo OMG para C, C++, Java, TTCN, COBOL, Smalltalk, Ada, Lisp, Python e IDLscript. Possibilita a interoperabilidade entre os diversos sistemas, visto a separação que é definida entre interface e execução. A interface de cada objeto é definida de forma bastante específica, enquanto sua execução (código fonte e dados) permanece oculta para o resto do sistema. Ao contrário dos objetos tradicionais, os objetos em sistemas distribuídos possuem uma característica de dualidade: um estado dinâmico, tipicamente alocado em memória volátil (em tempo de execução), e um estado persistente, que não pode ser destruído após o encerramento do programa que os criou e que pode ser usado para reconstruir o estado dinâmico, devendo ser armazenado em memória não volátil, seja em sistema de arquivos ou banco de dados. A arquitetura CORBA, para prover a persistência, define o Persistent Object Service (POS) como sendo responsável por armazenar o estado persistente dos objetos, utilizando quatro elementos: Objetos Persistentes (Persistent Object (POs)) Gerenciador de Objetos Persistentes (Persistent Objects Manager (POM)) Serviços de Persistência de Dados (Persistent Data Services (PDSs)) Base de Dados (Datastores) GLOSSÁRIO Middleware: neologismo criado para designar camadas de software que não constituem diretamente aplicações, mas que facilitam o uso de ambientes ricos em tecnologia da informação. A camada de middleware concentra serviços como identificação, autenticação, autorização, diretórios, certificados digitais e outras ferramentas para segurança. Aplicações tradicionais implementam vários destes serviços, tratados de forma independente por cada uma delas. As aplicações modernas, no entanto, delegam e centralizam estes serviços na camada de middleware. Ou seja, o middleware serve como elemento que aglutina e dá coerência a um conjunto de aplicações e ambientes. Sistema legado: termo utilizado em referência aos sistemas computacionais de uma organização que, apesar de serem bastante antigos, fornecem serviços essenciais. Geralmente utilizam bancos de dados obsoletos. Normalmente são aplicações complexas, de difícil manutenção e que pelo grau de criticidade e custo para modernização, continuam ativas. Fontes: RPN, Middleware. http://www.rnp.br/noticias/2006/not-060926.html, acessado em 5 de junho de 2009 SERRA, A. P. G. O modelo de arquitetura CORBA e suas aplicações. Revista Integração. Jun2004 ftp://ftp.usjt.br/pub/revint/157_37.pdf SILBERSCHATZ, A; Galvin, P; Gagne, G. Sistemas Operacionais. Rio de Janeiro:Campus, 2000. Compilado por Luiz Sergio Rocha de Souza, 5ºA INFO Uninove 5/5