trabalho sd

21
Sumário 1 Introdução.................................................................................................................................................. 3 1.1 Características .................................................................................................................................... 4 1.1.1 Heterogeneidade ......................................................................................................................... 4 1.1.2 Segurança.................................................................................................................................... 4 1.1.3 Escalabilidade ............................................................................................................................. 4 1.1.4 Tolerância a Falhas ..................................................................................................................... 4 1.1.5 Concorrência ............................................................................................................................... 4 1.1.6 Transparência .............................................................................................................................. 5 1.1.7 Flexibilidade ............................................................................................................................... 5 1.1.8 Confiabilidade............................................................................................................................. 5 1.1.9 Desempenho ............................................................................................................................... 5 1.2 Elementos básicos de um SD ............................................................................................................. 6 1.2.1 Sistema de Nomes....................................................................................................................... 6 1.2.2 Comunicação .............................................................................................................................. 6 1.2.4 Alocação de carga de trabalho .................................................................................................... 7 1.2.5 Manutenção de consistência ....................................................................................................... 7 2 Modelos de Sistemas ................................................................................................................................. 8 2.1 Modelos de arquitetura ....................................................................................................................... 8 2.1.1 Elementos arquitetônicos ............................................................................................................ 8 2.1.2 Camadas de software ................................................................................................................ 10 2.1.3 Comunicação entre processos ................................................................................................... 11 2.1.4 Comunicação síncrona e assíncrona ......................................................................................... 11 2.1.5 Comunicação em Grupo ........................................................................................................... 11 2.2 Modelos Fundamentais .................................................................................................................... 12 2.2.1 Modelo de Integração ............................................................................................................... 12 2.2.2 Modelo de falha ........................................................................................................................ 12 2.2.3 Modelo de segurança ................................................................................................................ 13 3 Padrões de Projetos Middleware ............................................................................................................. 14 3.1 Requestor ......................................................................................................................................... 14 3.2 Cliente Proxy ................................................................................................................................... 15 3.3 Invoker ............................................................................................................................................. 16 3.4 Client Request Handler .................................................................................................................... 17 3.5 Server Request Handler.................................................................................................................... 18 3.6 Marshaller ........................................................................................................................................ 19 3.7 Interface Description ........................................................................................................................ 20 3.8 Remoting Error ................................................................................................................................ 21

Upload: daniel-andrade

Post on 06-Sep-2015

27 views

Category:

Documents


0 download

DESCRIPTION

sistemas distribuidos

TRANSCRIPT

  • Sumrio

    1 Introduo .................................................................................................................................................. 3

    1.1 Caractersticas .................................................................................................................................... 4

    1.1.1 Heterogeneidade ......................................................................................................................... 4

    1.1.2 Segurana .................................................................................................................................... 4

    1.1.3 Escalabilidade ............................................................................................................................. 4

    1.1.4 Tolerncia a Falhas ..................................................................................................................... 4

    1.1.5 Concorrncia ............................................................................................................................... 4

    1.1.6 Transparncia .............................................................................................................................. 5

    1.1.7 Flexibilidade ............................................................................................................................... 5

    1.1.8 Confiabilidade............................................................................................................................. 5

    1.1.9 Desempenho ............................................................................................................................... 5

    1.2 Elementos bsicos de um SD ............................................................................................................. 6

    1.2.1 Sistema de Nomes ....................................................................................................................... 6

    1.2.2 Comunicao .............................................................................................................................. 6

    1.2.4 Alocao de carga de trabalho .................................................................................................... 7

    1.2.5 Manuteno de consistncia ....................................................................................................... 7

    2 Modelos de Sistemas ................................................................................................................................. 8

    2.1 Modelos de arquitetura ....................................................................................................................... 8

    2.1.1 Elementos arquitetnicos ............................................................................................................ 8

    2.1.2 Camadas de software ................................................................................................................ 10

    2.1.3 Comunicao entre processos ................................................................................................... 11

    2.1.4 Comunicao sncrona e assncrona ......................................................................................... 11

    2.1.5 Comunicao em Grupo ........................................................................................................... 11

    2.2 Modelos Fundamentais .................................................................................................................... 12

    2.2.1 Modelo de Integrao ............................................................................................................... 12

    2.2.2 Modelo de falha ........................................................................................................................ 12

    2.2.3 Modelo de segurana ................................................................................................................ 13

    3 Padres de Projetos Middleware ............................................................................................................. 14

    3.1 Requestor ......................................................................................................................................... 14

    3.2 Cliente Proxy ................................................................................................................................... 15

    3.3 Invoker ............................................................................................................................................. 16

    3.4 Client Request Handler .................................................................................................................... 17

    3.5 Server Request Handler.................................................................................................................... 18

    3.6 Marshaller ........................................................................................................................................ 19

    3.7 Interface Description ........................................................................................................................ 20

    3.8 Remoting Error ................................................................................................................................ 21

  • REFERENCIAS .............................................................................................................................................. 21

  • 1 Introduo

    Segundo Tanembaum,A. Um sistema distribudo um conjunto de computadores independentes

    entre si que se apresenta a seus usurios como um sistema nico e coerente

    Segundo Coulouris,G. Coleo de computadores autnomos interligados atravs de uma rede de

    computadores e equipamentos com software que permita o compartilhamento dos recursos do sistema:

    hardware, software e dados

    Definimos um sistema distribudo como sendo aquele no qual os componentes de hardware ou

    software, localizados em computadores interligados em rede, se comunicam e coordenam suas aes apenas

    passando mensagens entre si. O compartilhamento de recursos um forte motivo para a construo de

    sistemas distribudos. Os recursos podem ser gerenciados por servidores e acessados por clientes. Os

    computadores conectados por meio de uma rede podem estar separados por qualquer distncia. Eles podem

    estar em continentes separados, no mesmo prdio ou na mesma sala. A definio de SD tem as seguintes

    consequncias importantes:

    Concorrncia: em uma rede de computadores, a execuo concorrente de computadores a norma.

    Posso fazer meu trabalho em meu computador, enquanto voc faz o seu em sua mquina, compartilhando

    recursos como pginas web ou arquivos, quando necessrio.

    Inexistncia de relgio global: quando os programas precisam cooperar, eles coordenam suas

    aes trocando mensagens.

    Falhas independentes: cada componente do sistema pode falhar independentemente, deixando os

    outros ainda em funcionamento.

    Como exemplo de sistemas distribudos tempos a internet, que atravs de um protocolo de

    comunicao relativamente simples, possvel realizar trocas de arquivos como msica, vdeo e demais

    tipos de dados com computadores localizados em vrias partes do planeta. Temos tambm os processadores

    multincleo, basicamente distribuem as tarefas entre os vrios ncleos, o que dinamiza o processamento.

    Temos tambm, rede de telefonia celular, rede de computadores em uma fbrica ou um grande banco com

    muitas agncias, cada qual com computadores e caixas eletrnicos.

    Os desafios advindos da construo de sistemas distribudos so a heterogeneidade de seus

    componentes, ser um sistema aberto, o que permite que componentes sejam adicionados ou substitudos, a

    segurana, a escalabilidade a capacidade de funcionar bem quando o nmero de usurios aumenta o

    tratamento de falhas, a concorrncia de componentes e a transparncia.

    Vantagens:

    Economia: aproveita maquinas potencialmente ociosas, mais barato ter vrios processadores

    interconectados do que ter um supercomputador;

    Velocidade: a capacidade de interconectar processadores possibilita que se obtenham

    performances que apenas um sistema composto capaz de atingir;

    Distribuio inerente: mquinas espacialmente separadas;

    Confiabilidade: se uma mquina falha, o sistema como um todo pode ainda sobreviver;

    Crescimento incremental: poder computacional adicionado em incrementos;

    Elasticidade.

    Desvantagens:

    Falta de software adequado: maior complexidade no desenvolvimento;

    Falhas e saturao da rede: redes carregadas;

    Segurana: comprometimento dos dados trafegados, vrias portas de acesso.

  • 1.1 Caractersticas

    1.1.1 Heterogeneidade

    Principio da computao que permite hardware e software acessarem servios e executarem aplicativos por

    meio de um conjunto heterogneo de computadores e redes. A heterogeneidade (isto , variedade de

    diferena) se aplica aos seguintes aspectos:

    Redes;

    Hardware de Computadores;

    Sistemas Operacionais;

    Linguagens de Programao;

    Implementao de diferentes desenvolvedores.

    1.1.2 Segurana

    A segurana de recursos de informao tem trs componentes: confiabilidade (proteo contra exposio

    para pessoas no autorizadas), integridade (proteo contra alterao ou dano) e disponibilidade (proteo

    contra interferncia com os meios de acesso aos recursos).

    1.1.3 Escalabilidade

    Um sistema dito escalvel se permanece eficiente quando h um aumento significativo no nmero de

    recursos e no nmero de usurios. A internet um exemplo de um sistema distribudo no qual o nmero de

    computadores e servios vem aumentando substancialmente. O projeto de sistemas distribudos, escalveis,

    apresenta os seguintes desafios:

    Controlar o custo dos recursos fsicos: medida que a demanda por um recurso aumenta, deve ser

    possvel, a um custo razovel, ampliar o sistema para atend-la;

    Controlar a parda de desempenho: gerenciamento de um conjunto de dados, cujo tamanho

    proporcional ao nmero de usurios ou recursos presentes no sistema;

    Impedir que os recursos de softwares esgotem-se;

    Evitar gargalos de desempenho.

    1.1.4 Tolerncia a Falhas

    As falhas em sistemas distribudos so parciais isto , alguns componentes falham, enquanto outros

    continuam funcionando. Portanto o tratamento de falhas particularmente difcil. Os SDs fornecem um

    alto grau de disponibilidade perante falhas de hardware. A disponibilidade de um sistema a medida da

    proporo de tempo em que ele est pronto para uso. Quando um dos componentes de um SD falha, apenas

    o trabalho que estava usando o componente defeituoso afetado. Um usurio pode passar para outro

    computador, caso aquele que estava usando falhe; um processo servidor pode ser iniciado em outro

    computador.

    Recuperao de falhas: a recuperao envolve projetar software de modo que o estado dos dados

    permanentes possa ser recuperado ou retrocedido, aps a falha de um servidor;

    Redundncia: os servios podem se tornar tolerantes a falhas com o uso de componentes

    redundantes. Exemplo: um BD pode ser replicado em vrios servidores, para garantir que os dados

    permaneam acessveis aps a falha de qualquer servidor.

    1.1.5 Concorrncia

    Alteraes feitas por um cliente no devem interferir nas operaes de outros clientes, mesmo que esses

    clientes estejam manipulando o mesmo arquivo. Essas operaes devem ser sincronizadas de tal maneira

    que seus dados permaneam consistentes. Isso pode ser obtido atravs de tcnicas padro, como semforos,

    que so disponveis na maioria dos SOs.

  • 1.1.6 Transparncia

    A transparncia definida como sendo a ocultao, para um usurio final ou para um programador de

    aplicativos, da separao dos componentes em um SD de modo que o sistema seja percebido como um

    todo, em vez de uma coleo de componentes independentes. Esconder do usurio e do programador de

    aplicaes a separao de componentes em um SD, tal que este seja visto como um sistema centralizado.

    Transparncia de acesso: permite que os recursos locais e remotos sejam acessados com o uso de

    operaes idnticas;

    Transparncia de localizao: permite que os recursos sejam acessados sem o conhecimento de

    sua localizao fsica ou na rede;

    Transparncia de concorrncia: permite que vrios processos operem concorrentemente, usando

    recursos compartilhados sem interferncia entre eles;

    Transparncia de replicao: permite que vrias instncias dos recursos sejam usadas para

    aumentar a confiabilidade e o desempenho, sem conhecimento das rplicas por parte dos usurios

    ou dos programadores de aplicativos;

    Transparncia de falhas: permite a ocultao de falhas, possibilitando que usurios e programas

    aplicativos concluam suas tarefas, a despeito da falha de componentes de HW e SW;

    Transparncia de mobilidade: permite a movimentao de recursos e clientes dentro de um

    sistema, sem afetar a operao de usurios ou programas;

    Transparncia de desempenho: permite que o sistema seja reconfigurado para melhorar o

    desempenho medida que as cargas variam;

    Transparncia de escalabilidade: permite que o sistema e os aplicativos se expandam em escala

    sem alterar a estrutura do sistema ou os algoritmos de aplicativo.

    1.1.7 Flexibilidade

    Com a grande quantidade de processadores trabalhando em conjunto devem existir mecanismos para

    permitir adaptaes dinmicas durante a execuo do sistema. Quase sempre ocorrer situaes no

    previstas gerando quebras no fluxo do sistema e o SD deve ser capaz de contornar isso de forma simples,

    tambm deve ser fcil a incluso ou excluso de processadores do sistema sem que para isso seja

    necessrio modificar todos os componentes ou parar o funcionamento do SD.

    Ncleo monoltico: inclui gerenciamento de arquivos, diretrios e processos

    Micro-ncleo:

    Mecanismo para comunicao entre processos;

    Gerenciamento bsico de memria;

    Gerenciamento de processos a baixo nvel;

    Operaes de entrada/sado a baixo nvel.

    1.1.8 Confiabilidade

    Os SD devem possuir a capacidade, pelo menos em tese, de que se uma de suas mquinas parar de

    funcionar uma outra mquina dever assumir os servios que a mquina que parou fornecia. Alguns

    aspectos relacionados a confiabilidade devem ser levados em considerao como:

    Disponibilidade: O sistema est funcionando, chaves de hardware e software devem ser

    replicados, de modo que se um deles falhar, os outros estaro aptos a tomar conta da tarefa;

    Exatido: Replicao versus consistncia;

    Segurana: Como um servidor pode verificar a origem de uma mensagem?

    Tolerncia de falhas: replicao versus desempenho (descrito no tpico 1.1.4.).

    1.1.9 Desempenho

    Em geral, espera-se que uma aplicao distribuda apresente um desempenho melhor que aquele atribudo

    a um sistema centralizado. O desempenho uma grandeza que pode ser avaliada de diferentes formas

  • dependendo do tipo de aplicao, uma vez este fator desempenho pode estar associado a diferentes

    conceitos ou aspectos.

    1.1.9.1 Mtricas de desempenho;

    Tempo de resposta do servidor;

    Throughput (tarefas / tempo);

    Utilizao do sistema;

    Quantidade consumida da capacidade da rede.

    Um sistema com mltiplos processadores fracamente acoplados pode obter um desempenho que seria

    impossvel em um sistema com um processador, uma vez que podem reunir uma quantidade superior de

    processadores do que um sistema fortemente acoplado, mas raramente N processadores tem o

    desempenho de N vezes maior que um processador (escalabilidade), uma vez que depende de troca de

    mensagens.

    Por outro lado, um sistema com N processadores custa menos que um processador com N vezes mais

    velocidade, especialmente quando possvel aproveitar mquinas potencialmente ociosas e realizar

    tarefas em paralelo, aumentando o throughput do sistema.

    1.2 Elementos bsicos de um SD

    1.2.1 Sistema de Nomes

    Em sistemas distribudos, so usados nomes para fazer referncia a uma ampla variedade de recursos,

    como computadores, servios, objetos remotos e arquivos, assim como usurios. A atribuio de nomes

    um problema facilmente desprezado, mais com certeza fundamental no projeto de sistemas distribudos.

    Os processos no podem compartilhar recursos em particular a no ser que possam atribuir nomes a eles

    de forma consistente. Gerencia tabelas de nomes e funes do sistema. um elemento fundamental em

    um Sistema Distribudo. As mquinas chamadas servidores de nome de domnio permitem estabelecer a

    correspondncia entre o nome de domnio e o endereo IP das mquinas de uma rede, o mecanismo que

    consiste em encontrar o endereo IP que corresponde ao nome da mquina que se quer conectar.

    Nomes permitem que recursos sejam compartilhados;

    Nomes de recursos devem ser independendentes de sua localizao;

    O esquema de nomes deve escalar bem;

    Um sistema de interpretao de nomes deve ser acessvel por programa.

    1.2.2 Comunicao

    O sucesso de um bom SD est na forma em que o sistema se comunica e transita suas mensagens tendo o

    desempenho/confiabilidade.

  • 1.2.3 Estrutura de software

    SO fortemente acoplado para multiprocessadores e multicomputadores homogneos com o intuito de

    esconder e gerenciar recursos de hardware.

    Extensibilidade requer componentes de software com interfaces bem definidas;

    Um servio um gerenciador de objetos de um certo tipo e sua interface um conjunto de

    operaes;

    Novos servios devem interoperar com servios existentes e no duplicar suas funes gerando

    inconsistncia.

    1.2.4 Alocao de carga de trabalho

    Boa performance um requisito para a maior parte dos SD, tem impacto na efetividade com qual

    os recursos de hardware de um SD so usados, e portanto, na performance total do sistema;

    Computadores multiprocessadores de memria compartilhada so frequentemente usados para

    tarefas intensivas de processador em SDs;

    Melhor uso da capacidade de comunicao entre as mquinas, gerando menos trfego na rede.

    1.2.5 Manuteno de consistncia

    Consistncia de atualizao: Perde-se quando a escrita concorrente em dados compartilhados no

    se realiza como uma nica transao atmica

    Consistncia de rplica: Quando um conjunto de dados deve se manter replicado em vrias

    estaes

    Consistncia de cache: Modificaes em um cliente devem ser propagadas ao gerenciador e aos

    demais clientes

    Consistncia de falha: Deve-se evitar falhas mltiplas (em cascata); isolamento de falhas

    Consistncia de relgio: Relgios fsicos (sincronizao aproximada) e relgios lgicos

    (timestampings em mensagens)

    Consistncia de interface de usurio: Em uma aplicao distribuda interativa, o usurio aperta

    um boto e o resultado na tela no aparece de imediato, como se esperaria Pode ter havido um

    retardo (de comunicao) maior do que o usurio suportaria para ter a impresso de dispor de um

    sistema dedicado

  • 2 Modelos de Sistemas

    Cada modelo destinado a fornecer uma descrio abstrata e simplificada, mas consistente, de um aspecto

    relevante do projeto de um sistema distribudo. So divididos entre modelos fsicos, modelos de arquitetura

    e modelos fundamentais.

    Modelos Fsicos: consideram os tipos de computadores e equipamentos que constituem um

    sistema e sua interconectividade, sem os detalhes das tecnologias especficas.

    Modelos de Arquitetura: define a forma pela qual os componentes dos sistemas interagem e a

    maneira pela qual eles so mapeados em uma rede de computadores subjacentes.

    Modelos Fundamentais: ajudam a revelar aspectos importantes para os projetistas de SD.

    2.1 Modelos de arquitetura

    A arquitetura de um sistema sua estrutura em termos de componentes especificados separadamente. O

    objetivo global garantir que a estrutura atenda as demandas atuais e, provavelmente, as futuras impostas

    sobre ela. As maiores preocupaes so tornar o sistema confivel, gerencivel, adaptvel e rentvel.

    Primeiramente o modelo arquitetnico simplifica e abstrai as funes dos componentes individuais de um

    SD e, em seguida, considera: o posicionamento dos componentes em uma rede de computadores e os inter-

    relacionamentos entre os componentes.

    2.1.1 Elementos arquitetnicos

    Entidades de comunicao: definem o que est se comunicando e como se comunicam.

    Objetos: os objetos foram introduzidos para permitir e estimular o uso de estratgias orientadas a

    objetos nos sistemas distribudos (incluindo o projeto orientado a objeto e as linguagens de

    programao orientadas a objeto). Os objetos so acessados por meio de interfaces, com uma

    linguagem de definio de interface (IDL) associada fornecendo uma especificao dos mtodos

    definidos nesse objeto.

    Componentes: os componentes se parecem com objetos, pois oferecem abstraes voltadas ao

    problema para a construo de sistemas distribudos e tambm so acessados por meio de

    interfaces. A principal diferena que os componentes especificam um contrato mais completo

    para a construo do sistema. Essa estratgia mais contratual estimula e permite o

    desenvolvimento de componentes por terceiros e tambm promove uma abordagem de

    composio mais pura para a construo de sistemas distribudos, por remover dependncias

    ocultas.

    Servio Web: so intimamente relacionados aos objetos e aos componentes, novamente adotando

    uma estratgia baseada no encapsulamento de comportamento e no acesso por meio de interfaces.

    Enquanto os objetos e componentes so usados para o desenvolvimento de aplicaes fortemente

    acopladas, os servios web podem ser implementados por diferentes provedores e usar diferentes

    tecnologias.

    Paradigmas de comunicao: define como as entidades se comunicam em um SD.

    Comunicao entre processos: se refere ao suporte de nvel relativamente baixo para comunicao entre

    processos nos sistemas distribudos, incluindo primitivas de passagem de mensagens, acesso direto API

    oferecida pelos protocolos Internet (programao de soquetes) e tambm o suporte para comunicao em

    grupo (multicast).

    Invocao remota: cobre uma variedade de tcnicas baseadas na troca bilateral entre as entidades que se

    comunicam em um sistema distribudo e resultando na chamada de uma operao, um procedimento ou

    mtodo remoto.

  • Protocolos de requisio-resposta: so efetivamente um padro imposto em um servio de

    passagem de mensagem para suportar comunicao cliente-servidor. Em particular, esses

    protocolos normalmente envolvem uma troca por pares de mensagens do cliente para o servidor

    e, ento, do servidor para o cliente. Esse paradigma bastante primitivo e utilizado somente em

    sistemas em que o desempenho fundamental.

    Chamada de procedimento remoto: uma tecnologia de comunicao entre processos que permite

    a um programa de computador chamar um procedimento em outro espao de endereamento,

    como se fossem procedimentos no espao de endereamento local. Uma CPR iniciada pelo

    cliente enviando uma mensagem para um servidor remoto para executar um procedimento

    especfico. Uma resposta retornada ao cliente. Uma diferena importante entre CPR e CPL

    que, no primeiro caso, a chamada pode falhar por problemas de rede. Neste caso, no h nem

    mesmo garantia de que o procedimento foi invocado.

    Invocao de mtodo remoto: com essa estratgia, um objeto chamador pode invocar um mtodo

    em um objeto potencialmente remoto, usando invocao de mtodo remoto. Assim como na CPR,

    os detalhes subjacentes geralmente ficam ocultos do usurio. O funcionamento consiste

    basicamente em dois programas, segundo a arquitetura cliente-servidor, onde um seria o cliente e

    o outro servidor. O servidor instancia objetos remotos, o referencia com um nome e faz um

    BIND dele numa porta, onde este objeto espera por clientes que invoquem seus mtodos. J o

    cliente referencia remotamente um ou mais mtodos de um objeto remoto.

    Comunicao indireta: a essncia da comunicao indireta se comunicar por meio de um intermedirio e,

    assim, no ter qualquer acoplamento direto entre o remetente e um ou mais destinatrios. Neste caso, os

    remetentes no precisam saber para quem esto enviando (desacoplamento espacial) e os remetentes e os

    destinatrios no precisam existir ao mesmo tempo (desacoplamento temporal).

    Comunicao em grupo: est relacionada entrega de mensagens para um conjunto de

    destinatrios e, assim, um paradigma de comunicao de vrias partes, suportando, comunicao

    de um para muitos.

    Sistemas publicar-assinar: um sistema em que publicadores divulgam eventos estruturados para

    um servio de evento e assinantes expressam interesse em eventos especficos por meio de

    assinaturas, as quais podem ser padres arbitrrios sobre os eventos estruturados. O objetivo

    principal combinar as assinaturas com os eventos publicados e garantir a entrega correta de

    notificaes de evento.

    Fila de mensagens: enquanto os sistemas publicar-assinar oferecem um estilo de comunicao de

    um para muitos, as filas de mensagens oferecem um servio ponto a ponto por meio do qual os

    processos produtores podem enviar mensagens para uma fila especificada e os processos

    consumidores recebem mensagens da fila ou so notificados da chegada de novas mensagens na

    fila. Portanto, as filas oferecem uma indireo entre os processos produtores e consumidores.

    Espaos de tupla: modelo pelo qual os processos podem colocar itens de dados estruturados

    arbitrrios chamados tuplas, em um espao de tupla persistente e outros processos podem ler ou

    remover tais tuplas desse espao, especificando padres de interesse. Como o espao de tupla

    persistente, os leitores e escritores no precisam existir ao mesmo tempo.

    Memria compartilhada distribuda: fornecem uma abstrao para compartilhamento de dados

    entre processos que no compartilham a memria fsica. Contudo, apresentada aos

    programadores uma abstrao de leitura ou de escrita de estruturas de dados (compartilhadas)

    conhecida, como se estivessem em seus prprios espaos de endereamento locais, apresentando,

    assim, um alto nvel de transparncia de distribuio.

  • 2.1.2 Camadas de software

    O termo arquitetura de software se refere estruturao do software em camadas em um nico computador

    e, mais recentemente, em termos de servios oferecidos e solicitados entre processos localizados em um

    mesmo computador ou em computadores diferentes. Essa viso orientada para processo e servio pode ser

    expressa em termos de camadas e servios. Um servidor um processo que aceita pedidos de outro

    processo. Um cliente um processo que solicita algum servio a um ou vrios processos servidores.

    As camadas de HW e SW de mais baixo nvel so frequentemente denominadas de plataforma para sistemas

    e aplicativos distribudos. Essas camadas de mais baixo nvel fornecem servios para as camadas que esto

    acima delas com o objetivo de levar a interface de programao do sistema a um nvel que facilita a

    comunicao e a coordenao entre processos.

    A camada chamada de middleware um programa de computador que faz a mediao entre SW e demais

    aplicaes. utilizado para mover ou transportar informaes e dados entre programas de diferentes

    protocolos de comunicao, plataformas e dependncias do SO. Tem como objetivo principal mascarar a

    heterogeneidade e fornecer um modelo de programao conveniente para os programadores de aplicao.

    Em particular, a camada middleware, simplifica as atividades de comunicao de programas aplicativos

    por meio do suporte de abstrao como a invocao a mtodos remotos, a comunicao entre grupos de

    processos, a notificao de eventos, o particionamento, posicionamento e recuperao de objetos de dados

    compartilhados entre computadores, a replicao de objetos de dados compartilhados e a transmisso de

    dados multimdia em tempo real.

    A diviso de responsabilidades entre os componentes de um sistema (aplicativos, servidores e outros

    processos) e a atribuio destes nos diversos computadores de uma rede talvez seja o aspecto mais evidente

    de projeto de sistemas distribudos. Isso tem implicaes importantes no desempenho, na confiabilidade e

    na segurana do sistema resultante. Os principais modelos de arquitetura para SDs so cliente-servidor e

    peer-to-peer.

    Cliente-servidor: historicamente est a arquitetura mais importante e continua sendo amplamente

    empregada e a mais utilizada no meio dos SDs. Em particular, os processos clientes interagem com

    processos servidores, localizados possivelmente em distintos computadores hospedeiros, para acessar os

    recursos compartilhados que estes gerenciam. Funcionalidades como troca de e-mail, acesso internet ou

    acesso a um banco de dados, so construdos como base no modelo cliente-servidor. Por exemplo, um

    navegador web um programa cliente, em execuo no computador do usurio, que acede s informaes

    armazenadas num servidor web na internet.

    Peer-to-peer: uma arquitetura de redes de computadores onde cada um dos pontos ou ns da rede funciona

    tanto como cliente quanto como servidor, permitindo compartilhamentos de servios e dados sem a

    necessidade de um servidor central. Cada computador da rede um n e fica responsvel por uma parcela

    dos recursos da rede, tais como armazenamento, poder de processamento e largura de banda. Os recursos

    so divididos diretamente entre cada participante da rede sem a necessidade de uma coordenao central

    de um servidor. Nesse modelo de rede, cada par de computadores so fornecedores e consumidores de

    recursos, diferente do modelo cliente-servidor, onde o servidor alimenta toda rede e os clientes somente

    consomem.

  • 2.1.3 Comunicao entre processos

    A passagem de mensagem entre um par de processos pode ser suportada por duas operaes de

    comunicao de mensagem: send e receive, definidas em termos de destinos e mensagens. Para que um

    processo se comunique com outro, um deles envia (send) uma mensagem (uma sequncia de bytes) para

    um destino e o outro processo, no destino, recebe (receive) a mensagem. Essa atividade envolve a

    comunicao de dados do processo remetente para o processo destino e pode implicar na sincronizao dos

    dois processos.

    2.1.4 Comunicao sncrona e assncrona

    Uma fila associada a cada destino de mensagem. Os processos remetentes fazem as mensagens serem

    adicionadas em filas remotas e os processos destino removem mensagens de suas filas locais. A

    comunicao entre os processos remetente e destino pode ser sncrona ou assncrona. Na forma sncrona de

    comunicao, os processos remetente e destino so sincronizados a cada mensagem. Nesse caso, send e

    receive so operaes que causam bloqueio. Quando um envio (send) feito, o processo remetente (ou

    thread) bloqueado at que a recepo (receive) correspondente seja realizada. Quando uma recepo

    executada, o processo bloqueado enquanto a mensagem no chega.

    Na forma assncrona de comunicao, o uso da operao send no bloqueante, no sentido de que o

    processo remetente pode prosseguir assim que a mensagem tenha sido copiada para um buffer local, e a

    transmisso da mensagem ocorre em paralelo com o processo remetente.

    Soquete: definido como um ponto de destino para comunicao entre processos. A comunicao entre

    processos consiste em transmitir uma mensagem entre um soquete de um processo e um soquete de outro

    processo. Para que um processo receba mensagens, seu soquete deve estar vinculado a uma porta local e a

    um dos endereos IP do computador em que executado. As mensagens enviadas para um endereo IP e

    um nmero de porta em particular s podem ser recebidas por um processo cujo soquete esteja associado a

    esse endereo IP e a esse nmero de porta. Os processos podem usar o mesmo soquete para enviar e receber

    mensagens.

    2.1.5 Comunicao em Grupo

    A troca de mensagem aos pares no o melhor modelo para a comunicao de um processo com um grupo

    de outros processos, como o que ocorre, por exemplo, quando um servio implementado atravs de

    diversos processos em computadores diferentes para fornecer tolerncia a falhas ou melhorar a

    disponibilidade. Nesse caso o emprego do multicast mais apropriado trata-se de uma operao que

    permite o envio de uma nica mensagem para cada um dos membros de um grupo de processos de tal forma

    que membros participantes do grupo ficam totalmente transparentes para o remetente.

    Multicast: permite que o remetente transmita um nico datagrama IP para o conjunto de computadores que

    formam um grupo de multicast. O remetente no conhece as identidades dos destinatrios individuas nem

    do tamanho do grupo. A participao como membro de grupos multicast dinmica, permitindo aos

    computadores entrarem ou sarem a qualquer momento e participarem de um nmero arbitrrio de grupos.

    possvel enviar datagramas para um grupo multicast sem ser membro.

  • 2.2 Modelos Fundamentais

    Esses modelos definem propriedades fundamentais que se preocupam com as caractersticas de

    desempenho e confiabilidade dos processos, das redes de comunicao e com a segurana dos recursos

    presentes no sistema. Geralmente um modelo contm apenas os ingredientes essenciais que precisamos

    considerar para entender e raciocinar a respeito de certos aspectos do comportamento de um sistema. O

    objetivo de um modelo :

    Tornar explcitas todas as suposies relevantes sobre os sistemas que estamos modelando

    Fazer generalizaes a respeito do que possvel ou impossvel

    2.2.1 Modelo de Integrao

    A computao feita por processos. Eles interagem passando mensagens, resultando na comunicao

    (fluxo de informaes) e na coordenao (sincronizao e ordenao das atividades) entre eles. Na anlise

    e no projeto de sistemas distribudos, preocupamo-nos especialmente com essas interaes. O modelo de

    interao deve refletir o fato de que a comunicao ocorre com atrasos que, frequentemente, tm durao

    considervel. A preciso com a qual processos independentes podem ser coordenados limitada pelos

    atrasos de comunicao e pela dificuldade de se manter a mesma noo de tempo entre todos os

    computadores de um sistema distribudo. Dessa forma, os processos interagem atravs de passagem de

    mensagem para resolver um problema.

    Os fatores que afetam significativamente a interao de processos em um sistema distribudo:

    Latncia: o atraso entre o envio de uma mensagem por um processo e seu recebimento por outro

    processo.

    Largura de banda: a quantidade total de informao que pode ser transmitida sobre uma rede de

    um dado tempo.

    Jitter: variao em tempo para entregar uma srie de mensagens.

    2.2.2 Modelo de falha

    A operao correta de um sistema distribudo ameaada quando ocorre uma falha em qualquer um dos

    computadores em que ele executado (incluindo falhas de software) ou na rede que os interliga. O modelo

    de falhas define e classifica as falhas. Isso fornece uma base para a anlise de seus efeitos em potencial e

    para projetar sistemas capazes de tolerar certos tipos de falhas e de continuar funcionando corretamente.

    Falhas por omisso: se referem aos casos em que um processo ou canal de comunicao deixa de

    executar as aes que deveria. Por exemplo: falhas por omisso de processo ou na comunicao.

    Falhas arbitrrias: aquela em que ele omite arbitrariamente passos desejados do processamento

    ou efetua processamento indesejado. Portanto, s falhas arbitrrias no podem ser detectadas

    verificando-se se o processo responde s invocaes, pois ele poderia omitir arbitrariamente a

    resposta.

    Falhas de temporizao: so aplicveis aos sistemas distribudos sncronos em que limites so

    estabelecidos para o tempo de execuo do processo, para o tempo de entrega de mensagens e para

    a taxa de desvio do relgio.

  • 2.2.3 Modelo de segurana

    O modelo de segurana define e classifica as formas que tais ataques podem assumir, dando uma base para

    anlise das possveis ameaas a um sistema e, assim, guiando seu desenvolvimento de forma a ser capaz de

    resistir a eles. A segurana de um sistema distribudo pode ser obtida tornando seguros os processos e os

    canais usados por suas interaes e protegendo contra acesso no autorizado os objetos que encapsulam.

    Canais de comunicao devem ser seguros quanto a escuta secreta e interferncia de contedo

    Servidores devem poder verificar a identidade de seus clientes

    Clientes devem poder verificar a autenticidade de servidores

    A identidade do originador de uma mensagem deve poder ser verificada aps o envio da mensagem

    Mtodos para garantir a segurana em sistemas distribudos:

    Criptografia para permitir que um par de processos possa estabelecer um canal de comunicao

    seguro baseado em uma chave.

    Servio de autenticao para permitir que clientes e servidores possam fornecer, uns aos outros,

    evidncias convincentes de suas identidades.

  • 3 Padres de Projetos Middleware

    3.1 Requestor

    A invocao de objetos remotos exige que os parmetros de funcionamento sejam coletados e empacotados

    em um fluxo de bytes, uma vez que as redes apenas permitam fluxos de bytes a serem enviados. Uma

    conexo tambm precisa ser estabelecida e as informaes requisitadas so enviadas para o objeto remoto

    alvo. Essas tarefas devem ser realizadas para cada objeto remoto acessado pelo cliente, e pode, portanto,

    tornar-se tediosa para os desenvolvedores de clientes. Os clientes precisam realizar muitas operaes

    recorrentes para cada invocao. Incluindo marshaling (empacotamento) de informaes invocadas,

    gerenciamento da rede de conexo, a transmisso real de chamadas remotas atravs da rede, manipulao

    do resultado de uma invocao e a manipulao dos erros.

    Portanto, na aplicao do cliente utilizado o Requestor para acessar o objeto remoto. O Requestor

    fornecido com a referncia do objeto absoluto, o nome da operao e seus argumentos. Ele constri uma

    invocao remota a partir desses parmetros e envia a chamada para o objeto remoto. O Requestor esconde

    os detalhes do lado do cliente em relao ao lado dos objetos distribudos. Para chamar uma operao de

    um objeto remoto, o cliente passa os dados necessrios para invocar a operao para o solicitante, que em

    seguida, envia est invocao atravs da rede para o objeto remoto. Ele lida com os detalhes de atravessar

    o processo.

    O Requestor, aceita parmetros passados a ele pelo cliente. E ento delega as tarefas de marshaling

    (empacotamento) e de-marshaling (desempacotamento) de parmetros para o Marshaller. Em seguida, ele

    comea a enviar o pedido e receber a resposta usando o Cliente Request Handler. Se necessrio, ele aciona

    Invocation Interceptors.

    O Requestor independente dos detalhes especficos de objetos remotos, tais como o tipo do objeto remoto

    ou a assinatura da operao, tal como definido pela Interface Description. Ele constri invocaes

    dinamicamente a partir da informao recebida do cliente. Para garantir segurana, abstraes estaticamente

    tipadas, como os fornecidos por Cliente Proxy so utilizadas. Internamente eles utilizam o construtor de

    invocao dinmica fornecido pelo Requestor. Uma vez que a interface de objeto remoto pode mudar sem

    o Cliente Proxy perceber, a segurana minimizada, mas no completamente. Os tipos incompatveis e

    falhas de despachos no lado do servidor so comunicados aos clientes pelo Requestor usando Remoting

    Errors.

  • 3.2 Cliente Proxy

    Fornecer um Client Proxy para o desenvolvedor cliente que suporte a mesma interface que o objeto remoto.

    Para invocaes remotas, clientes apenas interagem com o Client Proxy local. O Client Proxy traduz a

    invocao local em parmetros para o Requestor, e desencadeia a invocao. O Client Proxy recebe o

    resultado do Requestor e entrega ao cliente usando um valor de retorno comum.

    O Client Proxy usa um Requestor para construir e enviar invocaes em toda a rede. Como o Client Proxy

    especifico para o tipo de um objeto remoto, ele normalmente gerado a partir da interface de descrio

    do objeto remoto.

    Para estar disponvel no lado do cliente, o Client Proxy tem que ser implantado para o cliente de alguma

    forma. No caso mais simples, o cdigo fonte do Cliente Proxy compilado com a aplicao cliente. Isto

    tem a complicao que a cada mudana da implementao do Client Proxy, o cliente teria de ser

    recompilados tambm. O cliente no deveria ter que mudar necessariamente por causa de qualquer mudana

    no Client Proxy.

    A distribuio de Client Proxies tambm pode ser feita como parte de uma pesquisa de processo. Este tem

    a vantagem de Client Proxies podem ser trocados de modo transparente. s vezes isso necessrio nos

    casos em que o Client Proxy participa de politicas de balanceamento de carga. O lado negativo desta

    abordagem est na responsabilidade de entivar implementaes de Client Proxy em toda rede. Isto pode ser

    evitado baixando ou enviando apenas a Interface Description para o cliente, o cliente gerando o Proxy de

    ligao tardia do cliente a partir dessa interface em runtime.

    Em alguns casos, at mesmo as interfaces de objetos remotos mudam durante o runtime. Tais alteraes

    podem ser tratadas no lado do servidor apenas, para exemplo, no Invoker. Contudo, se isto no possvel

    e o cliente precisa se alinhar com a mudana de interface, o uso do Client Proxy deve ser evitada, e os

    clientes devem usar o solicitante diretamente para a construo de invocaes remotas de forma dinmica.

    Ao fornecer diretamente a interface do objeto remoto e pelo que representa um objeto remoto especifico

    diretamente no processo do cliente, um Client Proxy tipicamente mais fcil de usar do que um solicitante,

    especialmente para desenvolvedores inexperientes.

    No entanto, a consequncia que um Client Proxy menos flexvel que o Requestor. Porque um Client

    Proxy usa um Requestor internamente, a soluo (um pouco) mais lenta e consome mais memria do que

    a pura soluo do Requestor.

  • 3.3 Invoker

    O Requestor envia pedidos atravs da rede, contendo o ID do objeto remoto, nome da operao, parmetros

    da operao, bem como outras informaes contextuais. O Invoker l os pedidos e demarshals

    (desempacota) para obter o objeto com o ID em procura e o nome da operao. Em seguida, ele procura o

    objeto local correto e sua implementao na operao, tal como descrito pela invocao remota, por fim

    invoca-o.

    O Invoker est localizado no lado do servidor dentro do processo do servidor de aplicao. Dependendo do

    configurado Configuration Group, um ou mais instancias Invoker existem, j que ambos os conceitos so

    relacionados. Um Server Request Handler associado trata do nvel mais baixo de comunicao. Isto inclui

    a recepo de mensagens remotas, gerenciamento de threads, agrupamento de ligaes, bem como envio

    de receptores.

    Quando um pedido de mensagem foi recebido totalmente pelo Server Request Handler, o mesmo entrega a

    invocao, contida na mensagem, para o Invoker. No caso de mltiplas solicitaes, a mensagem deve

    conter informaes suficientes para permitir que o Server Request Handler entre em contato com o Invoker

    correto. A mensagem portanto deve conter informaes sobre o Invoker, tal como nome do Invoker, ou ID.

    Se necessrio, o ID Ivoker deve fazer parte do Absolute Object Reference.

    Se ainda no tiver feito, o Invoker desempacota ainda mais a mensagem de solicitao para identificar o

    objeto remoto alvo, o nome e os parmetros de operao. O verdadeiro demarshaling tratado por um

    separador padro, o Marshaller.

    Caso o objeto remoto no puder ser encontrado pelo Invoker, o Invoker pode delegar despachar a um

    Location Forwarder. O Location Forwarder pode ser capaz de delegar para um objeto remoto em outro

    servidor de aplicao. Essas abordagens so utilizadas nos casos em que objetos remotos foram movidos,

    ou quando a carga equilibrada em vrios objetos remotos.

    O Invoker no lado do servidor e o Requestor no lado do cliente tem que ser compatvel em respeito as

    mensagens trocadas entre si. O Requestor tem que colocar todas as informaes exigidas pelo Invoker em

    uma mensagem de solicitao, e o Invoker tem que enviar a resposta.

    Usando um Invoker em vez de conexes de rede direta para objetos remotos reduz o nmero de entidades

    endereveis de rede necessris. Ele tambm permite que o Server Request Handler eficientemente

    compartilhe conexes para servidores que hospedam vrios objetos remotos.

  • 3.4 Client Request Handler

    O Client Request Handler responsvel por abrir e fechar as conexes de rede para aplicativos de servidor,

    envio de pedidos, recebimento de respostas e envio de retorno para o Requestor apropriado. Alm disso, o

    Client Request Handler lida com o tempo de espera e erros de invocao.

    responsvel pela manipulao da rede dentro das aplicaes do cliente. Um identificador de conexo

    usado para identificar as conexes e associar um Requestor. Tipicamente uma ligao a um servidor e a

    uma porta de do servidor pode ser compartilhada com outras invocaes enviadas para o mesmo servidor

    de aplicao. A tarefa real de envio da invocao de dados, especialmente em vrios contextos de

    protocolos disponveis, feita usando o Protocol Plug-in.

    O trabalho do Client Request Handler garantir a escalabilidade. Tem que ser concebida de tal maneira

    que ele manipula concomitante solues de forma eficiente. Para fazer isso, o reator [SSRB00] padro

    utilizado para desmultiplexar e enviar a mensagem de resposta. Um reator utiliza o identificador de conexo

    para notificar os responsvel sobre o resultado disponvel. O resultado pode ser tratado da seguinte forma,

    sncrona ou assncrona.

    No caso de chamadas sncronas, o Client Request Handler tem que esperar o resultado da chamada.

    Ou seja, ele bloqueado at que o resultado tenha chagado.

    Para chamadas assncronas o Requestor e Client Request Handler tem que seguir um dos padres

    de assncrona. No caso de um Result CallBack ou Pool Object respectivamente, ele despacha o

    resultado para um objeto callback Poll Object respectivamente, em vez de entregar o resultado de

    volta para a invocao do cliente sobre a pilha de chamadas.

    Quando so lanados eventos timeouts, o Client Request Handler informa ao Requestor sobre tais eventos.

    Para este efeito, o Cliente Request Handler registra para um timeout quando a invocao enviada para um

    objeto remoto. Se a resposta no chegar dentro do perodo timeout, o Client Request Handler recebe o

    evento de timeout e informa ao Requestor. Dependendo da configurao pode tentar , novamente, o envio

    da uma invocao antes de levantar o erro Remoting Error. O Client Request Handler tambm deve detectar

    outras condies de erro, tal como uma rede disponvel ou servidor de aplicao. Neste caso, ele tem que

    levantar um Remoting Error e encaminhar para o Requestor.

    Para muitas tarefas, Client e Server Client Handler tem que trabalhar em conjunto, especialmente para as

    extenses de manipulao da solicitao como Invocation Interceptors, Invocation Constexts, Protocol

    Plug-ins, ou outros servios. O Client Request Handler normalmente compartilhado entre mltiplos

    Requestors. Cliente Request Handler esconde a conexo e a manipulao de mensagens complexas dos

    Requestors.

  • 3.5 Server Request Handler

    O Server Request Handler lida com toda questo de comunicao do servidor de aplicao. Ele recebe

    mensagens da rede, combina os fragmentos da mensagem para completa-las e despacha as mensagens para

    o Invoker correto e posterior processamento. O Server Request Handler gerencia todos os recursos

    necessrios como conexes e threads.

    O Server Request Handler lida com mensagens, como elas so enviadas e recebidas atravs da rede,

    enquanto que o Invoker lida com pedidos (requests) e como eles so expedidos e invocados. Quando

    mltiplos Invokers esto presentes, o Server Request Handler desmarchals (desempacota) as mensagens at

    o ponto em que decide que o Invoker enviar a mensagem.

    Em alguns cenrios de aplicao, pode ser esperado que um cliente possa comunicar-se repetidamente com

    objetos remotos no mesmo servidor de aplicao, enquanto que em outro cenrio isso pode no ser o caso.

    Tm estratgias, diferentes para estabelecimentos de conexo. Por exemplo, uma nova ligao pode ser

    aberta e fechada para cada mensagem enviada atravs da rede. De forma alternativa, a ligao pode ser

    mantida aberta para um tempo especifico e depois reutilizada para ser mantida aberta por um tempo

    especfico e por fim reutilizada para invocaes subsequentes. O ltimo tem a vantagem de evitar a

    sobrecarga de estabelecer e destruir conexes para pedidos repetidos do cliente. No entanto, as conexes

    que so mantidas abertas consomem recursos. A estratgia de estabelecimento de conexo do servidor de

    aplicao executado pelo Server Request Handler.

    Uma importante consequncia no uso do Server Request Handler que as redes de baixo nvel so

    centralizadas em um nico sistema componente. Pools de conexo e de thread permitem que o Server

    Request Handler seja altamente concorrente, evitando o risco de bloqueios.

    Observe que existem algumas reas de aplicao em que vrias instncias Server Request Handler so teis,

    como o caso da ligao direta de objetos remotos para portas de rede. Por exemplo, se h apenas alguns

    objetos remotos, mas eles exigem alto desempenho, isso resulta em diferentes configuraes de canais de

    comunicao e configuraes de simultaneidade para objeto remoto. difcil lidar com esse cenrio de

    forma centralizada, utilizando apenas um Server Request Handler.

  • 3.6 Marshaller

    Use Marshallers compativeis no lado do cliente e servidor que serialize as informaes invocadas.

    Dependendo do ambiente, a serializao pode ser fornecida pelos prprios tipos de dados. As referncias a

    objetos remotos so serializados como Absolute Object References. Um Marshaller converte invocaes

    remotas em fluxos de bytes. Ele fornece um mecanismo genrico que no especifico para qualquer

    determinado tipo de objeto remoto.

    O Requestor, Invoker e Request Handlers usam o Marshaller para recuperar as informaes de invocao

    contidas no fluxo da mensagem de byte. Para os tipos de dados complexos Marshaller l recursivamente

    sua hierarquia de tipos. Identidades dos objetos so tratadas como tipos de dados especiais, mas so

    empacotados de uma maneira similar aos tipos de dados complexos. As referncias a outros objetos remotos

    so convertidas em Absolute Object References.

    Objeto local que contm muitos elementos de dados usados pelo objeto remoto invocado no deve ser

    referenciado remotamente, mas empacotado por valor, porque consultando os dados nesses objetos

    remotamente provavelmente requerem uma srie de invocaes remotas subsequentes, desperdiando rede

    e baixo desempenho. Um formato de transporte genrico necessrio para transportar algum tipo de dados

    atravs da rede. A serializao de um tipo complexo pode ser realizada de vrias formas:

    A linguagem de programao pode fornecer um tipo genrico, para facilitar a serializao. Este

    o caso das linguagens Java ou .NET que podem usar Reflection para serializao estrutural dos

    tipos.

    As ferramentas podem ser usadas para gerar o cdigo de serializao diretamente a partir da

    Interface Description, supondo que a estrutura de tais tipos est expressa na Interface Description.

    Os desenvolvedores podem ter que fornecer funcionalidades de serializao. Neste caso, o

    desenvolvedor geralmente tem de implementar uma interface adequada que declara operaes de

    serializao e desserializao.

    O formato concreto dos dados dentro de um fluxo de bytes depende do middleware de objetos distribudos

    usado. Tudo um fluxo de bytes quando so transportados para toda a rede. Para representar estruturas de

    dados complexas, aconselhvel a utilizao de um formato estruturado, como XML e CDR.

    Um formato de marshaling genrico nunca pode ser o ideal para todas as estruturas de dados ou cenrios.

    Dependendo do caso de uso, alguns formatos de serializao so melhores que outros. XML ideal para

    vrios casos, mas muito ineficiente no que diz respeito ao uso de largura de banda para alguns domnios,

    tais como o domnio de sistemas embarcados. CDR um formato binrio e padronizado, o que significa

    que muitas ferramentas esto disponveis para seu uso.

  • 3.7 Interface Description

    A Interface Description serve como o contrato entre Client Proxy e Invoker. Ambos utilizam tanto tcnicas

    de gerao de cdigo ou de configurao de tempo de execuo para aderir a esse contrato. Usando a

    Interface Description em um arquivo separado, um gerador de cdigo gera um cdigo para o Client Proxy

    e Invoker. O Client Proxy utilizado pelo cliente adere a um mesmo contrato como o Invoker, que despacha

    a invocao ao objeto remoto. Desta forma, os detalhes necessrios para garantir a segurana de tipos esto

    escondidos do cliente e os objetos remotos.

    Normalmente, uma Interface Description contm especificaes de interface que incluem suas operaes e

    assinaturas, bem como a definio de tipos complexos definidos pelo usurio. A descrio de interface em

    si pode existir em vrias formas:

    Linguagem de definio de interface: a Interface Description separada do texto do programa, por

    exemplo, em um arquivo fornecido pelo objeto remoto. Uma linguagem de definio de interface

    define a sintaxe e semntica das declaraes.

    Repositrio de interface: A Interface Descripton fornecida aos clientes em tempo de execuo

    usando um repositrio de interface exposto pelo aplicativo de servidor, ou alguma outra entidade.

    O repositrio de interface usado para a construo de Client Proxies em tempo de compilao,

    assim como na variante de linguagem de descrio de interface acima. Alm disso, um repositrio

    de interface pode ser utilizado para chamadas dinamicamente construdas, a fornecer informaes

    sobre a interface remotamente acessvel em tempo de execuo. O Invoker tem opes

    semelhantes.

    Interfaces de reflexo: a Interface Description fornecida por meio de reflexo, seja oferecida,

    atravs da linguagem de programao do lado do servidor ou usando o padro de reflexo. Para

    os clientes ao fazer uso de reflexo, o aplicativo do servidor tem que fornecer alguns meios para

    permitir que essa informao seja consultada remotamente.

    Em Middleware de objetos distribudos que suporta mais de uma linguagem de programao, as Interface

    Description devem ser disponibilizada em uma sintaxe independente da linguagem de programao. Isso

    requer ferramentas que traduzam a Interface Description em diferentes linguagens. Interface Description

    so um meio importante para a construo de sistemas distribudos interoperveis. O objeto middleware

    distribudo fornece ligao de uma lngua, alm das descries de interfaces, para definir regras de

    converso de genricas para/de uma linguagem de programao.

  • 3.8 Remoting Error

    REFERENCIAS

    Sistemas Distribudos - Conceitos e Projeto - 5 Ed. 2013 - George Coulouris, Tim Kindberg, Jean

    Dollimore

    Sistemas Distribudos - Princpios e Paradgmas - 2 Ed. 2008 - Tanenbaum, AndrewVan Steen, Maarten

    Silberchatz, Abraham. Operation System Concepts. 5 eth AddisonWesley. November 1998.