Escolar Documentos
Profissional Documentos
Cultura Documentos
Sistemas Distribuídos
Hoje em dia…
• O paradigma de desenvolvimento
dominante é Orientado aos Objectos
(OOP)
Sistemas Distribuídos
Modelo de RPCs/RMIs
• Modelo de programação que se
aproxime dos programas tradicionais
(centralizados).
• Chamada de procedimentos.
• Invocação de métodos.
Sistemas Distribuídos
Middleware
• Software que fornece um modelo de
programação acima dos blocos básicos de
construção de processos e mensagens.
• Permite aos desenvolvedores concentrar-se na
lógica da aplicação em vez de detalhes da
distribuição (programação na camada de
aplicação).
Sistemas Distribuídos
RPC/RMI Middleware of
common use
• Common Object Request Broker
Architecture (CORBA): Object Management
Group (OMG), many providers
• Distributed Component Object Model
(DCOM): Microsoft
• Remote Procedure Call: Two major
specifcations: Sun’s and DCE (inc. Microsoft)
• Remote Method Invocation – RMI: CORBA
is a form of RMI, Java RMI (from Sun)
• Simple Object Access Protocol (SOAP):
Many providers inc. Microsoft and Sun
Sistemas Distribuídos
Objectivos de se usar
Middleware
• Programming Model Transparency: You don’t
have to know that you are using remote objects
• Location Transparency: You don’t have to
know where the objects reside
• Transport Transparency: Middleware
supporting abstractions are independent of the
underlying transport mechanisms
• Hardware Transparency: You don’t have to
care about the architecture of the diferent
machines were your program is running
• Language Transparency: You don’t have to
worry about in which language the objects were
really written Sistemas Distribuídos
Object Model…
Sistemas Distribuídos
Remote and Local
Invocations
• Existem dois pontos importantes a
perceber:
– O atraso na chamada de método é
diferente
– A semantica de erros tambem é
diferente
Sistemas Distribuídos
Remote Object and its
Interface
• Cada processo contém objectos, alguns dos quais
podem receber invocações remotas, outros
apenas invocações locais
• Aqueles que podem
receber invocações remotas são chamados
objectos remotos
• Objectos precisam saber a referência do objecto
remoto de um objecto em outro processo, a fm
de chamar seus métodos…
• Como eles conseguem saber a referencia do
objecto remoto?
– A interface remota especifca quais métodos podem ser
invocados remotamente
Sistemas Distribuídos
Before and object can be used,
the Binder Service (Registry) must
be consulted
• Serviço que mantém uma tabela contendo
mapeamentos de nomes textuais ou a
referência de cada objecto remoto: In Java
RMI - RMI Registry and Sun RPC:
portmapper
Sistemas Distribuídos
Let’s Get Practical
with Java RMI
Sistemas Distribuídos
Building a Java RMI server
object
• Defnimos uma interface de objectos
remotos normalmente e ela deve ser
extendida a java.rmi.Remote
• Em todos os metodos devemos
prever excepcoes
java.rmi.RemoteException
Sistemas Distribuídos
Building a Java RMI server
object
• A implementacao da class de
objectos remotos deve ser extendida
a
java.rmi.server.UnicastRemoteO
bject e implementado a interface de
objectos remotos acima descrito
• NOTA: Todas classes objectos que
viajam pela rede devem ser
serializaveis, ou seja, devem ser
implementadas com io.Serializable
Sistemas Distribuídos
Compiling and running
• Before you run the program you have
to:
– Compile it: javac *.java
– Gerar os stubs e skeletons para a
classe de objectos remotos: rmic
classeInplements
– Setup a policy fle (security.policy):
Sistemas Distribuídos
Compiling and running
(2)
• For running the server
– Initiate Java’s Registry service: start
rmiregistry
– Run the server: java Server
Sistemas Distribuídos
More details on RMI
• Parameters are either passed by
value or reference
– Pass by value
• Atomic types (int, double, etc.)
• Serializable classes
– Pass by reference
• Any remote object (i.e. coming from
Remote)
Sistemas Distribuídos
• [Coulouris2001]
– Capítulo 5 (todo…!!!)
– Secção 6.5
Sistemas Distribuídos