A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Sistemas Distribuídos Resolvendo o Problema da Heterogeneidade Especialização em Redes de Computadores Prof. Fábio M. Costa Instituto de Informática -

Apresentações semelhantes


Apresentação em tema: "Sistemas Distribuídos Resolvendo o Problema da Heterogeneidade Especialização em Redes de Computadores Prof. Fábio M. Costa Instituto de Informática -"— Transcrição da apresentação:

1 Sistemas Distribuídos Resolvendo o Problema da Heterogeneidade Especialização em Redes de Computadores Prof. Fábio M. Costa Instituto de Informática - UFG

2 Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG2 Visão Geral Linguagens de Programação Heterogêneas –Modelo de objetos comum –Linguagem de definição de interfaces comum –Mapeamentos para linguagens de programação Plataformas de Middleware Heterogêneas –Interoperabilidade –Inter-funcionamento Representações de Dados Heterogêneas –Representação de dados padrão –Protocolo de transporte em nível de aplicação –Máquinas virtuais

3 Linguagens de Programação Heterogêneas

4 Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG4 Motivação Os componentes de sistemas distribuídos são escritos em diferentes linguagens de programação Estas linguagens de programação podem ou não impor seus próprios modelos de objetos Modelos de objetos variam bastante Estas diferenças precisam ser contornadas para facilitar a integração

5 Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG5 Por que usar uma IDL? PL IDL

6 Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG6 Mapeamentos para Linguagens de Programação em CORBA IDL Common Object Model Common Object Model Smalltalk Cobol Java Ada-95 C++ C C

7 Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG7 Finalidade de um Modelo de Objetos Comum Meta-modelo para o sistema de tipos da plataforma de middleware Define o significado de: –Tipos de objetos –Operações –Atributos –Requisições –Exceções –Sub-tipagem Definido de maneira genérica o suficiente para permitir mapeamentos para a maioria das linguagens de programação

8 Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG8 Linguagem de Definição de Interfaces Uma linguagem para se expressar todos os conceitos do modelo de objetos da plataforma de middleware Independente de linguagem de programação Mapeamentos para diferentes linguagens de programação são necessários Exemplo: OMG/IDL –Permite expressar os conceitos do modelo de objetos de CORBA

9 Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG9 example.idl // example.idl typedef string NameStr; interface Player { readonly attribute NameStr name; }; interface PlayerFactory { Player createPlayer(in NameStr name); };

10 Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG10 example.idl (cont.) interface Team { readonly attribute NameStr name; exception InvalidNumber{}; exception NumberOccupied{}; exception NoPlayerAtNumber{}; void add(in Player aPlayer, in short number) raises (InvalidNumber,NumberOccupied); void remove(in short number) raises (InvalidNumber,NoPlayerAtNumber); string print(); }; interface TeamFactory { Team createTeam(in NameStr teamname); };

11 Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG11 Arquivos Envolvidos, em C++ example.hh exampleC.cc exampleS.cc Player Server.hh Player Server.hh Team Server.hh Team Server.hh Player Server.cc Player Server.cc Team Server.cc Team Server.cc Client.cc Client Person Server Person Server Team Server Team Server incluído em ligado com escritos gerados

12 Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG12 Diagrama de Interações print request print reply main reply Team Server Team Server TeamDispatch (Server Skeleton) TeamDispatch (Server Skeleton) ORB Team (Client Stub) Team (Client Stub)

13 Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG13 example.idl: Implementação da Interface Player // example.idl typedef string NameStr; interface Player { readonly attribute NameStr name; }; interface PlayerFactory { Player createPlayer(in NameStr name); };

14 Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG14 PlayerServer.hh #include "example.hh" class PlayerServer:public virtual PlayerBOAImpl{ private: char * the_player_name; public: PlayerServer(); virtual NameStr name(); virtual void set_name(char *); }; class PlayerFactoryServer : public virtual PlayerFactoryBOAImpl { virtual Player * createPlayer(NameStr); };

15 Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG15 PlayerServer.cc #include "PlayerServer.hh" NameStr PlayerServer::name(){ char * ret; ret = new char[strlen(the_player_name)+1]; strcpy(ret,the_player_name); return(ret); }; Player * PlayerFactoryServer::createPlayer( NameStr name) { PlayerServer * aPlayer = new PlayerServer; aPlayer->set_name(name); aPlayer->_duplicate(); return aPlayer; };

16 Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG16 PlayerServer.cc (cont.) int main(int argc, char* argv[]) { PlayerFactoryServer myplayergenerator; try { CORBA::BOA.impl_is_ready("PlayerFactory"); } catch (const Exception &excpt) { // an error occured calling impl_is_ready() cerr << excpt; }

17 Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG17 example.idl: Implementação da Interface Team interface Team { readonly attribute NameStr name; exception InvalidNumber{}; exception NumberOccupied{}; exception NoPlayerAtNumber{}; void add(in Player aPlayer, in short number) raises (InvalidNumber,NumberOccupied); void remove(in short number) raises (InvalidNumber,NoPlayerAtNumber); string print(); }; interface TeamFactory { Team createTeam(in NameStr teamname); };

18 Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG18 TeamServer.hh #include "example.hh" class TeamServer : public virtual TeamBOAImpl { private: Player * the_team[MAXPLAYERS+1]; char * the_team_name; public: virtual void set_name(char *); virtual NameStr name(); virtual void add(Player *, short); virtual void remove(short); virtual char * print(); }; class TeamFactoryServer : public virtual TeamFactoryBOAImpl { virtual Team * createTeam(NameStr); };

19 Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG19 TeamServer.cc #include "TeamServer.hh" void TeamServer::add(Player *aPlayer,short num){ if (num MAXPLAYERS) { throw(InvalidNumber); } else if ((the_team[num]!=NULL)) { throw(NumberOccupied); } else { aPlayer->_duplicate(); the_team[num]=aPlayer; } }; Demais métodos: remove, print

20 Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG20 TeamServer.cc (cont.) Team* TeamFactoryServer::createTeam( NameStr name) { TeamServer * aTeam = new TeamServer; aTeam->set_name(name); aTeam->_duplicate(); return(aTeam); }; int main(int argc, char* argv[]) { TeamFactoryServer myteamgenerator; try { CORBA::BOA.impl_is_ready("TeamFactory"); } catch (const Exception &excpt) { cerr << excpt; }

21 Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG21 Client.cc #include "example.hh" int main(int argc, char* argv[]) { PlayerFactory * pf; TeamFactory * tf; Team * t; Player *goalkeeper, *forward; char * output; //obtain references for player and team factory...

22 Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG22 Client.cc (cont.) try { t=tf->createTeam("Germany"); } catch (const Exception &excpt) { cerr << "Unexpected exception " << excpt; exit(1); } cout name(); try { goalkeeper=pf->createPlayer("Stefan Klos"); forward=pf->createPlayer("Andy Moeller"); } catch (const Exception &excpt) { cerr << "Unexpected exception " << excpt ; exit(1);

23 Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG23 Client.cc (cont.) output=goalkeeper->name(); cout << "created player " << output << endl; output=forward->name(); cout << "created player " << output << endl; try { t->add(goalkeeper,1); t->add(forward,10); output=t->print(); cout << output << endl; } catch (const Exception &excpt) { cerr << excpt << endl; exit(1); }

24 Plataformas de Middleware Heterogêneas

25 Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG25 Motivação Component Middleware Vendor A Component Middleware Vendor B Component Middleware Vendor C

26 Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG26 Quando é Necessário Ter Diferentes Plataformas de Middleware Implementações de plataformas de middleware se diferenciam em vários critérios: –Mapeamentos de linguagens de programação disponíveis –Serviços e facilidades disponíveis –Plataformas de hardware suportadas –Plataformas de sistemas operacionais suportadas Separação de domínios de segurança Sistemas distribuídos em larga escala

27 Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG27 Integração de Plataformas de Middleware ORB OLE RPC Bridge ORB Component

28 Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG28 Pontes Client ORB Core Obj. Imp. Client ORB Core Obj. Imp. DSI DII in-line Em nível de requisições

29 Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG29 Integração de Middleware Interoperabilidade: habilidade de diferentes implementações do mesmo padrão de middleware operarem em conjunto –Requer a definição de protocolos de interação Inter-funcionamento: integração de diferentes padrões de middleware –Requer Mapeamento entre modelos de objetos Definição de protocolos de interação

30 Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG30 Interoperabilidade versus Inter-funcionamento Interoperabilidade entre diferentes implementações do mesmo padrão –Ex.: entre diferentes produtos CORBA Inter-funcionamento entre diferentes padrões –CORBA DCE –CORBA COM/DCOM/OLE Fazem parte do padrão da OMG: –Interoperabilidade em CORBA –Inter-funcionamento entre COM e CORBA

31 Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG31 Referências de Objeto Interoperáveis (IORs) Referências de objetos são opacas para os clientes Fabricantes de ORBs têm liberdade para definir implementação das referências IORs são usadas para apresentar referências de objetos no formato nativo de cada ORB –Formato padrão (IOR) traduzido para o formato nativo de cada ORB

32 Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG32 Protocolos de Interoperabilidade CORBA 2.0 Applications GIOP ESIOP IIOP DOETalk DCE-CIOP Mandatory: provides "out of the box" interoperability

33 Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG33 General Inter-ORB Protocol (GIOP) Define sete tipos de mensagens padrão trocados entre ORBs distintos –Request –Reply –Locate Request –Locate Reply –Cancel request –Close Connection –Message Error É um protocolo abstrato: implementação de acordo com a tecnologia disponível

34 Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG34 Internet Inter-ORB Protocol (IIOP) Mapeia GIOP para TCP/IP Provê operações para abrir e fechar conexões TCP/IP É requisito necessário para conformidade com o padrão CORBA Suportado por todos os ORBs CORBA existentes no mercado –Ex.: ORB embutido no Netscape Communicator

35 Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG35 Representação de Dados Comum Definida como parte do GIOP Implementação da camada de apresentação para suporte à heterogeneidade Mapeamento de tipos de dados IDL para fluxos de bytes segundo o protocolo de transporte Define codificação para: –Tipos primitivos –Tipos estruturados –IORs

36 Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG36 Motivação para Inter- Funcionamento COM e OLE/Automation são amplamente utilizados para a integração de aplicações em desktops –Documentos compostos –Interfaces com o usuário (VB, VC++) OMG ainda não oferece suporte para documentos compostos e interfaces com o usuário COM e OLE não suportam distribuição –embora DCOM, introduzido posteriormente, o faça CORBA foi projetada para suportar distribuição

37 Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG37 Inter-Funcionamento COM-CORBA Objetivo: prover um mapeamento bi-direcional e transparente entre COM/OLE e CORBA A especificação adotada foi submetida em conjunto por 11 fabricantes de ORBs –A maioria deles já tinha esta habilidade de inter- funcionamento implementada em seus ORBs –Adotada em março de 1996 A Microsoft decidiu não se envolver neste esforço –Ao invés disto, procurou definir seu próprio ambiente distribuído: DCOM

38 Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG38 Arquitetura de Inter-Funcionamento Sistema de Objetos A Sistema de Objetos A Sistema de Objetos B Sistema de Objetos B ref. de obj. em A ref. de obj. em A Ponte ref. de obj. em B ref. de obj. em B visão em A do objeto alvo em B visão em A do objeto alvo em B implementação de objeto em B implementação de objeto em B

39 Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG39 Instanciações Específicas CORBA clientCOM server CORBA objref Bridge CORBA view of COM object Target COM object CORBA client Automation server CORBA objref Bridge CORBA view of Autom. object Automation object CORBA serverCOM client Bridge COM view of CORBA object Target CORBA object CORBA serverAutomation client Bridge Autom. view of CORBA object Target CORBA object

40 Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG40 Questões de Mapeamento em Inter-Funcionamento Mapeamento de interfaces Mapeamento de composição de interfaces Mapeamento de identificadores (de objetos) Inversibilidade do mapeamento

41 Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG41 CORBA COM Habilita clientes COM a fazerem acesso a objetos CORBA Mapeamento razoavelmente óbvio: –Tipos atômicos de IDL são semelhantes aos tipos primitivos de COM –Tipos estruturados: idem –Referências de objeto CORBA mapeiam para ponteiros de interface COM –Herança de interfaces em CORBA pode ser representada por meio de objetos COM com múltiplas interfaces –Atributos CORBA são mapeados para operações get e set em COM

42 Representações de Dados Heterogêneas

43 Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG43 O Problema Os computadores onde residem cliente e servidor podem usar diferentes formatos de representação de dados –Servidores RISC/Unix: big-endian –Estações NT e PCs/Unix: little endian little-endians big-endians memory sign n+3 n+2 n+1 n n memory sign n n n+1 n+2 n+3

44 Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG44 O Problema (cont.) Diferentes esquemas de codificação de caracteres EBCDIC ASCII ISO UCS DF E D00FC006E DF 65 6E 20 4D FC 6E E 20 4D E D A4A D4A A2 A P r e u ß e n M ü n s t e r

45 Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG45 O Problema (cont.) Diferentes linguagens de programação usam diferentes representações de dados Exemplo: cadeias de caracteres em Pascal e em C++: Pascal C++ 3 memória abc a bc\0

46 Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG46 O Problema (cont.) Representação little endian e big endian de uma seqüência: sequence :[2,3] Big endian Little endian

47 Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG47 Motivação Representações de dados precisam ser convertidas entre objetos clientes e servidores heterogêneos Esta conversão deve ser transparente para o desenvolvedor de aplicações A conversão pode ser feita: –na implementação da camada de apresentação –na implementação da camada de aplicação –na implementação da plataforma

48 Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG48 Abordagens Camada de apresentação: Representação de Dados Padronizada –XDR da Sun (eXternal Data Representation) –CDR da OMG (Common Data Representation) Camada de aplicação: uso de uma notação de sintaxe abstrata –ASN.1 –XML & SGML Plataforma: Máquina Virtual (ex.: Java)

49 Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG49 Common Data Representation da OMG CDR define como ORBs de diferentes fabricantes trocam dados entre si Define como tipos definidos em IDL são mapeados para fluxos de octetos (bytes) e vice- versa Lida com o mapeamento de: –tipos atômicos (primitivos) –tipos estruturados –pseudo-tipos (ex.: exceções) –referências de objeto

50 Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG50 Mapeamento CDR para Tipos Atômicos Inclui ambas as codificações little e big endian –Mensagens explicitam a codificação escolhida –Receptor é responsável pela conversão, se necessária –Reduz o overhead para transferência de dados entre máquinas com a mesma representação Determina tamanhos padrão (e alinhamentos) para todos os tipos atômicos

51 Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG51 Alinhamento de Dados em CDR

52 Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG52 Exemplo: Alinhamento para Inteiros em CDR Big Endian Little Endian Byte x30 0x ( ( short) 0x39 0x x07 0x x5B 0xCD 1 1 ( ( long) 0xCD 0x5B 2 2 0x15 0x x00 0xCB 0 0 0x00 0x x01 0xFB x1F 0x ( ( long long) 0x71 0x1F 4 4 0xFB 0 0 x x04 0x xCB 0x00 7 7

53 Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG53 Mapeamento CDR para Tipos Estruturados Número de elementos (em uma dada codificação) Elementos como resultado do mapeamento de tipos aninhados (atômicos ou estruturados) Exemplo: sequence :[2,3] Big endian Little endian

54 Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG54 Mapeamento CDR para Referências de Objeto Informação necessária para representar uma referência de objeto: –se é NULL (não será usada para requisições) –Tipo do objeto referenciado –Protocolos suportados –Serviços do ORB envolvidos no acesso ao objeto através da referência Estas informações são fornecidas nas Referências de Objeto Interoperáveis (IORs)

55 Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG55 Resolução na Camada de Aplicação A plataforma de middleware somente pode resolver a heterogeneidade se ela sabe como os dados estão estruturados Algumas vezes não é apropriado revelar as estruturas de dados para o middleware: –A plataforma não precisa realizar qualquer processamento das estruturas de dados –Definições de interface se tornariam desnecessariamente complexas –Transformações de dados durante marshalling e unmarshalling não podem ser toleradas –Os dados estão estruturados segundo uma abordagem específica do domínio da aplicação

56 Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG56 Abordagens para Domínios Específicos ASN.1 –Abstract Syntax Notation, definida pela International Telecommunication Union (ITU) SGML –Usada na área de automação de escritórios XML –Intercâmbio de dados estruturados na Web

57 Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG57 Exemplo: DTD XML para Times de Futebol

58 Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG58 Exemplo: DTD XML para Times de Futebol (cont.) ...

59 Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG59 Resolvendo a Heterogeneidade no Nível da Plataforma Máquina Virtual –Uma plataforma acima do sistema operacional –Por definição, impõe uma representação de dados comum

60 Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG60 Exemplo: Máquina Virtual Java Define os seguintes tipos atômicos: –boolean : representado como um int –byte : inteiro de 8 bits sinalizado, em complemento de dois –short : inteiro de 16 bits sinalizado, em compl. de dois –int : inteiro de 32 bits sinalizado, em compl. de dois –long : inteiro de 64 bits sinalizado, compl. de dois –char : caracter UCS de 16 bits –float : número de ponto flutuante de 32 bits, segundo o padrão IEEE 754 –double : número de ponto flutuante de 64 bits, segundo o padrão IEEE 754

61 Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG61 Pontos-Chave Heterogeneidade pode ocorrer em vários níveis: –Linguagem de Programação –Middleware –Representação de Dados CORBA e COM resolvem a heterogeneidade de linguagem de programação através de uma IDL com mapeamentos para várias linguagens Heterogeneidade de middleware é resolvida através de especificações de interoperabilidade e inter-funcionamento

62 Original: Wolfgang Emmerich, 2000 Prof. Fábio M. Costa - Instituto de Informática / UFG62 Pontos-Chave Heterogeneidade de dados pode ser resolvida através de: –Representações de dados padronizadas CDR, NDR, XDR –Estruturação dos dados no nível das aplicações XML, SGML, ASN.1 –Máquinas Virtuais JVM, Python VM, etc.


Carregar ppt "Sistemas Distribuídos Resolvendo o Problema da Heterogeneidade Especialização em Redes de Computadores Prof. Fábio M. Costa Instituto de Informática -"

Apresentações semelhantes


Anúncios Google