Objetos Distribuídos

3
Objetos Distribuídos: Conceitos e Arquiteturas Ao longo dos anos, as plataformas computacionais sofreram grandes modificações. A primeira fase caracterizou-se por computadores de grande porte onde os programas eram processados em lotes. A segunda fase caracterizou-se pela interligação de terminais aos computadores de grande porte. A terceira fase tornou-se possível com a evolução dos circuitos integrados e com os computadores pessoais. Na quarta fase, os computadores pessoais e os de grande porte foram interligados por meio de redes. À medida em que ocorriam alterações nas arquiteturas das plataformas computacionais, se modificavam as arquiteturas dos sistemas. Alguns sistemas migraram de arquiteturas centralizadas para arquiteturas distribuídas. Um sistema distribuído é composto por programas executados em diferentes máquinas e pode apresentar vantagens quando comparado a um sistema centralizado, como por exemplo, acesso aos serviços em outras máquinas na rede; melhor desempenho devido ao processamento distribuído; maior confiabilidade decorrente da replicação de dados, máquinas e periféricos. Em geral, os sistemas distribuídos são, entretanto, mais difíceis de desenvolver do que os centralizados devido à uma série de dificuldades decorrentes da distribuição do processamento entre diversas máquinas. Interfaces de programação Em um sistema distribuído, é possível a comunicação entre objetos em uma mesma máquina, ou em máquinas diferentes. Quando objetos em uma mesma máquina se comunicam, os dados são armazenados em áreas de memória acessíveis aos objetos. Quando a comunicação ocorre entre objetos em diferentes máquinas, os dados precisam ser transferidos entre as máquinas. Nesse caso, diferentes interfaces de programação (APIs) podem ser usadas para acesso aos serviços de comunicação. Algumas dessas APIs dão acesso direto aos serviços dos protocolos de transporte. Os serviços providos pelos protocolos de transporte são, entretanto, de baixo nível, o que leva o programador a ter que se preocupar com detalhes relacionados ao processo de comunicação. Outra alternativa é usar uma tecnologia que possibilite a chamada de métodos remotos (Remote Method Invocation). Quando essa alternativa é adotada, objetos em diferentes máquinas podem se comunicar como se estivessem em uma mesma máquina e o programador deixa de se preocupar com a maioria dos detalhes relacionados à comunicação. Tecnologias de componentes Nos últimos anos, tem se popularizado o desenvolvimento baseado em componentes. Componentes são módulos de software que prestam serviços através de interfaces claramente definidas. Idealmente, um componente (composto por um ou vários objetos) é genérico o suficiente para que possa ser usado em diversos sistemas. Um componente pode ser composto por um, ou por vários objetos. Para que seja possível a colaboração entre componentes desenvolvidos por diferentes programadores, são seguidas certas convenções, agrupadas em modelos de referência

description

teste

Transcript of Objetos Distribuídos

Objetos Distribudos: Conceitos e Arquiteturas

Objetos Distribudos: Conceitos e Arquiteturas

Ao longo dos anos, as plataformas computacionais sofreram grandes modificaes. A primeira fase caracterizou-se por computadores de grande porte onde os programas eram processados em lotes. A segunda fase caracterizou-se pela interligao de terminais aos computadores de grande porte. A terceira fase tornou-se possvel com a evoluo dos circuitos integrados e com os computadores pessoais. Na quarta fase, os computadores pessoais e os de grande porte foram interligados por meio de redes.

medida em que ocorriam alteraes nas arquiteturas das plataformas computacionais, se modificavam as arquiteturas dos sistemas. Alguns sistemas migraram de arquiteturas centralizadas para arquiteturas distribudas. Um sistema distribudo composto por programas executados em diferentes mquinas e pode apresentar vantagens quando comparado a um sistema centralizado, como por exemplo, acesso aos servios em outras mquinas na rede; melhor desempenho devido ao processamento distribudo; maior confiabilidade decorrente da replicao de dados, mquinas e perifricos. Em geral, os sistemas distribudos so, entretanto, mais difceis de desenvolver do que os centralizados devido uma srie de dificuldades decorrentes da distribuio do processamento entre diversas mquinas.

Interfaces de programaoEm um sistema distribudo, possvel a comunicao entre objetos em uma mesma mquina, ou em mquinas diferentes. Quando objetos em uma mesma mquina se comunicam, os dados so armazenados em reas de memria acessveis aos objetos. Quando a comunicao ocorre entre objetos em diferentes mquinas, os dados precisam ser transferidos entre as mquinas. Nesse caso, diferentes interfaces de programao (APIs) podem ser usadas para acesso aos servios de comunicao. Algumas dessas APIs do acesso direto aos servios dos protocolos de transporte.

Os servios providos pelos protocolos de transporte so, entretanto, de baixo nvel, o que leva o programador a ter que se preocupar com detalhes relacionados ao processo de comunicao. Outra alternativa usar uma tecnologia que possibilite a chamada de mtodos remotos (Remote Method Invocation). Quando essa alternativa adotada, objetos em diferentes mquinas podem se comunicar como se estivessem em uma mesma mquina e o programador deixa de se preocupar com a maioria dos detalhes relacionados comunicao.

Tecnologias de componentesNos ltimos anos, tem se popularizado o desenvolvimento baseado em componentes. Componentes so mdulos de software que prestam servios atravs de interfaces claramente definidas. Idealmente, um componente (composto por um ou vrios objetos) genrico o suficiente para que possa ser usado em diversos sistemas. Um componente pode ser composto por um, ou por vrios objetos.

Para que seja possvel a colaborao entre componentes desenvolvidos por diferentes programadores, so seguidas certas convenes, agrupadas em modelos de referncia que padronizam, por exemplo, como eventos gerados so notificados e como servios so disponibilizados. Dentre os atuais modelos de referncia, destacam-se: Distributed Component Object Model, voltado para a plataforma Windows; JavaBeans e Enterprise JavaBeans, voltados para a plataforma Java; Common Object Request Broker Architecture, que independente de plataforma.

Padres de arquiteturaO desenvolvimento de um sistema distribudo no uma atividade simples e uma das tarefas a definio da sua arquitetura. A arquitetura descreve como os componentes interagem, omite informaes que no dizem respeito a tais interaes, e caracterizada pela presena de determinados tipos de componentes, formas de interligao e de interao. Algumas arquiteturas apresentam caractersticas comuns, possibilitando que padres sejam identificados e documentados. Alguns desses padres especificam a arquitetura do sistema a nvel macro; outros especificam a estrutura de pequenas partes do sistema, por exemplo, a estrutura interna de um componente.

Padres J2EEExistem vrios padres de arquitetura sugeridos para sistemas distribudos na plataforma J2EE. Um exemplo o Business Delegate. Esse padro resolve problemas que ocorrem quando componentes da camada de apresentao interagem com componentes remotos da camada de negcio. Dentre os objetivos desse padro, destacam-se: evitar alteraes nos componentes da camada de apresentao quando ocorrem alteraes nas interfaces dos componentes remotos; minimizar a perda de performance decorrente da interao entre componentes da camada de apresentao e componentes remotos; reduzir a complexidade dos componentes da camada de apresentao retirando o cdigo necessrio para a comunicao com os componentes remotos.

O padro Business Delegate sugere a criao de componentes que se faam passar pelos componentes remotos. Esses novos componentes contm o cdigo necessrio para a comunicao com os componentes remotos e procuram prover uma interface de programao mais estvel do que a provida pelos componentes remotos. Por meio de um mecanismo de caching, os novos componentes podem tambm reduzir o trfego entre os componentes na camada de apresentao e os componentes remotos.

Outro padro de arquitetura o Session Facade. Esse padro til quando um componente, para obter o servio desejado, precisa se comunicar com vrios componentes servidores remotos. O padro sugere a criao de um novo componente remoto que prov um servio de mais alto nvel do que os providos pelos servidores. A comunicao com os servidores passa a ser responsabilidade desse novo componente, o cliente no se comunica mais com cada um dos servidores. Isso simplifica o cdigo do cliente e pode reduzir o trafego pela rede.

Um terceiro exemplo de padro de arquitetura para a plataforma J2EE o Service Locator. Esse padro facilita a localizao dos componentes em um sistema distribudo, pois esconde dos clientes, o procedimento necessrio para localizar os servidores. Isso evita que o cdigo para a localizao e a criao dos servidores seja replicado nos clientes.

ConclusoAo longo dos ltimos anos, ocorreram vrias mudanas nas tecnologias adotadas nos sistemas distribudos, mas a atividade de desenvolvimento continua sendo complexa por uma variedade de motivos. O uso de componentes e a preocupao com aspectos de arquitetura podem melhorar a qualidade de tais sistemas e facilitar seu desenvolvimento.

RefernciasAlbuquerque, F. TCP/IP Internet: Programao de Sistemas Distribudos Usando HTML, JavaScript e Java. Axcel Books. 2001.

Alur, D. et al. Core J2EE Patterns: Best Practices and Design Strategies. Prentice Hall, 2001.

Buschmann, F. et al. Pattern-Oriented Software Architecture A System of Patterns. John Wiley & Sons, 1996.

Coulouris, G. & Dollimore, J. Distributed Systems - Concepts and Design (3rd Edition). Addison Wesley, 2000.

Monson-Haefel, R. Enterprise JavaBeans (3rd Edition). O''Reilly & Associates, 2001.

Schmidt, D. et al. Pattern-Oriented Software Architecture - Volume 2. John Wiley & Sons, 2000.

Endereos e documentos variados sobre objetos distribudos podem ser encontrados em: www.cic.unb.br/docentes/fernando