Escolar Documentos
Profissional Documentos
Cultura Documentos
versão draft 1
DESENVOLVIMENTO DE SISTEMAS DISTRIBUIDOS
data Comentários
03/08/2011 Início do semestre.
Entrega da ementa e comentários sobres os assuntos. Recomendação da
bibliografia. Períodos de provas. Limite de faltas para aprovação. Revisão de
10/08/2011 rede de computadores. MÓDULO 1: caracterização de sistemas distribuídos;
internet; intranets; computação móvel e ubíqua; compartilhamento de recursos
e a web; serviços web
MÓDULO 2: Modelos de Sistema; Cliente-Servidor; Java RMI; Corba; COM;
17/08/2011
DCOM. MÓDULO 3: Sistemas distribuídos baseados em objetos
MÓDULO 4: Sistemas de Arquivos distribuídos. MÓDULO 5: Sistemas
24/08/2011
distribuídos baseados na Web; Exercicios de fixação
MÓDULO 6: Sistemas distribuídos baseados em coordenação. Exercícios de
31/08/2011
fixação
07/09/2011 FERIADO. PROCLAMAÇÃO DA INDEPENDÊNCIA DO BRASIL.
14/09/2011 MÓDULO 7: Sistemas peer-to-peer;
21/09/2011 REVISÃO MÓDULOS 1 A 7. PREPARAÇÃO PARA PROVA P1.
28/09/2011 PROVA P1 – Turma Sistemas de informação
05/10/2011 PROVA P1 - Turma Ciência da Computação
versão draft 2
DESENVOLVIMENTO DE SISTEMAS DISTRIBUIDOS
versão draft 3
DESENVOLVIMENTO DE SISTEMAS DISTRIBUIDOS
MÓDULO 1:
Caracterização de Sistemas Distribuídos;
Internet;
Intranets;
Computação Móvel e Ubíqua;
Compartilhamento de recursos e a web;
Serviços Web
MÓDULO 2:
Modelos de Sistema;
Cliente-Servidor;
Java RMI; Corba;
COM; DCOM.
MÓDULO 3:
Sistemas distribuídos baseados em objetos
versão draft 4
DESENVOLVIMENTO DE SISTEMAS DISTRIBUIDOS
versão draft 7
DESENVOLVIMENTO DE SISTEMAS DISTRIBUIDOS
Modelos de Sistema
versão draft 9
DESENVOLVIMENTO DE SISTEMAS DISTRIBUIDOS
Modelos de Sistema
Camadas de Software
Applications, services
Middleware
Operating system
Platform
versão draft 10
DESENVOLVIMENTO DE SISTEMAS DISTRIBUIDOS
Modelos de Sistema
Plataforma:
As camadas de hardware e software de mais baixo nível são
frequentemente denominadas de plataforma para sistemas e
aplicativos distribuidos. Essas camadas de mais baixo nível
fornecem serviços para as camadas que estão acima delas de forma
a levar a interface de programação do sistema a um nível de facilita
a comunicação e a coordenação entre processos. Intel
x86/Windows, Intel x86/Solaris, Power PC/Mac, são exemplos
importantes de plataformas.
versão draft 11
DESENVOLVIMENTO DE SISTEMAS DISTRIBUIDOS
Modelos de Sistema
Middleware:
versão draft 12
DESENVOLVIMENTO DE SISTEMAS DISTRIBUIDOS
versão draft 13
DESENVOLVIMENTO DE SISTEMAS DISTRIBUIDOS
CORBA ( Common Object Request Broker Architecture ):
Para que ocorra a comunicação entre os clientes e os servidores
CORBA, as chamadas dos clientes são repassadas para o
mecanismo de comunicação da arquitetura CORBA que são os
ORBs(Object Request Brokers) que baseiam-se no protocolo para
objetos remotos IIOP(Internet Inter-ORB Protocol). O ORB atua
como um barramento de comunicação sobre o qual todo objeto
CORBA interage, transparentemente, com outros objetos CORBA
localizados remota ou localmente.
Um objeto CORBA interage com o ORB através da interface ORB ou através de um Object Adapter (um BOA –
Basic Object Adapter ou POA – Portable Object Adapter).
versão draft 14
DESENVOLVIMENTO DE SISTEMAS DISTRIBUIDOS
versão draft 15
DESENVOLVIMENTO DE SISTEMAS DISTRIBUIDOS
versão draft 18
DESENVOLVIMENTO DE SISTEMAS DISTRIBUIDOS
MICROSOFT DCOM:
versão draft 19
DESENVOLVIMENTO DE SISTEMAS DISTRIBUIDOS
MICROSOFT DCOM:
MICROSOFT DCOM:
versão draft 21
DESENVOLVIMENTO DE SISTEMAS DISTRIBUIDOS
MICROSOFT DCOM:
versão draft 22
DESENVOLVIMENTO DE SISTEMAS DISTRIBUIDOS
MICROSOFT DCOM:
versão draft 23
DESENVOLVIMENTO DE SISTEMAS DISTRIBUIDOS
MICROSOFT DCOM:
versão draft 25
DESENVOLVIMENTO DE SISTEMAS DISTRIBUIDOS
Cliente Servidor:
Essa é a arquitetura mais citada quando os sistemas distribuídos
são discutidos. Historicamente ela é a mais importante e continua
sendo amplamente empregada.
result result
Server
Client
Key:
Process: Computer:
versão draft 26
DESENVOLVIMENTO DE SISTEMAS DISTRIBUIDOS
versão draft 27
DESENVOLVIMENTO DE SISTEMAS DISTRIBUIDOS
Peer 1
Application
Application
Sharable Peer 3
objects
Application
Peer 4
Application
Peers 5 .... N
versão draft 28
DESENVOLVIMENTO DE SISTEMAS DISTRIBUIDOS
Applications, services
versão draft 29
DESENVOLVIMENTO DE SISTEMAS DISTRIBUIDOS
versão draft 30
DESENVOLVIMENTO DE SISTEMAS DISTRIBUIDOS
Características:
A passagem de mensagens entre um par de processos pode ser
suportada por duas operações de comunicação 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 para um destino e o outro processo, no destino, recebe
(receive) a mensagem.
versão draft 31
DESENVOLVIMENTO DE SISTEMAS DISTRIBUIDOS
Comunicação Síncrona
Comunicação Assíncrona
Emprego do protocolo UDP:
Para algumas aplicações é aceitável usar um serviço que esteja
exposto a falhas por omissões ocasionais. Por exemplo o Domain
Name Service, que pesquisa nomes DNS na Internet é
implementado sobre UDP. O voice over IP ( VOIP ) também é
executado sobre UDP. Às vezes os datagramas UDP são uma
escolha atraente, pois eles não sofrem as sobrecargas necessárias
a entrega de mensagens garantidas.
versão draft 32
DESENVOLVIMENTO DE SISTEMAS DISTRIBUIDOS
versão draft 34
DESENVOLVIMENTO DE SISTEMAS DISTRIBUIDOS
versão draft 35
DESENVOLVIMENTO DE SISTEMAS DISTRIBUIDOS
MÓDULO 4:
Sistemas de Arquivos distribuídos.
MÓDULO 5:
Sistemas distribuídos baseados na Web;
versão draft 36
DESENVOLVIMENTO DE SISTEMAS DISTRIBUIDOS
MÓDULO 4:
• Introdução
• Arquitetura de serviço de arquivos
• Estudo de caso: Sun Network File System
• Aprimoramentos e outros desenvolvimentos
versão draft 37
DESENVOLVIMENTO DE SISTEMAS DISTRIBUIDOS
versão draft 39
DESENVOLVIMENTO DE SISTEMAS DISTRIBUIDOS
Client module
versão draft 40
DESENVOLVIMENTO DE SISTEMAS DISTRIBUIDOS
versão draft 41
DESENVOLVIMENTO DE SISTEMAS DISTRIBUIDOS
Application Application
program program
UNIX
system calls
UNIX kernel
UNIX kernel Virtual file system Virtual file system
Local Remote
file system
client server
system system
NFS
protocol
versão draft 42
DESENVOLVIMENTO DE SISTEMAS DISTRIBUIDOS
MÓDULO 5:
Sistemas distribuídos baseados na Web.
Introdução
Serviços Web
Descrições de serviço IDL para serviços Web
Um serviço de diretório para uso com serviços web
versão draft 43
DESENVOLVIMENTO DE SISTEMAS DISTRIBUIDOS
Introdução
Um serviço web ( web service ) fornece uma interface de serviço
que permite aos clientes interagirem com servidores de uma
maneira mais geral do que acontece com os navegadores web.
Os clientes acessam as operações na interface de um serviço web
por de meio de requisições e respostas formatadas em XML e
normalmente transmitidas por HTTP. Os serviços web podem ser
acessados de uma maneira ad hoc do que os serviços baseados
em CORBA, permitindo que eles sejam mais facilmente usados em
aplicações internet.
Assim como no CORBA e em JAVA, as interfaces dos serviços web
podem ser descritas em uma IDL. Mas para os serviços web,
informações adicionais precisam ser descritas, incluindo a
codificação e os protocolos de comunicação em uso e o local do
serviço. Os usuários exigem uma maneira segura de criar,
armazenar e modificar documentos e trocá-los na internet. Os
canais TLS não fornecem todos os requisitos necessários. A
segurança da XMLversão
sedraft
destina a suprir essa falta. 44
DESENVOLVIMENTO DE SISTEMAS DISTRIBUIDOS
versão draft 45
DESENVOLVIMENTO DE SISTEMAS DISTRIBUIDOS
Applications
Directory serviceSecurity Choreography
SOAP
versão draft 46
DESENVOLVIMENTO DE SISTEMAS DISTRIBUIDOS
URI – uniform resource identifier – identificador de recurso geral, cujo
valor pode ser um URL ou URN.
versão draft 50
DESENVOLVIMENTO DE SISTEMAS DISTRIBUIDOS
SOAP:
O protocolo SOAP (simple object access protocol) é projetado
para permitir tanto interação cliente servidor como assíncrona
pela internet. Ele define um esquema para uso de XML para
representar o conteúdo de mensagens de requisição e resposta,
assim como um esquema para a comunicação de documentos.
Originalmente o protocolo SOAP era baseado apenas em HTTP
mas a versão atual é projetada para usar uma variedade de
protocolos de transporte, incluindo SMTP, TCP ou UDP.
A especificação do protocolo SOAP declara:
-Como a XML deve se usada para representar o conteúdo de
mensagens individuais
- Como duas mensagens podem ser combinadas para produzir
um padrão de requisição e resposta.
- As regras sobre como os destinatários das mensagens devem
processar os elementos XML que elas contêm.
API’s SOAP foram implementadas em muitas linguagens: JAVA,
JAVA script, Perl, Python.NET,
versão draft
C++, C# e Visual Basic. 51
DESENVOLVIMENTO DE SISTEMAS DISTRIBUIDOS
versão draft 52
DESENVOLVIMENTO DE SISTEMAS DISTRIBUIDOS
envelope
header
body
body element body element
versão draft 53
DESENVOLVIMENTO DE SISTEMAS DISTRIBUIDOS
Estrutura do protocolo SOAP
<SOAP-ENV:envelope>
<!— Elemento raiz do SOAP e define que essa é uma mensagem SOAP-->
<SOAP-ENV:header>
<!—Especifica informações especificas como autenticação (opcional)-->
</SOAP-ENV:header>
<SOAP-ENV:body>
<!—O elemento BODY contém o corpo da mensagem-->
<SOAP-ENV:fault>
<!—O elemento FAULT contém os erros que podem ocorrer-->
</SOAP-ENV:fault>
</SOAP-ENV:body>
</SOAP-ENV:envelope>
versão draft 55
DESENVOLVIMENTO DE SISTEMAS DISTRIBUIDOS
Exemplo 1: SOAP
POST /StockQuote HTTP/1.1
Host: www.stockquoteserver.com
Content-Type: text/xml; charset="utf-8"
Content-Length: nnnn
SOAPAction: "Some-URI"
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Header>
<t:Transaction
xmlns:t="some-URI" SOAP-ENV:mustUnderstand="1“>5
<t:Transaction>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<m:GetLastTradePrice> xmlns:m="Some-URI">
<symbol>DIS</symbol>
</m:GetLastTradePrice>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope> versão draft 56
DESENVOLVIMENTO DE SISTEMAS DISTRIBUIDOS
Exemplo 2: SOAP
flight bookinga
flight bookingb
Travel Agent
Client
Service hire car booking
a
versão draft 57
DESENVOLVIMENTO DE SISTEMAS DISTRIBUIDOS
Web Service Description Language (WSDL)
Documento WSDL
De que forma um cliente de um Web Service sabe qual
formato dos métodos a serem chamados e quais
parâmetros a serem passados? Como cliente e serviço
sabem como processar uma requisição?
Para solucionar estes tipos de perguntas foi criado um
documento, que utiliza uma linguagem chamada WSDL.
WSDL ou Web Service Description Language é uma
linguagem baseada em XML, utilizada para descrever um
Web Service. Um Web Service deve, portanto, definir todas
as suas interfaces, operações, esquemas de codificação,
entre outros neste documento.
versão draft 58
DESENVOLVIMENTO DE SISTEMAS DISTRIBUIDOS
REST (representational state transfer)
versão draft 59
DESENVOLVIMENTO DE SISTEMAS DISTRIBUIDOS
Descrições de serviço IDL para serviços Web
As definições de interface são necessárias para permitir que os clientes
se comuniquem com os serviços. Para serviços web, as definições de
interface são fornecidas como parte de uma descrição de serviço mais
geral, que especifica duas outras características adicionais, como as
mensagens devem ser comunicadas ( por exemplo, por SOAP com
HTTP ) e o URI do serviço. Para fornecer serviço em ambiente com
múltiplas linguagens, as descrições de serviço são escritas em XML.
A descrição do serviço forma a base de um acordo entre um cliente e
um servidor quanto ao serviço oferecido. Ela reúne todos os fatos
pertinentes ao serviço que são relevantes para seu clientes. As
descrições de serviço geralmente são usadas para gerar stubs de
cliente que implementam automaticamente o comportamento correto
para o cliente.
O componente do tipo IDL de uma descrição de serviço é mais flexível
do que as outras IDL’s, pois um serviço pode ser especificado em
termos dos tipos de mensagens que enviará e receberá, ou em termos
das operações que suporta, para permitir a troca de documentos e
interações estilo requisição
versão draft e resposta. 60
DESENVOLVIMENTO DE SISTEMAS DISTRIBUIDOS
definitions
abstract concrete
versão draft 61
DESENVOLVIMENTO DE SISTEMAS DISTRIBUIDOS
Um serviço de diretório para uso com serviços web
Existem muitas maneiras pelas quais os clientes podem obter
descrições de serviço, por exemplo qualquer um que forneça um
serviço web de mais alto nível, como o serviço de agente de viagens
que quase que certamente faria uma página web anunciando o serviço
e os clientes em potencial se deparariam com a página ao procurar
serviços desse tipo.
Entretanto, qualquer organização que pretenda basear suas aplicações
em serviços web achará mais conveniente usar um serviço de diretório
para tornar esses serviços disponíveis para os clientes. Esse é o
objetivo do UDDI (Universal Directory and Discovery Service) [
Bellwod et al. 2003] que fornece um serviço de nome e um serviço de
diretório.
Serviço de diretório: um serviço que armazena conjuntos de
vínculos entre nomes e atributos e que pesquisa entradas que
correspondem a especificações baseada no atributo. Exemplo:
Active Directory Services da Microsoft ou X.500 e se primo LDAP.
Normalmente o serviço de diretório é chamado de serviços de
páginas amarelas
versão draft 62
Serviço de nome: lista telefônica ou serviço de páginas brancas.
DESENVOLVIMENTO DE SISTEMAS DISTRIBUIDOS
versão draft 63
DESENVOLVIMENTO DE SISTEMAS DISTRIBUIDOS
versão draft 64
DESENVOLVIMENTO DE SISTEMAS DISTRIBUIDOS
As descrições de serviço WSDL podem ser pesquisadas pelo nome (
um serviço de catálogo telefônico, ou serviço de nomes ) ou pelo
atributo ( serviço de diretório ou serviço de páginas amarelas ). Elas
podem ser acessadas diretamente por meio de seus URL’s o que é
conveniente para desenvolvedores que estejam projetando programas
clientes que utilizam o serviço.
As estruturas de dados que suportam UDDI são projetadas de forma
a permitir todos os estilos de acesso anteriores e podem incorporar
qualquer volume de informações legíveis para seres humanos.
Os dados são organizados em quatro estruturas:
BusinessEntity: descreve a organização que fornece esses serviços
web, dando seu nome, endereço, atividades, etc...
BusinessServices: armazena informações sobre um conjunto de
instâncias de um seviço web, como seu nome e uma descrição de seu
propósito; por exemplo, agente de viagens ou livraria.
BindingTemplate: contém o endereço de uma instância de serviço
web e referências para descrições do serviço
tModel: contém descrições de serviço, normalmente documentos
WSDL, armazenadas fora do banco de dados e acessadas por meio de
URL. versão draft 65
DESENVOLVIMENTO DE SISTEMAS DISTRIBUIDOS
businessEntity businessServices
human readable businessServices
information
businessServices bindingTemplate
about the publisher
human readable
bindingTemplate
information URL
about a bindingTemplate tModel
family of services information tModel
about the
URL
serviceinterfaces
service interfaces
tModel
key URL
key service descriptions
key
versão draft 66
DESENVOLVIMENTO DE SISTEMAS DISTRIBUIDOS
QUESTÃO QUESTÃO - GRUPO 2
1 DEFINA UFID
2 CARACTERIZE SERVIÇO DE DIRETORIO E ARQUIVO DE CLIENTES.
3 EXPLIQUE SUCINTAMENTE SUN NETWORK FILE SYSTEM.
4 QUAL A FINALIDADE DO PROTOCOLO NFS.
5 DEFINA SUCINTAMENTE UM WEB SERVICE.
6 COMPARE O SERVIÇOS CORBA COM WEB SERVICE.
7 É POSSIVEL A UTILIZAÇÃO DE IDL PARA JAVA, CORBA E WEB SERVICE?
UMA DAS PRINCIPAIS PLATAFORMAS UTILIZADAS EM WEB SERVICE ESTA
8
ESTRUTURADA EM GRANDE ESCALA. TRATA-SE DA ARQUITETURA GRID. DEFINA GRID.
9 DEFINA XML E OS PRINCIPAIS PROTOCOLOS DA CAMADA DE APLICAÇÃO.
10 QUAL O SIGNIFICADO SOAP. EXEMPLIFIQUE SUA UTILIZAÇÃO
11 QUAL A DIFERENÇA A DIFERENÇA ENTRE URI, URL E URN
12 DEFINA WSDL
13 FAÇA UM COMPARATIVO ENTRE SOAP E REST.
14 DEFINA SNIPING. QUAL A PRINCIPAL FINALIDADE DE UTILIZAÇÃO?
15 QUAIS SÃO AS PINCIPAIS LINGUAGENS QUE XML SUPORTA?
CARACTERIZE AS PRINCIPAIS ESTRUTURAS DO PROTOCOLO SOAP. ELABORE UM
16
DESENHO REPRESENTATIVO DESSA ESTRUTURA
17 QUAIS SÃO OS PRINCIPAIS BLOCOS FUNCIONAIS DO XML DEFINIDOS PELO W3SCHOOL?
18 DEFINA OS PRINCIPAIS ELEMENTOS DE UMA DESCRIÇÃO WSDL
19 DEFINA O SERVIÇO UDDI.
O QUE É UM SERVIÇO DE DIRETORIO? EXEMPLIFIQUE E CARACTERIZE UM SERVIÇO DE
20
PAGINAS AMARELAS NA WEB.
versão draft 67
DESENVOLVIMENTO DE SISTEMAS DISTRIBUIDOS
versão draft 68
DESENVOLVIMENTO DE SISTEMAS DISTRIBUIDOS
MÓDULO 6:
Sistemas distribuídos baseados em coordenação.
Coordenação de serviços Web
MÓDULO 7:
Sistemas peer to peer
versão draft 69
DESENVOLVIMENTO DE SISTEMAS DISTRIBUIDOS
versão draft 70
DESENVOLVIMENTO DE SISTEMAS DISTRIBUIDOS
versão draft 71
DESENVOLVIMENTO DE SISTEMAS DISTRIBUIDOS
M
X
T11
X
Client T1 N
T T 12
Y
T
T
T
21
T2
Client
Y
P
Z
T
22
T = openTransaction Y
openSubTransaction T B b.withdraw(20)
2
a.withdraw(10);
openSubTransaction
b.withdraw(20); Z
openSubTransaction
c.deposit(10); T3 C c.deposit(10)
openSubTransaction
d.deposit(20); T4 D d.deposit(20)
closeTransactionversão draft 73
DESENVOLVIMENTO DE SISTEMAS DISTRIBUIDOS
versão draft 74
DESENVOLVIMENTO DE SISTEMAS DISTRIBUIDOS
versão draft 75
DESENVOLVIMENTO DE SISTEMAS DISTRIBUIDOS
Peer 1
Application
Application
Sharable Peer 3
objects
Application
Peer 4
Application
Peers 5 .... N
versão draft 76