Conceitos Básicos de Objetos Distribuidos

3,562 views
3,406 views

Published on

Conceitos Básicos do desenvolvimento de aplicações baseada em Objetos Distribuídos

Published in: Education
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,562
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
0
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Conceitos Básicos de Objetos Distribuidos

  1. 1. Universidade Presbiteriana Mackenzie   Aula  3:  Conceitos  Básicos  de  Objetos   Distribuídos  Prof. Ms. Daniel Arndt Alves Faculdade  de  Computação  e  Informá@ca   Computação e Informática Faculdade de Técnicas  de   Programação  Aplicada  III   Conceitos  Básicos  de  Objetos  Distribuídos   1  Daniel  Arndt  Alves  
  2. 2. Tópicos  da  Aula   •  Chamada  Remota  de  Métodos   •  Arquiteturas  para  Chamadas   Remotas   – Remote  Procedure  Calls   – CORBA   – Java  RMI   Conceitos  Básicos  de  Objetos  Distribuídos   2  Daniel  Arndt  Alves  
  3. 3. Tópicos  da  Aula   •  Objetos  Distribuídos   – Objetos  de  Tempo  de  Compilação   – Objetos  de  Tempo  de  Execução   – Objetos  Persistentes   – Objetos  Transientes   •  Serialização   Conceitos  Básicos  de  Objetos  Distribuídos   3  Daniel  Arndt  Alves  
  4. 4. Introdução   •  Aplicações  distribuídas  podem  ser   desenvolvidas  empregando  uma  arquitetura   de  objetos  distribuídos;   •  As  aplicações  orientadas  a  objetos  lidam   diretamente  com  referências  a  objetos  em   processos  remotos.   Daniel  Arndt  Alves   Conceitos  Básicos  de  Objetos  Distribuídos   4  
  5. 5. Chamada  Remota  de  Métodos   Daniel  Arndt  Alves   Conceitos  Básicos  de  Objetos  Distribuídos   5   class ... { String hello(){ ... } } PROCESSO   Chamada  remota   Cliente   Servidor  remoto  
  6. 6. Arquiteturas  para  chamada  remota   •  Existem  algumas  arquiteturas  desUnadas  para   chamada  remota  de  métodos:   – RPC  (Remote  Procedure  Call)   – CORBA  (Common  Object  Request  Broker   Architeture)   – JAVA  RMI  (Remote  Method  InvocaUon  )     Daniel  Arndt  Alves   Conceitos  Básicos  de  Objetos  Distribuídos   6  
  7. 7. RPC  (Remote  Procedure  Call)   •  Consiste  em  um  protocolo  para  chamadas   remotas  a  procedimentos  como  se  fossem   locais.   •  Torna  mais  fácil  a  implementação  de   aplicações  distribuídas,  pois  abstrai  o  código   referente  à  parte  de  comunicação.   Daniel  Arndt  Alves   Conceitos  Básicos  de  Objetos  Distribuídos   7  
  8. 8. RPC  (Remote  Procedure  Call)   •  Serviço  muito  uUlizado  em  sistemas   operacionais  distribuídos  para  chamada   remota  de  procedimentos.   •  Estes  procedimentos,  normalmente,   envolvem  serviços  disponibilizados  em  redes,   tais  como  acesso  a  DNS,  gerenciamento   remoto,  etc.   Daniel  Arndt  Alves   Conceitos  Básicos  de  Objetos  Distribuídos   8  
  9. 9. RPC  (Remote  Procedure  Call)   •  Permite  que  um  processo  invoque  um  método   de  outro  processo  que  esteja  em  seu  espaço   de  endereçamento,  mesmo  que  este  esteja   em  outro  host  na  rede.   •  Torna  mais  fácil  a  implementação  de   aplicações  distribuídas,  pois  abstrai  o  código   referente  à  parte  de  comunicação.   Daniel  Arndt  Alves   Conceitos  Básicos  de  Objetos  Distribuídos   9  
  10. 10. RPC  (Remote  Procedure  Call)   •  RPC  não  precisa,  necessariamente,  envolver   estruturação  em  termos  de  objetos.   •  Como  em  CORBA  e  RMI,  existe  a  necessidade   de  se  trabalhar  com  interfaces  remotas   denominadas  STUBS.   – Tanto  o  cliente  quanto  o  servidor  necessitam  de   um  Run7me  para  processamento  da  RPC.   Daniel  Arndt  Alves   Conceitos  Básicos  de  Objetos  Distribuídos   10  
  11. 11. RPC  (Remote  Procedure  Call)   •  STUBS   – São  uUlizados  para  a  comunicação  remota;   – Funciona  semelhante  a  um  proxy  para  o  objeto   remoto;   – Quando  o  objeto  local  invoca  um  método  em  um   objeto  remoto,  o  STUB  fica  responsável  por  enviar   a  chamada  ao  método  para  o  objeto  remoto.   Daniel  Arndt  Alves   Conceitos  Básicos  de  Objetos  Distribuídos   11  
  12. 12. RPC  (Remote  Procedure  Call)   •  Passos  do  STUB  quando  é  invocado:   1.  Iniciar  a  conexão  com  a  Virtual  Machine  que  contém  o   objeto  remoto;   2.  Escrever  e  transmiUr  os  parâmetros  para  a  Virtual   Machine  remota;   3.  Aguardar  pelos  resultados  da  invocação  do  método;   4.  Ler  os  resultados  retornados;   5.  Retornar  os  valores  ao  objeto  que  executou  a  chamada   •  O  STUB  esconde  a  serialização  dos  parâmetros  e  toda  a   comunicação  a  nível  de  rede,  com  o  objeUvo  de   simplificar  o  mecanismo  de  realização  da  invocação  do   método.   Daniel  Arndt  Alves   Conceitos  Básicos  de  Objetos  Distribuídos   12  
  13. 13. RPC  (Remote  Procedure  Call)   Daniel  Arndt  Alves   Conceitos  Básicos  de  Objetos  Distribuídos   13  
  14. 14. CORBA   •  CORBA  é  uma  arquitetura  para  acesso  a   objetos  distribuídos  que  prima  pela   independência  da  plataforma.   •  A  especificação  CORBA  define,  por  exemplo,   Upos  de  dados  que  podem  ser  mapeados  para   várias  linguagem  de  programação,  como  C++,   Pascal  e  Java.   Daniel  Arndt  Alves   Conceitos  Básicos  de  Objetos  Distribuídos   14  
  15. 15. CORBA   •  Um  ponto-­‐chave  em  CORBA  é  a  uUlização  de   uma  IDL  (Linguagem  de  Definição  de   Interface).   •  Várias  linguagens  (inclusive  Java)  já   disponibilizam  mecanismos  para  mapeamento   de  IDL.   Daniel  Arndt  Alves   Conceitos  Básicos  de  Objetos  Distribuídos   15  
  16. 16. CORBA   •  CORBA  exige  uma  espécie  de  “servidor”   especializado  chamado  ORB  (Object  Request   Broker).   •  Existem  alguns  ORB´s  comerciais,  tais  como   VisiBroker  e  Orbix.   Daniel  Arndt  Alves   Conceitos  Básicos  de  Objetos  Distribuídos   16  
  17. 17. CORBA   •  Especificado  pela  OMG.   •  Especialização  do  Object  Management   Architecture  (OMA).   •  Transforma  modelos  abstratos  de  objetos  em   formas  concretas.   Daniel  Arndt  Alves   Conceitos  Básicos  de  Objetos  Distribuídos   17  
  18. 18. 16Conceitos Básicos de Objetos Distribuídos Daniel  Arndt  Alves   Conceitos  Básicos  de  Objetos  Distribuídos   18  
  19. 19. CORBA   •  Interface  Defini@on  Language  (IDL)   –  Linguagem  declaraUva;   –  Define  interfaces  de  objetos  com  independência  de   linguagem;   –  Separa  a  interface  da  implementação  de  um  objeto;   –  Permite  a  herança  de  interfaces.  Ela  permite  o  reuso   de  interfaces,  sem  que  suas  implementações  sejam   herdadas.  A  maioria  das  linguagens  de  programação   só  permite  a  herança  de  implementação.   Daniel  Arndt  Alves   Conceitos  Básicos  de  Objetos  Distribuídos   19  
  20. 20. CORBA   •  Language  Mappings   –  Gera  o  Stub  e  o  Skeleton:  Após  a  definição  dos  objetos   terem  sido  feitas,  ocorre  a  geração  do  Stub  e  do   Skeleton.  O  Skeleton  é  gerado  na  linguagem  em  que  o   objeto  é  implementado,  e  o  Stub  é  gerado  uUlizando  a   linguagem  de  programação  que  o  cliente  está   uUlizando.   –  Mapeia  os  Upos  da  IDL  para  o  Upo  da  linguagem  alvo.   –  Language  Mapping  é  extremamente  dependente  das   linguagens  de  programação  uUlizadas.   Daniel  Arndt  Alves   Conceitos  Básicos  de  Objetos  Distribuídos   20  
  21. 21. CORBA   •  Object  Request  Broker  -­‐  ORB   – É  o  componente  mais  importante  de  CORBA;   – Transmite  a  invocação  de  operações  do  cliente   para  o  servidor;   – Trata  de  todas  as  tarefas  associadas  à  invocação   de  um  método.   Daniel  Arndt  Alves   Conceitos  Básicos  de  Objetos  Distribuídos   21  
  22. 22. CORBA   •  Object  Request  Broker  -­‐  ORB   –  Trata-­‐se  de  um  conjunto  de  módulos  de  sopware  que   gerenciam  a  comunicação  entre  objetos.  Muitos   autores  o  denominam  como  sendo  o  “barramento  de   objetos”.   –  Esse  “barramento”  permite  que  objetos  façam,  de   forma  transparente,  requisições  a  objetos  que  podem   estar  localizados  localmente  ou  remotamente.   –  Essa  transparência  assegura  que  o  cliente   (requisitante)  não  tenha  conhecimento  de  quais  os   mecanismos  uUlizados  para  se  comunicar  com  o   objeto  desejado.   Daniel  Arndt  Alves   Conceitos  Básicos  de  Objetos  Distribuídos   22  
  23. 23. Java  RMI   •  Arquitetura  de  acesso  a  objetos  distribuídos   suportada  pela  linguagem  Java.     •  Em  termos  de  complexidade  de  programação   e  ambiente,  é  muito  simples  construir   aplicações  RMI,  comparando-­‐se  com  RPC  e   CORBA.   Daniel  Arndt  Alves   Conceitos  Básicos  de  Objetos  Distribuídos   23  
  24. 24. Java  RMI   •  Em  termos  de  ambiente,  exige  somente   suporte  TCP/IP  e  um  serviço  de  nomes  de   objetos  (rmiregistry),  disponilizado   gratuitamente  com  o  Java  JDK/SDK.   Daniel  Arndt  Alves   Conceitos  Básicos  de  Objetos  Distribuídos   24  
  25. 25. Java  RMI   •  Localização  de  Objetos  Remotos   – Seria  impraUcável  se  cada  invocação  de  método   remoto  fosse  necessário  incluir  o  par  (máquina,   porta)  para  idenUficar  onde  se  encontra  o  objeto   que  contém  o  método.   – O  RMI  oferece  um  Serviço  de  Nomes  (RMI   Registry)  que  oferece  informações  sobre  a   localização  de  objetos  remotos.   •  O  rmigregistry  executa  em  um  endereço  bem   conhecido.   Daniel  Arndt  Alves   Conceitos  Básicos  de  Objetos  Distribuídos   25  
  26. 26. Objetos  Distribuídos   •  Tudo  tratado  como  Objeto;   •  Serviços  e  recursos  como  objetos  a  serem   invocados;   •  Facilita:   – Transparência     – Oculta  aspectos  da  distribuição   Daniel  Arndt  Alves   Conceitos  Básicos  de  Objetos  Distribuídos   26  
  27. 27. Objetos  Distribuídos   •  Na  programação  distribuída,  uUlizando  a  arquitetura   cliente/servidor,  clientes  e  servidores  podem  ser   implementados  empregando  qualquer  paradigma  de   programação.   •  É  possível  que  um  serviço  específico  seja  executado   por  um  método  de  algum  objeto.   •  No  entanto,  mesmo  que  o  cliente  também  tenha  sido   desenvolvido  em  OO,  na  comunicação  entre  o  cliente  e   o  servidor,  esse  paradigma  deve  ser  esquecido,   devendo  ser  empregado  algum  protocolo  pré-­‐ estabelecido  de  troca  de  mensagens  para  a   solicitação  e  resposta  ao  serviço.   Daniel  Arndt  Alves   Conceitos  Básicos  de  Objetos  Distribuídos   27  
  28. 28. Objetos  Distribuídos   •  Um  sistema  de  objetos  distribuídos  é  aquele   que  permite  a  operação  com  objetos   remotos.   •  A  parUr  de  uma  aplicação  cliente  OO  é   possível  obter  uma  referência,  invocar   métodos  desse  objeto  –  mesmo  que  a   instância  desse  objeto  esteja  em  uma   máquina  diferente  daquela  do  objeto  cliente.   Daniel  Arndt  Alves   Conceitos  Básicos  de  Objetos  Distribuídos   28  
  29. 29. Objetos  Distribuídos   •  O  conceito  básico  que  suporta  plataformas  de   objetos  distribuídos  é  o  conceito  de  arquiteturas   de  objetos,  que  estabelece  regras,  diretrizes  e   convenções  definindo  como  as  aplicações  podem   se  comunicar  e  interoperar.   •  Dessa  forma,  o  foco  da  arquitetura  não  é  em   como  a  implementação  é  realizada,  mas  sim  na   infraestrutura  e  na  interface  entre  os   componentes  da  arquitetura.   Daniel  Arndt  Alves   Conceitos  Básicos  de  Objetos  Distribuídos   29  
  30. 30. Objetos  Distribuídos   •  A  caracterísUca  fundamental  de  um  objeto  é   que  ele  encapsula:   – Dados,  denominado  estado,  e   – Métodos,  que  são  disponibilizado  por  meio  de   uma  interface.   Daniel  Arndt  Alves   Conceitos  Básicos  de  Objetos  Distribuídos   30  
  31. 31. Objetos  Distribuídos   •  É  importante  entender  que  não  há  nenhum   modo  legal  pelo  qual  um  processo  possa   acessar  ou  manipular  o  estado  de  um  objeto,   exceto  pela  invocação  dos  métodos   disponibilizado  para  ele  por  meio  de  uma   interface  de  objeto.   Daniel  Arndt  Alves   Conceitos  Básicos  de  Objetos  Distribuídos   31  
  32. 32. Objetos  Distribuídos   Daniel  Arndt  Alves   Conceitos  Básicos  de  Objetos  Distribuídos   32  
  33. 33. Objetos  Distribuídos   •  Para  começar  a  ter  um  entendimento  sobre  o   objetos  distribuídos:   –  Quando  um  cliente  se  vincula  a  um  objeto  distribuído,   uma  implementação  da  interface  do  objeto,   denominada  Proxy,  é  carregada    no  espaço  de   endereço  do  cliente.   –  Um  Proxy  é  a  análogo  a  um  apêndice  de  cliente  em   sistemas  RPC.   –  A  única  coisa  que  ele  faz  é  montar  invocações  a   métodos  em  mensagens  e  desmontar  mensagens  de   respostas.   Daniel  Arndt  Alves   Conceitos  Básicos  de  Objetos  Distribuídos   33  
  34. 34. Objetos  Distribuídos   •  O  objeto  propriamente  dito  reside  em  uma   máquina  do  servidor,  onde  oferece  a  mesma   interface  oferecida  na  máquina  cliente.   Daniel  Arndt  Alves   Conceitos  Básicos  de  Objetos  Distribuídos   34  
  35. 35. Objetos  Distribuídos   •  Requisições  de  invocações  que  chegam  são   passadas  para  um  apêndice  servidor,   chamado  esqueleto  (skeleton),  que  as   desmonta  para  fazer  invocações  de  métodos   na  interface  de  objetos  que  esta  no  servidor.   •  O  skeleton  também  é  responsável  por  montar   mensagens  de  respostas  para  o  cliente.   Daniel  Arndt  Alves   Conceitos  Básicos  de  Objetos  Distribuídos   35  
  36. 36. Objetos  de  Tempo  de  Compilação   •  A  uUlização  de  objetos  de  tempo  de   compilação  em  sistemas  distribuídos  muitas   vezes  facilita  bastante  a  construção  de   aplicações.   •  A  compilação  da  definição  de  classe  resulta   em  códigos  que  permite  a  ela  instanciar   objetos  em  Java.   Daniel  Arndt  Alves   Conceitos  Básicos  de  Objetos  Distribuídos   36  
  37. 37. Objetos  de  Tempo  de  Compilação   •  Sendo  assim  interfaces  pode  ser  compiladas   do  lado  do  cliente  e  do  servidor  o  que  permite   que  objetos  em  Java  pode  ser  invocados   remotamente.       •  A  desvantagem  deste  tempo  de  compilação   seria  a  dependência  de  determinada   linguagem.   Daniel  Arndt  Alves   Conceitos  Básicos  de  Objetos  Distribuídos   37  
  38. 38. Objetos  de  Tempo  de  Execução   •  Para  isso  o  objeto  de  tempo  de  execução  seu   modo  de  implementar  é  basicamente  deixado   aberto.   •  A  essência  é  como  deixar  que  tal  implementação   aparente  ser  um  objeto  cujos  métodos  possam   ser  invocados  de  uma  máquina  remota.   –  Uma  abordagem  comum  e  usar  um  adaptador  de   objeto.   Daniel  Arndt  Alves   Conceitos  Básicos  de  Objetos  Distribuídos   38  
  39. 39. Objetos  de  Tempo  de  Execução   •  O  adaptador  de  objeto  desempenha  o  papel       registrar  uma  implementação  de  uma   interface  e  na  seqüência,  disponibiliza  aquela   interface  para  invocações  (remotas).   Daniel  Arndt  Alves   Conceitos  Básicos  de  Objetos  Distribuídos   39  
  40. 40. Objetos  Persistentes   •  Um  objeto  persistente  é  o  que  conUnua  a   exisUr  mesmo  que,  no  momento  em  questão,   ele  não  esteja  conUdo  no  espaço  de   endereços  de  qualquer  processo  servidor.   •  É  um  objeto  armazenado  em  um  meio   persistente,  como  um  banco  de  dados.   Daniel  Arndt  Alves   Conceitos  Básicos  de  Objetos  Distribuídos   40  
  41. 41. Objetos  Transientes   •  Um  objeto  transiente  é  um  objeto  que  existe   somente  enquanto  exisUr  o  servidor  que  o  está   hospedando;   •  Quando  o  servidor  sai  do  ar,  ele  deixa  de  exisUr;   •  Estado  de  um  objeto  antes  de  ser  gravado  em  um   meio  persistente;   •  Um  objeto  persistente  pode  tornar-­‐se  transiente   se  for  removido  do  banco  de  dados.   Daniel  Arndt  Alves   Conceitos  Básicos  de  Objetos  Distribuídos   41  
  42. 42. Serialização   •  Formatação  dos  dados  para  que  possam  ser   enviados  pela  rede.   •  As  classes  devem  implementar  a  interface   Serializable   Daniel  Arndt  Alves   Conceitos  Básicos  de  Objetos  Distribuídos   42   int   bytes   Internet   bytes   int   Marshaling   Unmarshaling  
  43. 43. Serialização   •  Marshaling   – writeObject() Daniel  Arndt  Alves   Conceitos  Básicos  de  Objetos  Distribuídos   43   Objeto   writeObject() ObjectOutputStream bytes   OutputStream
  44. 44. Serialização   •  Unmarshaling   – readObject() Daniel  Arndt  Alves   Conceitos  Básicos  de  Objetos  Distribuídos   44   Objeto   readObject() ObjectInputStreambytes  InputStream
  45. 45. Serialização   package tpa3.serializacao; import java.io.Serializable; public class FichaCadastro implements Serializable { public String nome; public String senha; public String nomeCompleto; public String instituicao; public String email; public FichaCadastro(String nome, String senha, String nomeCompleto, String instituicao, String email) { this.nome = nome; this.senha = senha; this.nomeCompleto = nomeCompleto; this.instituicao = instituicao; this.email = email; } } Daniel  Arndt  Alves   Conceitos  Básicos  de  Objetos  Distribuídos   45  
  46. 46. Serialização   /** * Processo de serialização do objeto */ private void writeObject(java.io.ObjectOutputStream out) throws IOException { out.writeObject(nome); out.writeObject(senha); out.writeObject(nomeCompleto); out.writeObject(instituicao); out.writeObject(email); out.flush(); } Daniel  Arndt  Alves   Conceitos  Básicos  de  Objetos  Distribuídos   46  
  47. 47. Serialização   /** * Processo de deserialização do objeto */ private void readObject(java.io.ObjectInputStream in) throws IOException, ClassNotFoundException { nome = (String) in.readObject(); senha = (String) in.readObject(); nomeCompleto = (String) in.readObject(); instituicao = (String) in.readObject(); email = (String) in.readObject(); } Daniel  Arndt  Alves   Conceitos  Básicos  de  Objetos  Distribuídos   47  
  48. 48. Serialização   •  Vantagens   – Facilidade  de  programação   – Persistência  de  objetos   •  Desvantagens   – Velocidade  de  comunicação   Daniel  Arndt  Alves   Conceitos  Básicos  de  Objetos  Distribuídos   48  
  49. 49. Conceitos  Básicos  de  Objetos  Distribuídos   49  Daniel  Arndt  Alves  
  50. 50. Conceitos  Básicos  de  Objetos  Distribuídos   50  Daniel  Arndt  Alves  
  51. 51. Imagens   •  hxp://www.digitalprank.org/wp-­‐content/ uploads/2008/03/ejb.png   •  hxp://sandersconsulUng.com/Portals/58319/ images/checklist.jpg     •  hxp://www.ishopping.pk/product_images/y/ 423/iMac-­‐Lion__45051_std.png     •  hxp://www.wegotserved.com/wp-­‐content/ uploads/2011/08/MacMiniServer.jpg     Daniel  Arndt  Alves   Conceitos  Básicos  de  Objetos  Distribuídos   51  
  52. 52. Obrigado     Daniel  Arndt  Alves   daniel.alves@mackenzie.br   Conceitos  Básicos  de  Objetos  Distribuídos   52  Daniel  Arndt  Alves  

×