n sistemas distribuídos n sincronização de relógios nfrank/unileste/sistemas distribuidos -...

34
Sistemas Distribuídos Sistemas Distribuídos Parte II Parte II Prof. Frank A. Prof. Frank A. Siqueira Siqueira, Ph.D. , Ph.D. INE INE - UFSC UFSC E-Mail: Mail: [email protected] [email protected] Web Web Page Page: http: : http://www.inf //www.inf .ufsc. .ufsc.br/~frank/unileste br/~frank/unileste/ 2 Conteúdo Conteúdo Parte I Parte I n Conceitos Básicos Conceitos Básicos n Segurança de Segurança de Funcion Funcion. n Tolerância a Faltas Tolerância a Faltas n Comunicação de Grupo Comunicação de Grupo n Sincronização de Relógios Sincronização de Relógios n Oordenação Oordenação de Eventos de Eventos n Algoritmos Distribuídos Algoritmos Distribuídos n Transações Distribuídas Transações Distribuídas n Memória Compartilhada Memória Compartilhada n Sist Sist. de Arquivo . de Arquivo Distrib Distrib. n Segurança Segurança n Java RMI Java RMI Parte II Parte II n Comunicação por Comunicação por Sockets Sockets n Comunicação em Comunicação em Sist Sist. Distribuídos . Distribuídos n APIs APIs de Comunicação de Comunicação n A API A API Socket Socket n Sockets Sockets Datagrama Datagrama n Sockets Sockets Multicast Multicast n Sockets Sockets Stream Stream n Detecção de Erros Detecção de Erros n Objetos Distribuídos Objetos Distribuídos n Cham Cham. Remota de Procedimento . Remota de Procedimento n DCOM DCOM n CORBA CORBA n Serviços CORBA Serviços CORBA n Facilidades CORBA Facilidades CORBA n CORBA IDL CORBA IDL n Desenvolvimento de Aplicações Desenvolvimento de Aplicações Comunicação por Comunicação por Sockets Sockets n Comunicação em Sistemas Distribuídos Comunicação em Sistemas Distribuídos n APIs APIs de Comunicação de Comunicação n A API A API Socket Socket n Sockets Sockets Datagrama Datagrama n Sockets Sockets Multicast Multicast n Sockets Sockets Stream Stream n Detecção de Erros Detecção de Erros 3 4 Comunicação em Comunicação em Sist Sist. Distribuídos . Distribuídos n As diversas partes integrantes de um As diversas partes integrantes de um sistema distribuído interagem para sistema distribuído interagem para trabalhar conjuntamente trabalhar conjuntamente n Trocam dados / mensagens Trocam dados / mensagens n Utilizam serviços fornecidos por terceiros Utilizam serviços fornecidos por terceiros n Empregam os serviços de comunicação Empregam os serviços de comunicação fornecidos pelo S.O. fornecidos pelo S.O. n Seguem protocolos de comunicação para que Seguem protocolos de comunicação para que possam entender uns aos outros possam entender uns aos outros 5 Comunicação em Comunicação em Sist Sist. Distribuídos . Distribuídos n Protocolos Protocolos de de Comunicação Comunicação n Estabelecem Estabelecem caminhos caminhos virtuais virtuais de de comunicação comunicação entre entre duas duas máquinas máquinas n Devem Devem usar usar os os mesmos mesmos protocolos protocolos para para trocar trocar informações informações Protocolo X Meio de Transmissão Protocolo Y Camada X Camada X Camada Y Camada Y Camada X Camada X Camada Y Camada Y Camada Z Camada Z Camada Z Camada Z Protocolo Z 6 Comunicação em Comunicação em Sist Sist. Distribuídos . Distribuídos n Protocolos Protocolos Pede conexão tempo Aceita conexão Confirma recepção Fecha conexão Libera conexão Envia mensagem Com licença… Pois não… São 8 horas. Obrigado! De nada. Que horas são? PDF created with pdfFactory Pro trial version www.pdffactory.com

Upload: others

Post on 27-Jun-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: n Sistemas Distribuídos n Sincronização de Relógios nfrank/unileste/Sistemas Distribuidos - Parte II.pdf · 7 2Canal de Comunicação Comunicação em Sist. Distribuídos nClassificação

Sistemas DistribuídosSistemas DistribuídosParte IIParte II

Prof. Frank A. Prof. Frank A. SiqueiraSiqueira, Ph.D., Ph.D.INE INE -- UFSCUFSC

EE--Mail: Mail: [email protected]@inf.ufsc.brWebWeb PagePage: http:: http://www.inf//www.inf.ufsc..ufsc.br/~frank/unilestebr/~frank/unileste//

2

ConteúdoConteúdo

Parte IParte Inn Conceitos BásicosConceitos Básicosnn Segurança de Segurança de FuncionFuncion..nn Tolerância a FaltasTolerância a Faltasnn Comunicação de GrupoComunicação de Gruponn Sincronização de RelógiosSincronização de Relógiosnn OordenaçãoOordenação de Eventosde Eventosnn Algoritmos Distribuídos Algoritmos Distribuídos nn Transações Distribuídas Transações Distribuídas nn Memória CompartilhadaMemória Compartilhadann SistSist. de Arquivo . de Arquivo DistribDistrib..nn SegurançaSegurançann Java RMIJava RMI

Parte IIParte IInn Comunicação por Comunicação por SocketsSockets

nn Comunicação em Comunicação em SistSist. Distribuídos . Distribuídos nn APIsAPIs de Comunicaçãode Comunicaçãonn A API A API SocketSocketnn SocketsSockets DatagramaDatagramann SocketsSockets MulticastMulticastnn SocketsSockets StreamStreamnn Detecção de ErrosDetecção de Erros

nn Objetos DistribuídosObjetos Distribuídosnn ChamCham. Remota de Procedimento. Remota de Procedimentonn DCOMDCOMnn CORBACORBAnn Serviços CORBAServiços CORBAnn Facilidades CORBAFacilidades CORBAnn CORBA IDLCORBA IDLnn Desenvolvimento de AplicaçõesDesenvolvimento de Aplicações

Comunicação por Comunicação por SocketsSocketsnn Comunicação em Sistemas DistribuídosComunicação em Sistemas Distribuídosnn APIsAPIs de Comunicaçãode Comunicaçãonn A API A API SocketSocketnn SocketsSockets DatagramaDatagramann SocketsSockets MulticastMulticastnn SocketsSockets StreamStreamnn Detecção de ErrosDetecção de Erros

3 4

Comunicação em Comunicação em SistSist. Distribuídos. Distribuídos

nn As diversas partes integrantes de um As diversas partes integrantes de um sistema distribuído interagem para sistema distribuído interagem para trabalhar conjuntamentetrabalhar conjuntamentenn Trocam dados / mensagensTrocam dados / mensagensnn Utilizam serviços fornecidos por terceirosUtilizam serviços fornecidos por terceirosnn Empregam os serviços de comunicação Empregam os serviços de comunicação

fornecidos pelo S.O.fornecidos pelo S.O.nn Seguem protocolos de comunicação para que Seguem protocolos de comunicação para que

possam entender uns aos outrospossam entender uns aos outros

5

Comunicação em Comunicação em SistSist. Distribuídos. Distribuídos

nn ProtocolosProtocolos de de ComunicaçãoComunicaçãonn EstabelecemEstabelecem caminhoscaminhos virtuaisvirtuais de de

comunicaçãocomunicação entreentre duasduas máquinasmáquinasnn DevemDevem usarusar osos mesmosmesmos protocolosprotocolos parapara trocartrocar

informaçõesinformações

Protocolo X

Meio de Transmissão

Protocolo YCamada XCamada X

Camada YCamada Y

Camada XCamada X

Camada YCamada Y

Camada ZCamada Z Camada ZCamada ZProtocolo Z

6

Comunicação em Comunicação em SistSist. Distribuídos. Distribuídos

nn ProtocolosProtocolosPede conexão

tempo

Aceita conexão

Confirma recepção

Fecha conexão

Libera conexão

Envia mensagem

Com licença…

Pois não…

São 8 horas.

Obrigado!

De nada.

Que horas são?

PDF created with pdfFactory Pro trial version www.pdffactory.com

Page 2: n Sistemas Distribuídos n Sincronização de Relógios nfrank/unileste/Sistemas Distribuidos - Parte II.pdf · 7 2Canal de Comunicação Comunicação em Sist. Distribuídos nClassificação

7

22 Canal de Comunicação

Comunicação em Comunicação em SistSist. Distribuídos. Distribuídos

nn ClassificaçãoClassificação dos dos ServiçosServiços de de ComunicaçãoComunicaçãonn ServiçoServiço semsem ConexãoConexão: : cadacada unidadeunidade de dados de dados

é é enviadaenviada independentementeindependentemente dasdas demaisdemais

nn ServiçoServiço com com ConexãoConexão: dados : dados sãosão enviadosenviadosatravésatravés de um canal de de um canal de comunicaçãocomunicação

++

228

Comunicação em Comunicação em SistSist. Distribuídos. Distribuídos

nn Classificação pelo NClassificação pelo No o de participantesde participantesnn UnicastUnicast: 1 : 1 àà 11nn MulticastMulticast: 1 : 1 àà N ou M N ou M àà NNnn Broadcast: 1 Broadcast: 1 àà TodosTodos

nn Classificação pelo tClassificação pelo tamanho das mensagensamanho das mensagensnn Fixo ou variFixo ou variáávelvelnn Limitado ou nãoLimitado ou não

nn Classificação pelo Classificação pelo SincronismoSincronismonn SSííncrono, Assncrono, Assííncrono ou Semincrono ou Semi--ssííncrononcrono

9

APIsAPIs de Comunicaçãode Comunicação

nn APIs de APIs de comunicaçãocomunicação permitempermitem queque as as aplicaçõesaplicações enviemenviem e e recebamrecebam dadosdadosnn FornecemFornecem primitivasprimitivas de de comunicaçãocomunicação queque

podempodem ser ser chamadaschamadas a a partirpartir do do códigocódigonn ProvêemProvêem acessoacesso aosaos serviçosserviços de de comunicaçãocomunicação, ,

queque podempodem assimassim ser ser usadosusados pelaspelas aplicaçõesaplicações

Programa

APIAPI

S.O.S.O.10

APIsAPIs de Comunicaçãode Comunicação

nn ExemplosExemplos de APIs de de APIs de comunicaçãocomunicação::nn Sockets: Sockets: portasportas de de comunicaçãocomunicação locaislocais ouou de de

rederede ((versãoversão segurasegura: SSL): SSL)nn SuportesSuportes de RPC (de RPC (Remote Procedure CallRemote Procedure Call): ):

permitempermitem chamarchamar procedimentos/métodosprocedimentos/métodosremotamenteremotamente (ex.: Java RMI, Sun RPC, ...)(ex.: Java RMI, Sun RPC, ...)

nn CanaisCanais de de eventoseventos: : permitempermitem notificarnotificar threads threads e e processosprocessos dos dos eventoseventos ocorridosocorridos no no sistemasistema(Ex.: JMS, CORBA Notification Service, …)(Ex.: JMS, CORBA Notification Service, …)

nn ……

11

A API SocketA API Socket

nn Sockets Sockets nn AbstraçõesAbstrações queque representamrepresentam umauma portaporta de de

comunicaçãocomunicação associadaassociada a a umauma aplicaçãoaplicaçãonn OriginárioOriginário do UNIX; do UNIX; portadoportado parapara váriosvários S.O.S.O.nn IdentificadosIdentificados porpor um um inteirointeiro de 16 bitsde 16 bitsnnValoresValores de 0 a 1024: de 0 a 1024: alocadosalocados parapara

serviçosserviços padronizadospadronizados pelapela rederedennValoresValores acimaacima de 1024: de 1024: podempodem ser ser usadosusados

livrementelivremente pelospelos desenvolvedoresdesenvolvedores

12

A API A API SocketSocket

nn TiposTipos de Socketde Socketnn Sockets Sockets DatagramaDatagrama: : serviçoserviço semsem conexãoconexãonn Sockets Multicast: Sockets Multicast: envioenvio parapara um um grupogrupo semsem

estabelecimentoestabelecimento de de conexãoconexãonn Sockets Stream: Sockets Stream: serviçoserviço com com conexãoconexão, ,

baseadobaseado no no paradigmaparadigma clientecliente--servidorservidornn ......

PDF created with pdfFactory Pro trial version www.pdffactory.com

Page 3: n Sistemas Distribuídos n Sincronização de Relógios nfrank/unileste/Sistemas Distribuidos - Parte II.pdf · 7 2Canal de Comunicação Comunicação em Sist. Distribuídos nClassificação

13

SocketsSockets DatagramaDatagrama

nn SocketsSockets DatagramaDatagrama enviam mensagens enviam mensagens ––os os datagramasdatagramas –– sem estabelecer conexãosem estabelecer conexãonn DatagramasDatagramas são enviados (ou seja, segmentos são enviados (ou seja, segmentos

de memória são copiados) de um processo de memória são copiados) de um processo para outropara outro

nn Processos podem rodar em Processos podem rodar em máqsmáqs diferentesdiferentes

PP11 PP22

14

SocketsSockets DatagramaDatagrama

nn Sockets Sockets DatagramaDatagrama empregamempregam o o protocoloprotocoloUDP (UDP (User Datagram Protocol User Datagram Protocol ))nn PermitePermite o o envioenvio de de datagramasdatagramas com com tamanhotamanho

limitadolimitado a 64Kba 64Kbnn ProtocoloProtocolo nãonão confiávelconfiável: : podepode ocorrerocorrer perdaperda ouou

trocatroca dada ordemordem dos dos datagramasdatagramasnn Ideal Ideal parapara aplicaçõesaplicações queque trocamtrocam poucospoucos

dados (ex.: dados (ex.: indicaçãoindicação de um de um eventoevento; ; consultaconsultaaoao DNS) e DNS) e parapara a a aplicaçõesaplicações queque toleramtoleram perdaperdade dados (ex.: de dados (ex.: transmissãotransmissão de de áudioáudio e e vídeovídeo))

15

Dados (tamanho variável)

SocketsSockets DatagramaDatagrama

nn O O DatagramaDatagrama UDPUDP

Soma de VerificaçãoPorta de Destino

32 bits

TamanhoPorta de Origem

16

SocketsSockets DatagramaDatagrama

nn FuncionamentoFuncionamento do UDP do UDP –– EnvioEnvionn O O emissoremissor montamonta o o datagramadatagramann IdentificaIdentifica a a aplicaçãoaplicação ((portaporta) de ) de origemorigemnn IdentificaIdentifica a a aplicaçãoaplicação ((portaporta) de ) de destinodestinonnCalculaCalcula o o tamanhotamanho dos dados a dos dados a enviarenviarnnCalculaCalcula a soma de a soma de verificaçãoverificaçãonnAdicionaAdiciona osos dados dados aoao final do final do datagramadatagrama

nn EnviaEnvia o o datagramadatagrama atravésatravés dada rederede utilizandoutilizandoo o protocoloprotocolo IP IP

17

SocketsSockets DatagramaDatagrama

nn FuncionamentoFuncionamento do UDP do UDP –– RecepçãoRecepçãonn O receptor O receptor verificaverifica se a se a mensagemmensagem chegouchegou

intactaintacta utilizandoutilizando a soma de a soma de verificaçãoverificaçãonn Se a Se a mensagemmensagem possuirpossuir erroserros, a , a descartadescartann CasoCaso contráriocontrário, o receptor , o receptor obtémobtém osos dados, dados,

cujocujo tamanhotamanho é é especificadoespecificado no no cabeçalhocabeçalho, e , e osos entregaentrega parapara a a aplicaçãoaplicação cujacuja portaporta é é especificadaespecificada comocomo destinodestino

18

SocketsSockets DatagramaDatagrama

nn UsandoUsando SocketsSockets DatagramaDatagrama em Javaem Javann CriarCriar um socket um socket datagramadatagrama: :

DatagramSocketDatagramSocket s = new s = new DatagramSocket(portaDatagramSocket(porta););

nn CriarCriar pacotespacotes de dados de dados parapara envioenvio::DatagramPacketDatagramPacket pack = new pack = new DatagramPacket(msgDatagramPacket(msg, , tamanhotamanho, , destinodestino, , portaporta););

nn EnviarEnviar dados: dados: s.send(packs.send(pack););

nn CriarCriar pacotespacotes de dados de dados parapara recepçãorecepção::DatagramPacketDatagramPacket pack = new pack = new DatagramPacket(msg,tamDatagramPacket(msg,tam); );

nn ReceberReceber dados: dados: s.receive(packs.receive(pack););

nn LerLer dados do dados do pacotepacote:: pack.getDatapack.getData()()

PDF created with pdfFactory Pro trial version www.pdffactory.com

Page 4: n Sistemas Distribuídos n Sincronização de Relógios nfrank/unileste/Sistemas Distribuidos - Parte II.pdf · 7 2Canal de Comunicação Comunicação em Sist. Distribuídos nClassificação

19

SocketsSockets MulticastMulticast

nn MulticastMulticastnn EnvioEnvio simultâneosimultâneo de de umauma mensagemmensagem a um a um

grupogrupo de de destinatáriosdestinatários

Grupo Multicast

Emissor

20

SocketsSockets MulticastMulticast

nn ProtocoloProtocolo IP MulticastIP Multicastnn GaranteGarante queque quandoquando um um datagramadatagrama for for

enviadoenviado parapara o o endereçoendereço multicast, multicast, todastodas as as máquinasmáquinas do do grupogrupo o o receberãoreceberão

nn NãoNão recuperarecupera erroserros no no envioenvionn SóSó podepode ser ser usadousado atravésatravés do UDP, do UDP, poispois o o

multicast é um multicast é um serviçoserviço semsem conexãoconexão

21

SocketsSockets MulticastMulticast

nn IP Multicast IP Multicast –– EndereçamentoEndereçamentonn CorrespondemCorrespondem àà ClasseClasse D, D, estandoestando nana faixafaixa

entreentre 223.1.1.xx e 239.254.254.xx 223.1.1.xx e 239.254.254.xx nn EndereçosEndereços nana faixafaixa de 224.0.0.1 a 224.0.0.255 de 224.0.0.1 a 224.0.0.255

sãosão permanentespermanentes, , alocadosalocados pelopelo NIC; NIC; ososdemaisdemais sãosão temporáriostemporários e e podempodem ser ser usadosusadoslivrementelivremente

22

Sockets MulticastSockets Multicast

nn IP Multicast IP Multicast –– FuncionamentoFuncionamentonn EmissorEmissor nãonão precisaprecisa fazerfazer parteparte do do grupogrupo parapara

enviarenviar mensagensmensagens aoao grupogrupo, e , e nemnem precisaprecisasaber saber quemquem sãosão osos seusseus membrosmembros; ; bastabastaconhecerconhecer o o endereçoendereço IP do IP do grupogrupo

nn VáriosVários emissoresemissores podempodem mandarmandar mensagensmensagensparapara o o grupogrupo ((ouou sejaseja, , mensagensmensagens vãovão de de X X →→ Y Y máquinasmáquinas))

nn O receptor entra em um grupo (se torna um O receptor entra em um grupo (se torna um membro do grupo) e passa a receber as membro do grupo) e passa a receber as mensagens destinadas ao grupomensagens destinadas ao grupo

23

Sockets MulticastSockets Multicast

nn IP Multicast IP Multicast –– RoteamentoRoteamentonn RoteadoresRoteadores sãosão responsáveisresponsáveis porpor entregarentregar o o

datagramadatagrama aosaos membrosmembros do do grupogrupo, , criandocriandocópiascópias aoao longolongo do do caminhocaminho quandoquando precisopreciso

nn RoteadoresRoteadores devemdevem conhecerconhecer a a listalista de de membrosmembros de um de um grupogrupo parapara fazerfazer a a entregaentrega

nn RoteadoresRoteadores antigosantigos nãonão suportamsuportam multicastmulticastnn É É possívelpossível limitarlimitar a a áreaárea nana qualqual um um pacotepacote

multicast é multicast é distribuídodistribuído ((ouou sejaseja, , porpor quantosquantosroteadoresroteadores eleele passapassa) ) usandousando o campo TTL o campo TTL (tempo de (tempo de vidavida) do ) do datagramadatagrama IPIP

24

Sockets MulticastSockets Multicast

nn Envio de Envio de MulticastMulticast em Javaem Javatrytry {{

DatagramSocketDatagramSocket socketsocket = = newnew DatagramSocketDatagramSocket();();InetAddressInetAddress grupo = grupo = InetAddressInetAddress..getByNamegetByName( (

“230.1.2.3”);“230.1.2.3”);byte[] dados = byte[] dados = newnew byte[100];byte[100];int porta = 1234;int porta = 1234;DatagramPacketDatagramPacket pacote = pacote = newnew DatagramPacketDatagramPacket( (

dados, dados.dados, dados.lengthlength, grupo, porta);, grupo, porta);socketsocket..sendsend(pacote);(pacote);

} catch (} catch (SocketExceptionSocketException e) {e) {} catch (} catch (IOExceptionIOException e) { }e) { }

PDF created with pdfFactory Pro trial version www.pdffactory.com

Page 5: n Sistemas Distribuídos n Sincronização de Relógios nfrank/unileste/Sistemas Distribuidos - Parte II.pdf · 7 2Canal de Comunicação Comunicação em Sist. Distribuídos nClassificação

25

Sockets MulticastSockets Multicast

nn Recepção de Recepção de MulticastMulticast em Javaem Javatrytry {{

int porta = 1234;int porta = 1234;MulticastSocketMulticastSocket msocketmsocket = = newnew MulticastSocketMulticastSocket(porta);(porta);InetAddressInetAddress grupo = grupo = InetAddressInetAddress..getByNamegetByName( (

“230.1.2.3”);“230.1.2.3”);msocketmsocket..joinGroupjoinGroup(grupo);(grupo);byte[] dados = byte[] dados = newnew byte[100];byte[100];DatagramPacketDatagramPacket pacote = pacote = newnew DatagramPacketDatagramPacket( (

dados, dados.dados, dados.lengthlength););msocketmsocket..receivereceive(pacote);(pacote);

} catch (} catch (SocketExceptionSocketException e) {e) {} catch (} catch (IOExceptionIOException e) { }e) { }

26

Sockets StreamSockets Stream

nn Sockets StreamSockets Streamnn EstabelecemEstabelecem canaiscanais de de comunicaçãocomunicação entreentre

aplicaçõesaplicações, , permitindopermitindo trocatroca de dados de dados pelapela rederedenn AdotamAdotam o o paradigmaparadigma clientecliente--servidorservidornnClienteCliente: : solicitasolicita aoao servidorservidor queque execute um execute um

determinadodeterminado serviçoserviçonnServidorServidor: : atendeatende solicitaçõessolicitações dos dos clientesclientes

Cliente Servidor

27

Sockets StreamSockets Stream

nn Sockets Stream Sockets Stream utilizamutilizam o o protocoloprotocolo TCP TCP ((Transmission Control ProtocolTransmission Control Protocol))nn ProtocoloProtocolo confiávelconfiável de de transmissãotransmissão de dados de dados nn ProjetadoProjetado parapara corrigircorrigir osos erroserros causadoscausados porpor

umauma subsub--rederede nãonão confiávelconfiável ((sujeitasujeita a a erroserros))nn TotalmenteTotalmente orientadoorientado a a conexãoconexãonn PermitePermite o o envioenvio de dados de dados semsem limitaçãolimitação de de

tamanhotamanhonn Ideal Ideal parapara aplicaçõesaplicações queque nãonão toleramtoleram erroserros

e e queque trocamtrocam grandesgrandes volumes de dados volumes de dados (ex.: e(ex.: e--mail, mail, transmissãotransmissão de de arquivosarquivos) )

28

Sockets StreamSockets Stream

nn TCP TCP –– Formato do Segmento de DadosFormato do Segmento de Dados

Tamanho da JanelaPonteiro Urgente

Reconhecimento por CaronaNúmero de Seqüência

Opções (tamanho variável)

Porta de Origem Porta de Destino

Dados (tamanho variável)

32 bits

Soma de VerificaçãoTC Flags

29

Sockets StreamSockets Stream

nn TCP TCP –– Campos do Campos do SegmentoSegmento de Dadosde Dadosnn TC: TC: tamanhotamanho do do cabeçalhocabeçalho (TC*32 bits)(TC*32 bits)nn Flags: 6 bits Flags: 6 bits -- ponteiroponteiro urgenteurgente emem usouso; ;

reconhecimentoreconhecimento emem usouso; ; fimfim dos dados; dos dados; abortarabortar / / abrirabrir / / fecharfechar conexãoconexão

nn JanelaJanela: : tamanhotamanho dada janelajanela deslizantedeslizante (bytes)(bytes)nn PonteiroPonteiro UrgenteUrgente: : indicaindica a a localizaçãolocalização de de

dados dados urgentesurgentes contidoscontidos no no segmentosegmentonn OpçõesOpções: campo : campo usadousado parapara negociarnegociar o o

tamanhotamanho do do segmentosegmento, , associarassociar marcasmarcas de de tempo (tempo (timestampstimestamps) ) àsàs mensagensmensagens etc.etc.

30

Sockets StreamSockets Stream

nn TCP TCP –– SegmentaçãoSegmentaçãonn Dados Dados enviadosenviados atravésatravés do TCP do TCP sãosão divididosdivididos

emem segmentossegmentos de de tamanhotamanho limitadolimitadonn DevemDevem ser ser criadoscriados segmentossegmentos de de tamanhotamanho

apropriadoapropriado parapara a a rotarota utilizadautilizada, , evitandoevitando quequeocorraocorra fragmentaçãofragmentação aoao longolongo do do caminhocaminhonnMSS (MSS (Maximum Segment SizeMaximum Segment Size))

ValoresValores típicostípicos: 576 : 576 ouou 512 bytes 512 bytes emem WANs; WANs; 1,5Kb 1,5Kb emem LANs EthernetLANs EthernetnnDifícilDifícil definirdefinir o o tamanhotamanho de de segmentosegmento ideal, ideal,

poispois a a rotarota podepode mudarmudar dinamicamentedinamicamente

PDF created with pdfFactory Pro trial version www.pdffactory.com

Page 6: n Sistemas Distribuídos n Sincronização de Relógios nfrank/unileste/Sistemas Distribuidos - Parte II.pdf · 7 2Canal de Comunicação Comunicação em Sist. Distribuídos nClassificação

31

Sockets StreamSockets Stream

nn TCP TCP –– SegmentaçãoSegmentaçãonn Segmentos são identificados por números de Segmentos são identificados por números de

seqüência (32 bits), que definem a posição do seqüência (32 bits), que definem a posição do primeiro byte de dados do segmento na primeiro byte de dados do segmento na mensagem original (completa)mensagem original (completa)

nn Exemplo: Exemplo:

(supondo segmentos de 32 bytes)(supondo segmentos de 32 bytes)

From: [email protected]: [email protected]: testando...

SEQ: [email protected]: testando

SEQ: 0000000000From: [email protected]: fula

32

Sockets StreamSockets Stream

nn TCP TCP –– SegmentaçãoSegmentaçãonn Os dados Os dados enviadosenviados com TCP com TCP sãosão colocadoscolocados emem

um um bufferbuffer criadocriado aoao estabelecerestabelecer a a conexãoconexãonn TCP decide TCP decide quandoquando enviarenviar osos dados do dados do bufferbuffernn Dados Dados muitomuito pequenospequenos sãosão agrupadosagrupados e e

transmitidostransmitidos de de umauma sósó vezveznn Na Na maioriamaioria dos dos casoscasos estaesta estratégiaestratégia melhoramelhora o o

desempenhodesempenho, , masmas podepode causarcausar problemasproblemasnn O O armazenamentoarmazenamento podepode ser ser evitadoevitado fazendofazendo

um um flushflush nana portaporta ouou usandousando a a opçãoopção dada portaportaTCP_NO_DELAYTCP_NO_DELAY

33

Sockets StreamSockets Stream

nn TCP TCP –– SegmentaçãoSegmentaçãonn EnvioEnvio dos dos SegmentosSegmentos TCP TCP nnCadaCada segmentosegmento devedeve ser ser enviadoenviado comocomo um um

datagramadatagrama atravésatravés do do protocoloprotocolo IPIPnn RemontagemRemontagem dos dos SegmentosSegmentos TCP TCP nnComo a Como a ordemordem dos dos segmentossegmentos podepode ser ser

trocadatrocada pelopelo IP, IP, cabecabe aoao TCP TCP reordenáreordená--loslos e e remontarremontar a a mensagemmensagem originaloriginalnnSegmentosSegmentos podempodem ser ser duplicadosduplicados, , devendodevendo

ser ser descartadosdescartados pelopelo TCPTCP34

Sockets StreamSockets Stream

nn GerenciamentoGerenciamento de de ConexõesConexõesnn ConexõesConexões sãosão identificadasidentificadas porpor seusseus endpointsendpointsnnEndpointEndpoint: <: <endereçoendereço IP, IP, portaporta>>nnConexãoConexão: <: <endpointendpoint orig., orig., endpointendpoint destdest.>.>

nn UmaUma mesmamesma portaporta podepode ser ser usadausada emem maismais de de umauma conexãoconexãonnCadaCada conexãoconexão tem a tem a suasua própriaprópria filafila de de

mensagensmensagensnnÚtilÚtil p/ p/ serviçosserviços comocomo Web, EWeb, E--mail, FTP etc.mail, FTP etc.

35

Sockets StreamSockets Stream

nn GerenciamentoGerenciamento de de ConexõesConexõesnn TCP TCP devedeve controlarcontrolar a a aberturaabertura e o e o fechamentofechamento

de de conexõesconexões parapara gerenciargerenciar a a alocaçãoalocação de de recursosrecursos ((buffersbuffers, , númerosnúmeros de de portaporta, etc.), etc.)

nn A A aberturaabertura e o e o encerramentoencerramento de de conexõesconexões sãosãofeitosfeitos atravésatravés de de mensagensmensagens de de controlecontroletrocadastrocadas entreentre as as máquinasmáquinas

nn O O estabelecimentoestabelecimento de de conexõesconexões é é feitofeito usandousandoo o paradigmaparadigma clientecliente--servidorservidornnServidorServidor: : aguardaaguarda pedidospedidos de de conexãoconexãonnClienteCliente: : pedepede parapara se se conectarconectar aoao servidorservidor

36

Sockets StreamSockets Stream

nn AberturaAbertura de de ConexãoConexãonn A A perdaperda e e retransmissãoretransmissão de de pedidospedidos de de

conexãoconexão podepode levarlevar àà duplicaçãoduplicação do do pedidopedido, , prejudicandoprejudicando o o funcionamentofuncionamento do TCPdo TCP

nn SoluçãoSolução: : utilizaçãoutilização do do ApertoAperto de de MãoMão TriploTriplo((ThreeThree--Way HandshakeWay Handshake))nn11aa MensagemMensagem: : PedidoPedido de de ConexãoConexãonn22aa MensagemMensagem: : AceitaçãoAceitação ((ouou RejeiçãoRejeição))nn33aa MensagemMensagem: : ConfirmaçãoConfirmação de de ConexãoConexão

PDF created with pdfFactory Pro trial version www.pdffactory.com

Page 7: n Sistemas Distribuídos n Sincronização de Relógios nfrank/unileste/Sistemas Distribuidos - Parte II.pdf · 7 2Canal de Comunicação Comunicação em Sist. Distribuídos nClassificação

37

Sockets StreamSockets Stream

nn Abertura de Conexão Abertura de Conexão nn Durante a abertura da conexão, os números de Durante a abertura da conexão, os números de

seqüência iniciais são definidos aleatoriamenteseqüência iniciais são definidos aleatoriamentenn Os números de seqüência iniciais são enviados Os números de seqüência iniciais são enviados

nas mensagens de controle e confirmados nas mensagens de controle e confirmados pelas partes durante o aperto de mão triplopelas partes durante o aperto de mão triploMáquina AMáquina A

Máquina BMáquina B

Pede Conexão

Pede Conexão

SEQ:100

tt

Ace i

ta C

onex

ão

SEQ

:200

ACK

:101

Confirma Conexão

Confirma Conexão

SEQ:101 ACK:201

38

Sockets StreamSockets Stream

nn Fechamento de ConexãoFechamento de Conexãonn O fechamento da conexão deve ser acordado O fechamento da conexão deve ser acordado

entre as duas partes, de modo a garantir que entre as duas partes, de modo a garantir que nenhum dado será perdidonenhum dado será perdido

nn A conexão também pode ser abortada de A conexão também pode ser abortada de imediato por iniciativa de uma das partesimediato por iniciativa de uma das partesMáquina AMáquina A

Máquina BMáquina B

Fechar Conexão

tt

ACK

Fech

ar C

onex

ão

ACK

39

Sockets StreamSockets Stream

nn ControleControle de de FluxoFluxonn BaseadoBaseado emem JanelasJanelas DeslizantesDeslizantesnnPermitemPermitem queque váriosvários segmentossegmentos sejamsejam

enviadosenviados antes de antes de receberreceber confirmaçãoconfirmaçãonn SãoSão usadasusadas 4 4 janelasjanelas porpor conexãoconexãonnDuasDuas emem cadacada pontaponta –– p/ p/ envioenvio e e recepçãorecepção

nn TamanhoTamanho dada janelajanelannDefinidoDefinido emem bytes, bytes, levandolevando emem contaconta o o

espaçoespaço disponíveldisponível nosnos buffers buffers dada máquinamáquinannLimitadoLimitado parapara evitarevitar congestionamentoscongestionamentos

40

Sockets StreamSockets Stream

nn Sockets Stream Sockets Stream apresentamapresentam desempenhodesempenhopiorpior queque osos Sockets Sockets DatagramaDatagramann TCP TCP precisaprecisa remontarremontar mensagensmensagens, , controlarcontrolar

janelasjanelas de de transmissãotransmissão, , enviarenviar mensagensmensagens de de reconhecimentoreconhecimento, , gerenciargerenciar conexõesconexões, …, …

nn CabeçalhoCabeçalho TCP é TCP é maiormaior: : precisaprecisa enviarenviar maismaisdados de dados de controlecontrole àà piorpior aproveitamentoaproveitamento dadacapacidadecapacidade de de transmissãotransmissão

nn TCP TCP simplificasimplifica o o trabalhotrabalho do do desenvolvedordesenvolvedornn AplicaçãoAplicação UDP UDP devedeve fazerfazer controlecontrole de de erroserros, ,

remontagemremontagem e e reordenaçãoreordenação casocaso necessárionecessário

41

Sockets StreamSockets Stream

nn UsandoUsando SocketsSockets StreamStream no Servidorno Servidornn CriandoCriando um socket um socket servidorservidor

ServerSocketServerSocket s = new s = new ServerSocket(portaServerSocket(porta, , maxClientesmaxClientes););

nn AguardandoAguardando conexãoconexãoSocket c = Socket c = s.accepts.accept();();

nn ObtendoObtendo nomenome do host do host conectadoconectadoString host = String host = c.getInetAddress().getHostNamec.getInetAddress().getHostName();();

nn CriandoCriando fluxosfluxos de dados de dados ObjectInputStreamObjectInputStream in = new in = new

ObjectInputStream(c.getInputStreamObjectInputStream(c.getInputStream());());ObjectOutputStreamObjectOutputStream out = new out = new

ObjectOutputStream(c.getOutputStreamObjectOutputStream(c.getOutputStream());()); 42

Sockets StreamSockets Stream

nn UsandoUsando SocketsSockets StreamStream no Servidorno Servidornn EnviandoEnviando dados dados

out.write(bufferout.write(buffer);); // // EnviaEnvia buffer (byte[])buffer (byte[])out.writeString(“OKout.writeString(“OK”);”); // // EnviaEnvia String String out.flushout.flush();(); // // FazFaz o o envioenvio pelapela rederede

nn RecebendoRecebendo dadosdadosintint bytesRecebidosbytesRecebidos = in.read(buffer,0, = in.read(buffer,0, buffer.lengthbuffer.length); ); String String strstr = = in.readStringin.readString();();

nn FechandoFechando a a conexãoconexãoin.closein.close(); (); out.closeout.close(); (); c.closec.close();();

PDF created with pdfFactory Pro trial version www.pdffactory.com

Page 8: n Sistemas Distribuídos n Sincronização de Relógios nfrank/unileste/Sistemas Distribuidos - Parte II.pdf · 7 2Canal de Comunicação Comunicação em Sist. Distribuídos nClassificação

43

Sockets StreamSockets Stream

nn UsandoUsando SocketsSockets StreamStream no Clienteno Clientenn CriandoCriando um socket um socket clientecliente

Socket c =Socket c = new Socket(new Socket(InetAddress.getByName(“InetAddress.getByName(“servidor.comservidor.com ”), ”), portaporta););

nn CriarCriar fluxofluxo, , enviarenviar e e receberreceber dados, e dados, e fecharfechar: : idem idem aoao servidorservidor

nn ExceçõesExceçõesnn SocketExceptionSocketExceptionnn UnknownHostExceptionUnknownHostExceptionnn IOExceptionIOException

44

DetecçãoDetecção de de ErrosErros

nn ErrosErros no no envioenvio de dados de dados atravésatravés de de sockets sockets podempodem ser ser detectadosdetectados e e corrigidoscorrigidos automaticamenteautomaticamente pelapela rederedenn Sockets Sockets DatagramaDatagrama e Multicast: e Multicast:

responsabilidaderesponsabilidade do enlace do enlace dada rederede, , quequegeralmentegeralmente fazfaz apenasapenas a a detecçãodetecção e o e o descartedescarte dos dos quadrosquadros com com erroerro

nn Sockets Stream: Sockets Stream: detecçãodetecção e e correçãocorreção de de erroserros fimfim--aa--fimfim nana camadacamada de de transportetransporte, , indo indo alémalém do do queque jájá é é feitofeito no enlaceno enlace

45

DetecçãoDetecção de de ErrosErros

nn DetecçãoDetecção de de ErrosErros no Enlaceno Enlacenn SãoSão usadosusados códigoscódigos de de detecçãodetecção de de erroserros e e

estratégiasestratégias de de correçãocorreção de de erroserrosnn CadaCada enlace de enlace de rederede podepode usarusar umauma técnicatécnica

diferentediferente parapara detectar/corrigirdetectar/corrigir erroserros, , ouou podepodesimplesmentesimplesmente ignoráignorá--loslos

nn Bit de Bit de paridadeparidade par/par/ímparímparnnEscolhidoEscolhido de forma de forma queque o o númeronúmero de bits 1 de bits 1

no no quadroquadro sejaseja par/par/ímparímparnnDetectaDetecta erroserros simples (1 bit) e simples (1 bit) e qualquerqualquer

númeronúmero ímparímpar de bits de bits trocadostrocados nosnos dadosdados46

DetecçãoDetecção de de ErrosErros

nn DetecçãoDetecção de de ErrosErros no Enlaceno Enlacenn CódigoCódigo de de redundânciaredundância cíclicacíclica (CRC): (CRC):

acrescentaacrescenta bits bits aosaos dados de forma dados de forma queque, , aoaoser ser geradogerado um um polinômiopolinômio a a partirpartir destesdestes bits, bits, esteeste sejaseja divisíveldivisível porpor um um polinômiopolinômio geradorgeradorusandousando álgebraálgebra XORXOREx:Ex: PolPol. . geradorgerador: x: x44 + x + 1+ x + 1

Dados: 1101011011 + CRC de 4 bitsDados: 1101011011 + CRC de 4 bitsPolPol. . geradogerado: x: x1313+x+x1212+x+x1010+x+x88+x+x77+x+x55+x+x44+x+x33+x+x22+x+x11

Dados + Dados + CRCCRC: 1101011011: 110101101111101110QuocienteQuociente: x: x99+x+x88+x+x33+x+x11

47

DetecçãoDetecção de de ErrosErros

nn Detecção de Erros na InternetDetecção de Erros na Internetnn TCP e UDP usam o mesmo código de detecção TCP e UDP usam o mesmo código de detecção

de erros: uma soma de verificação de 16 bitsde erros: uma soma de verificação de 16 bitsnn O valor da soma de verificação é colocado no O valor da soma de verificação é colocado no

cabeçalho das mensagens pelo emissorcabeçalho das mensagens pelo emissornn A soma de verificação é definida como o A soma de verificação é definida como o

complemento 1 (o inverso de cada bit) da complemento 1 (o inverso de cada bit) da soma binária de todas as palavras de 16 bits soma binária de todas as palavras de 16 bits da mensagem (completar com 0’s se faltar), da mensagem (completar com 0’s se faltar), incluindo o cabeçalho incluindo o cabeçalho TCP/UDPTCP/UDP (exceto a (exceto a soma de verificação) e o cabeçalho IPsoma de verificação) e o cabeçalho IP

48

DetecçãoDetecção de de ErrosErros

nn Detecção de Erros na InternetDetecção de Erros na Internetnn O receptor calcula a soma binária de todas as O receptor calcula a soma binária de todas as

palavras de 16 bits das mensagens recebidas, palavras de 16 bits das mensagens recebidas, incluindo o cabeçalho e a soma de verificaçãoincluindo o cabeçalho e a soma de verificação

nn Se este valor for 1111111111111111, a Se este valor for 1111111111111111, a mensagem não foi corrompida e é aceitamensagem não foi corrompida e é aceita

nn Caso contrário, a mensagem é descartada Caso contrário, a mensagem é descartada pelo receptorpelo receptor

PDF created with pdfFactory Pro trial version www.pdffactory.com

Page 9: n Sistemas Distribuídos n Sincronização de Relógios nfrank/unileste/Sistemas Distribuidos - Parte II.pdf · 7 2Canal de Comunicação Comunicação em Sist. Distribuídos nClassificação

49

DetecçãoDetecção de de ErrosErros

nn CorreçãoCorreção de de ErrosErrosnn A soma de A soma de verificaçãoverificação permitepermite apenasapenas detectardetectar

as as mensagensmensagens com com erroerro, , queque sãosão descartadasdescartadasnn Para Para queque sejaseja possívelpossível corrigircorrigir osos erroserros, o , o

receptor receptor precisaprecisa informarinformar aoao emissoremissor queque as as mensagensmensagens enviadasenviadas foramforam recebidasrecebidas((reconhecimentoreconhecimento positivopositivo) )

nn ReconhecimentoReconhecimento podepode ser ser enviadoenviado emem umaumamensagemmensagem independenteindependente ouou “de “de caronacarona” ” ememumauma mensagemmensagem de dados no de dados no fluxofluxo contráriocontrário

50

DetecçãoDetecção de de ErrosErros

nn CorreçãoCorreção de de ErrosErrosnn CasoCaso um um erroerro sejaseja detectadodetectado, é , é desejáveldesejável

emem algunsalguns casoscasos queque o o emissoremissor retransmitaretransmitao o quadroquadro de dados com de dados com erroerro

nn TCP TCP fazfaz correçãocorreção; UDP ; UDP nãonãonn MensagensMensagens de de reconhecimentoreconhecimento indicamindicam o o

recebimentorecebimento, , masmas elaselas tambémtambém podempodem ser ser perdidasperdidas

nn NumeraçãoNumeração de de quadrosquadros evitaevita a a duplicaçãoduplicaçãono receptorno receptor

51

DetecçãoDetecção de de ErrosErros

nn Correção de ErrosCorreção de Errosnn Mensagens de Reconhecimento (ACK)Mensagens de Reconhecimento (ACK)

tt

Máquina AMáquina A

Máquina BMáquina BDado:“O

SEQ:0

tt

ACK:

1

Dado:“K”

SEQ:1

ACK:

2

52

DetecçãoDetecção de de ErrosErros

nn Correção de Erros Correção de Erros nn Reconhecimento por CaronaReconhecimento por Carona

Máquina AMáquina A

Máquina BMáquina B

Dado:”Oi!”

SEQ:0 ACK:0

ttDa

do:”O

lá!”

SEQ:

0 AC

K:3

Dado:”Tudo OK?”

SEQ:3 ACK:4

53

DetecçãoDetecção de de ErrosErros

nn CorreçãoCorreção de de ErrosErros –– RetransmissãoRetransmissãonn EmissorEmissor retransmiteretransmite o o segmentosegmento se se nãonão

receberreceber o o reconhecimentoreconhecimento durantedurante um tempo um tempo máximomáximo de de esperaespera ((timeouttimeout))

nn Valor do Valor do timeouttimeout é é calculadocalculado com base no com base no tempo tempo médiomédio de de respostaresposta e no e no desviodesvio::TimeoutTimeout = = TTMMéédiodio + 4 + 4 TTDesvioDesvio

nn A A cadacada confirmaçãoconfirmação o o timeouttimeout é é recalculadorecalculado::TTMMéédiodio = (1= (1--αα) ) TTMMéédiodio + + αα TTAtualAtual [[αα ≅≅1/8]1/8]TTDesvioDesvio = (1= (1-- αα) ) TTDesvioDesvio + + αα ||TTMMéédiodio--TTAtualAtual||

54

DetecçãoDetecção de de ErrosErros

nn Correção de Erros Correção de Erros –– ExemplosExemplosnn Situação normalSituação normal

nn Erro: perda do segmentoErro: perda do segmento

Máquina AMáquina A

Máquina BMáquina B

envio envio timeouttimeout

Máquina AMáquina A

Máquina BMáquina B

envio envio timeouttimeout

tt

tt

SEQ:0SEQ:0

SEQ:0

ACK:

1

ACK:

1

PDF created with pdfFactory Pro trial version www.pdffactory.com

Page 10: n Sistemas Distribuídos n Sincronização de Relógios nfrank/unileste/Sistemas Distribuidos - Parte II.pdf · 7 2Canal de Comunicação Comunicação em Sist. Distribuídos nClassificação

55

DetecçãoDetecção de de ErrosErros

nn Correção de Erros Correção de Erros –– ExemplosExemplosnn Perda do reconhecimentoPerda do reconhecimento

nn Atraso na comunicaçãoAtraso na comunicação

Máquina AMáquina A

Máquina BMáquina B

envio envio timeouttimeout

Máquina AMáquina A

Máquina BMáquina B

envio envio timeouttimeout

mensagem duplicada mensagem duplicada (descartar e confirmar)(descartar e confirmar)

mensagem duplicada mensagem duplicada (descartar e confirmar)(descartar e confirmar)

tt

tt

SEQ:0

SEQ:0

SEQ:0

SEQ:0

ACK:

1

ACK:

1ACK:1

ACK:

1

ACK duplicado ACK duplicado (ignorar)(ignorar)

56

DetecçãoDetecção de de ErrosErros

nn JanelaJanela DeslizanteDeslizantenn PermitePermite quequeNN quadrosquadros sejamsejam enviadosenviados antes antes

do do reconhecimentoreconhecimentonn TimeoutTimeout indicaindica quandoquando devedeve haverhaver

retransmissãoretransmissão, , queque podepode ser integral ser integral ououseletivaseletiva ((reenviareenvia todostodos quadrosquadros apósapós o o timeout timeout ouou sósó o o quadroquadro perdidoperdido))

57

DetecçãoDetecção de de ErrosErros

nn JanelaJanela DeslizanteDeslizante

Máquina AMáquina A

Máquina BMáquina B

SEQ:10

ttSEQ

:14

ACK:

18

SEQ:18

Tamanho das Mensagens:Tamanho das Mensagens: 4 bytes4 bytesTamanho da Janela do Receptor:Tamanho da Janela do Receptor: 8 bytes 8 bytes Livres:Livres: 8..4......0.................4..0..4..0......................4...8..4......0.................4..0..4..0......................4.....8..8Usados:Usados:0..4......8.................4..8..4..8......................4...0..4......8.................4..8..4..8......................4.....0..0

TimeoutsTimeouts

SEQ:22 AC

K :26

ACK :

14

ACK :

22

Objetos DistribuídosObjetos Distribuídos

nn Chamada Remota de ProcedimentoChamada Remota de Procedimentonn DCOM DCOM nn CORBACORBAnn Serviços CORBAServiços CORBAnn Facilidades CORBAFacilidades CORBAnn CORBA IDLCORBA IDLnn Desenvolvimento de AplicaçõesDesenvolvimento de Aplicações 58

59

Objetos DistribuídosObjetos Distribuídos

nn Orientação a ObjetosOrientação a Objetosnn EncapsulamentoEncapsulamento::nnParte interna (privada) dos objetosParte interna (privada) dos objetosnn ImplementaImplementaçção: mão: méétodostodosnnEstado: atributos, variáveis, constantes e Estado: atributos, variáveis, constantes e

tipostiposnnParte externa (pública) dos objetos Parte externa (pública) dos objetos nn Interface: conjunto bem definido de Interface: conjunto bem definido de

métodos públicos que podem ser métodos públicos que podem ser acessados externamenteacessados externamente

60

Objetos DistribuídosObjetos Distribuídos

nn Orientação a Objetos (cont.)Orientação a Objetos (cont.)nn Herança: de interfaces e implementaçõesHerança: de interfaces e implementaçõesnn Polimorfismo: a mesma interface pode ter Polimorfismo: a mesma interface pode ter

várias implementaçõesvárias implementaçõesnn Interação entre objetosInteração entre objetosnnTroca de mensagens (chamadas de métodos)Troca de mensagens (chamadas de métodos)nnMensagens podem ser locais ou remotasMensagens podem ser locais ou remotasnnMensagens locais: objetos no mesmo Mensagens locais: objetos no mesmo

espaço de endereçamentoespaço de endereçamentonnMensagens remotas: objetos em Mensagens remotas: objetos em

máquinas diferentes máquinas diferentes àà distribudistribuíídos!dos!

PDF created with pdfFactory Pro trial version www.pdffactory.com

Page 11: n Sistemas Distribuídos n Sincronização de Relógios nfrank/unileste/Sistemas Distribuidos - Parte II.pdf · 7 2Canal de Comunicação Comunicação em Sist. Distribuídos nClassificação

61

Objetos DistribuídosObjetos Distribuídos

nn Orientação a Objetos (cont.)Orientação a Objetos (cont.)nn Referência do objeto Referência do objeto àà Ponteiro de memóriaPonteiro de memóriann O acesso ao estado do objeto é feito através O acesso ao estado do objeto é feito através

dos métodos da interface (única parte visível dos métodos da interface (única parte visível do objeto)do objeto)

nn Implementação independente da interfaceImplementação independente da interfacenn Métodos são acessados por outros objetosMétodos são acessados por outros objetos

62

Rede

Objetos DistribuídosObjetos Distribuídos

nn Objetos DistribuídosObjetos Distribuídosnn Interagem através da redeInteragem através da redenn Colaboram para atingir um objetivoColaboram para atingir um objetivonn Fornecem serviços (métodos) uns aos outrosFornecem serviços (métodos) uns aos outrosnn Apenas a interface do objeto é visívelApenas a interface do objeto é visívelnn Referência do objeto Referência do objeto possuipossui endereço de redeendereço de rede

63

Objetos DistribuídosObjetos Distribuídos

nn ProblemasProblemasnn Como compartilhar referências de objetos?Como compartilhar referências de objetos?nn Como gerenciar o ciclo de vida dos objetos?Como gerenciar o ciclo de vida dos objetos?nn Como gerenciar o acesso concorrente aos Como gerenciar o acesso concorrente aos

objetos?objetos?nn Como trabalhar num ambiente heterogêneo?Como trabalhar num ambiente heterogêneo?nnMáquinas podem ter arquiteturas diferentesMáquinas podem ter arquiteturas diferentesnnMáquinas podem estar em redes diferentesMáquinas podem estar em redes diferentesnnMáquinas podem rodar S.O.’s diferentesMáquinas podem rodar S.O.’s diferentesnnObjetos podem ser implementados em Objetos podem ser implementados em

linguagens diferenteslinguagens diferentes64

Objetos DistribuídosObjetos Distribuídos

nn Problemas (cont.)Problemas (cont.)nn Comunicação não confiável e nãoComunicação não confiável e não--determinista: determinista:

depende da dinâmica do sistema e da rededepende da dinâmica do sistema e da redenn Custo da comunicação: latência e largura de Custo da comunicação: latência e largura de

banda são fatores críticos em aplicações de banda são fatores críticos em aplicações de tempo real, multimídia, etc.tempo real, multimídia, etc.

nn Comunicação insegura: sem controle de Comunicação insegura: sem controle de autorização e sem proteção das mensagensautorização e sem proteção das mensagens

65

Objetos DistribuídosObjetos Distribuídos

nn Protocolos de Comunicação (cont.)Protocolos de Comunicação (cont.)nn Protocolos de alto nível são necessários para Protocolos de alto nível são necessários para

interação entre objetos distribuídosinteração entre objetos distribuídosnn Escolha natural: usar Escolha natural: usar TCP/IPTCP/IPnnCriaCria conexões conexões entreentre processosprocessos parapara trocatrocar r

mensagensmensagensnnAmplamente disponível, confiável e robustoAmplamente disponível, confiável e robustonnRelativamente simples e eficienteRelativamente simples e eficientennNão mascara o uso da rede do programadorNão mascara o uso da rede do programador

66

Objetos DistribuídosObjetos Distribuídos

nn Protocolo de Comunicação entre Objetos Protocolo de Comunicação entre Objetos nn Trata questões não resolvidas pelo Trata questões não resolvidas pelo TCP/IPTCP/IPnnFormato comum dos dadosFormato comum dos dadosnnLocalização de objetosLocalização de objetosnnSegurançaSegurança

nn Oferece ao programador abstrações Oferece ao programador abstrações própriasprópriasparapara aplicaçõesaplicações orientadasorientadas a a objetosobjetos, , comocomo o o RPC (RPC (Remote Procedure CallRemote Procedure Call) ) parapara invocarinvocarremotamenteremotamente osos métodosmétodos de de objetosobjetos

PDF created with pdfFactory Pro trial version www.pdffactory.com

Page 12: n Sistemas Distribuídos n Sincronização de Relógios nfrank/unileste/Sistemas Distribuidos - Parte II.pdf · 7 2Canal de Comunicação Comunicação em Sist. Distribuídos nClassificação

67

Chamada Remota de ProcedimentoChamada Remota de Procedimento

nn RPC RPC ((Remote Procedure Call Remote Procedure Call ))nn Segue o modelo Cliente/Servidor Segue o modelo Cliente/Servidor nn Muito usado na interação entre objetosMuito usado na interação entre objetosnn Objeto servidor possui interface com métodos Objeto servidor possui interface com métodos

que podem ser chamados remotamenteque podem ser chamados remotamentenn Objetos clientes usam serviços de servidoresObjetos clientes usam serviços de servidores

…x = Servidor.Soma(y,z);…

Cliente

*

Soma(int y, int z) {return(y+z);

}

Servidor

+

68

Chamada Remota de ProcedimentoChamada Remota de Procedimento

nn RPC RPC –– CaracterísticasCaracterísticasnn EmEm geralgeral as as requisiçõesrequisições sãosão pontoponto--aa--pontoponto e e

síncronassíncronasnn Dados Dados sãosão tipadostipadosnnParâmetros da requisiçãoParâmetros da requisiçãonnRetorno do Retorno do procedimento/métodoprocedimento/métodonnExceçõesExceções

nn Um objeto pode ser cliente e servidor em Um objeto pode ser cliente e servidor em momentos diferentesmomentos diferentes

69

Chamada Remota de ProcedimentoChamada Remota de Procedimento

nn RPC RPC –– SincronismoSincronismonn Chamada síncrona: cliente fica bloqueado Chamada síncrona: cliente fica bloqueado

aguardando o término da execução do métodoaguardando o término da execução do método

nn Chamadas semiChamadas semi--síncronas: sincronização é síncronas: sincronização é retardada; permitidas em alguns sistemas retardada; permitidas em alguns sistemas

Cliente

Servidor

Chamada

Execução

Retornot

t

Cliente

Servidor

Chamada

Execução

Retornot

t

Sincronização

Envio da Resposta

70

Chamada Remota de ProcedimentoChamada Remota de Procedimento

nn RPC RPC –– Sincronismo (cont.)Sincronismo (cont.)nn Chamadas assíncronas: cliente continua a Chamadas assíncronas: cliente continua a

execução sem aguardar o retorno do método; execução sem aguardar o retorno do método; permitidas em alguns sistemas permitidas em alguns sistemas Cliente

Servidor

Chamada

Execução Execução

Chamadat

t

71

Chamada Remota de ProcedimentoChamada Remota de Procedimento

nn RPC RPC –– FuncionamentoFuncionamentonn ChamadaChamada é é feitafeita pelopelo clientecliente comocomo se o se o

métodométodo fosse de um fosse de um objetoobjeto locallocalnn ComunicaçãoComunicação é é feitafeita transparentementetransparentemente porpor

códigocódigo geradogerado automaticamenteautomaticamente pelopelocompiladorcompilador ((stub,stub, proxy, skeleton, ...proxy, skeleton, ...) )

nn O O códigocódigo geradogerado fazfaz a a serializaçãoserialização e e desserializaçãodesserialização de dados de dados usandousando um um formatoformatopadrãopadrão, , queque compatibilizacompatibiliza o o formatoformato de dados de dados usadousado porpor diferentesdiferentes máquinasmáquinas, , linguagenslinguagens e e compiladorescompiladores

72

Chamada Remota de ProcedimentoChamada Remota de Procedimento

nn RPC RPC –– FuncionamentoFuncionamento do do ClienteClientenn AcessaAcessa objetoobjeto local local geradogerado automaticamenteautomaticamente

queque implementaimplementa interface do interface do servidorservidor remotoremotoPublic class Public class HelloServerStubHelloServerStub {{

public String public String hello(Stringhello(String nomenome) {) {// // EnviaEnvia pelapela rederede o o identificadoridentificador do do métodométodo e o valor dos ...e o valor dos ...// ... // ... parâmetro(sparâmetro(s) ) dada chamadachamada serializadosserializados parapara o o servidorservidor// // RecebeRecebe do do servidorservidor o valor do o valor do retornoretorno dada chamadachamada pelapela ... ... // ... // ... rederede, o , o deserializadeserializa e e retornaretorna o valor o valor recebidorecebido aoao clientecliente

}}// // OutrosOutros métodosmétodos ......

} }

PDF created with pdfFactory Pro trial version www.pdffactory.com

Page 13: n Sistemas Distribuídos n Sincronização de Relógios nfrank/unileste/Sistemas Distribuidos - Parte II.pdf · 7 2Canal de Comunicação Comunicação em Sist. Distribuídos nClassificação

73

Chamada Remota de ProcedimentoChamada Remota de Procedimento

nn RPC RPC –– FuncionamentoFuncionamento do do ServidorServidornn O O códigocódigo geradogerado automaticamenteautomaticamente receberecebe as as

chamadaschamadas pelapela rederede e as e as executaexecutawhile (true) {while (true) {

// // RecebeRecebe pelapela rederede o o identificadoridentificador do do métodométodo chamadochamado ......// ... // ... pelopelo clientecliente e e osos parâmetrosparâmetros dada chamadachamada serializadosserializados// // DesserializaDesserializa osos parâmetrosparâmetros enviadosenviados pelopelo clientecliente// // ChamaChama o o métodométodo no no objetoobjeto servidorservidor e e aguardaaguarda a a execuçãoexecução// // SerializaSerializa o valor do o valor do retornoretorno dada chamadachamada e e enviaenvia aoao clientecliente

}}

74

Chamada Remota de ProcedimentoChamada Remota de Procedimento

nn RPC RPC –– ImplementaçãoImplementaçãonn DescriçãoDescrição dada interface do interface do objetoobjeto remotoremotonnEspecificadaEspecificada nana própriaprópria linguagemlinguagem de de

programaçãoprogramaçãonnEspecificadaEspecificada usandousando umauma linguagemlinguagem de de

descriçãodescrição de interface de interface (IDL)(IDL)nn ImplementaçõesImplementações de RPC de de RPC de diferentesdiferentes

fabricantesfabricantes (Sun RPC, DCE RPC, Microsoft (Sun RPC, DCE RPC, Microsoft RPC, etc.) RPC, etc.) sãosão geralmentegeralmente incompatíveisincompatíveis

75

NotificaçãoNotificação de de EventosEventos

nn NotificaçãoNotificação de de EventosEventos –– CaracterísticasCaracterísticasnn EnvioEnvio de de eventoseventos é é completamentecompletamente assíncronoassíncrononnProdutorProdutor nãonão precisaprecisa aguardaraguardar fimfim do do envioenvionnEventoEvento é é armazenadoarmazenado no canal de no canal de eventoseventos

nn ComunicaçãoComunicação podepode ser ser feitafeita com com envioenvio de de mensagensmensagens multiicastmultiicast, com , com váriosvários enviosenviosunicastunicast ouou usandousando um um suportesuporte de RPCde RPC

nn Os Os eventoseventos podempodem terter tamanhotamanho fixofixo ououvariávelvariável, e , e limitadolimitado ouou ilimitadoilimitado

nn EventosEventos podempodem ser ser tipadostipados ouou nãonão

76

Objetos DistribuídosObjetos Distribuídos

nn Solução: criar Solução: criar MiddlewareMiddleware para objetos para objetos distribuídosdistribuídosnn Localização transparente dos objetosLocalização transparente dos objetosnn Invocação de métodos local e remoto idênticaInvocação de métodos local e remoto idênticann Criação de objeto local e remoto idênticaCriação de objeto local e remoto idênticann Migração de objetos transparenteMigração de objetos transparentenn Facilidades para ligação (Facilidades para ligação (bindingbinding) de ) de

interfaceinterfacess dinamicamentedinamicamentenn Diversos serviços de suporteDiversos serviços de suporte: : nnNomes, Transação, Tempo, etc.Nomes, Transação, Tempo, etc.

77

Objetos DistribuídosObjetos Distribuídos

nn Principais suportes de Principais suportes de MiddlewareMiddleware para para Objetos DistribuídosObjetos Distribuídosnn Java RMI (Java RMI (RemoteRemote MethodMethod InvocationInvocation), da ), da

SunSun MicrosystemsMicrosystemsnn DCOM (DCOM (DistributedDistributed ComponentComponent ObjectObject ModelModel), ),

da da Microsoft Microsoft CorporationCorporationnn CORBA (CORBA (CommonCommon ObjectObject RequestRequest BrokerBroker

ArchitectureArchitecture), da OMG (), da OMG (ObjectObject ManagementManagementGroupGroup))

78

DCOMDCOM

nn Distributed Component Object ModelDistributed Component Object Modelnn Desenvolvido pela MicrosoftDesenvolvido pela Microsoftnn PermitePermite a a interaçãointeração entreentre objetosobjetos//

componentescomponentes escritosescritos emem váriasvárias linguagenslinguagensnn EvoluiuEvoluiu de de umauma versãoversão centralizadacentralizada –– o COM o COM ––

parapara umauma versãoversão distribuídadistribuída –– o DCOMo DCOMnn DisponívelDisponível apenasapenas no no sistemassistemas operacionaloperacional

Microsoft Windows (9x/ME/XP e NT/200x) Microsoft Windows (9x/ME/XP e NT/200x)

PDF created with pdfFactory Pro trial version www.pdffactory.com

Page 14: n Sistemas Distribuídos n Sincronização de Relógios nfrank/unileste/Sistemas Distribuidos - Parte II.pdf · 7 2Canal de Comunicação Comunicação em Sist. Distribuídos nClassificação

79

DCOMDCOM

Máquina RemotaMáquina Remota

Processo BProcesso BProcesso AProcesso A

ClienteCliente

ObjetoObjeto

Proxy do Proxy do Objeto Objeto LocalLocalCOMCOM

Proxy do Proxy do Objeto Objeto RemotoRemotoDCOMDCOM

Objeto Objeto LocalLocal

Objeto Objeto RemotoRemoto

StubStub

COMCOM

StubStub

DCOMDCOM

RPCRPC

LRPCLRPC

80

DCOMDCOM

nn ProxyProxynn Equivalente à Equivalente à stubstub do RMI e do CORBAdo RMI e do CORBAnn SerializaSerializa dados e envia pela rededados e envia pela redenn Recebe resposta do servidorRecebe resposta do servidornn Pode ser local (LRPC) ou remota (RPC)Pode ser local (LRPC) ou remota (RPC)

nn StubStubnn Equivalente ao Equivalente ao skeletonskeleton do RMI e do CORBAdo RMI e do CORBAnn Recebe a requisição, Recebe a requisição, desserializadesserializa os dados e os dados e

faz a invocação no código servidorfaz a invocação no código servidornn Retorna o resultado Retorna o resultado serializadoserializado ao clienteao cliente

81

DCOMDCOM

nn Interfaces DCOMInterfaces DCOMnn Microsoft Microsoft Interface Interface DefinitionDefinition LanguageLanguage (MIDL) (MIDL)

sseparaepara a interface da implementaçãoa interface da implementaçãonn Interfaces possuem um identificador únicoInterfaces possuem um identificador úniconn Interfaces são apenas um grupo de funções Interfaces são apenas um grupo de funções

relacionadasrelacionadasnn Interfaces não possuem estado Interfaces não possuem estado nn Um Um objeto/componenteobjeto/componente pode suportar várias pode suportar várias

interfacesinterfacesnn Todos os objetos implementam a interface Todos os objetos implementam a interface

IUnknownIUnknown82

Dados Dados internosinternos

Ponteiro do Ponteiro do objeto objeto useruser

DCOMDCOM

nn Interfaces DCOMInterfaces DCOM

**

**

**

**

Tabela de funções da interface

Implementação das funções

Ponteiro para as funções

Objeto DCOM

83

DCOMDCOM

nn Características do DCOMCaracterísticas do DCOMnn Não suporta herança múltiplaNão suporta herança múltiplann RReusoeuso de código através de agregaçãode código através de agregaçãonn Referências remotas são dinâmicasReferências remotas são dinâmicas

nn Interoperabilidade com outras tecnologiasInteroperabilidade com outras tecnologiasnn Existem pontes que permitem a comunicação Existem pontes que permitem a comunicação

entre objetos entre objetos COM/DCOMCOM/DCOM e objetos CORBAe objetos CORBA

84

CORBACORBA

nn OMG (OMG (ObjectObject ManagementManagement GroupGroup):):nn Formada em 1989 Formada em 1989 nn Objetivos:Objetivos:nnPromover a teoria e prática de tecnologias Promover a teoria e prática de tecnologias

O.O. no desenvolvimento de softwareO.O. no desenvolvimento de softwarennCriar especificações gerais e proveitosas: Criar especificações gerais e proveitosas:

definir interfaces, e não implementaçõesdefinir interfaces, e não implementaçõesnn Composta por cerca de 800 empresas Composta por cerca de 800 empresas

interessadas no desenvolvimento de software interessadas no desenvolvimento de software usando tecnologia de objetos distribuídosusando tecnologia de objetos distribuídos

PDF created with pdfFactory Pro trial version www.pdffactory.com

Page 15: n Sistemas Distribuídos n Sincronização de Relógios nfrank/unileste/Sistemas Distribuidos - Parte II.pdf · 7 2Canal de Comunicação Comunicação em Sist. Distribuídos nClassificação

85

CORBACORBA

nn OMA (OMA (ObjectObject ManagementManagement ArchitectureArchitecture))nn InfraInfra--estrutura sobre a qual todas estrutura sobre a qual todas

especificações da OMG estão baseadasespecificações da OMG estão baseadasnn Define apenas aspectos arquiteturaisDefine apenas aspectos arquiteturaisnn Permite interoperabilidade entre aplicações Permite interoperabilidade entre aplicações

baseadas em objetos em sistemas abertos, baseadas em objetos em sistemas abertos, distribuídos e heterogêneosdistribuídos e heterogêneosnn Diferentes máquinasDiferentes máquinasnn Diferentes sistemas operacionaisDiferentes sistemas operacionaisnn Diferentes linguagens de programaçãoDiferentes linguagens de programação

nn Maior portabilidade e Maior portabilidade e reusabilidadereusabilidadenn Funcionalidade transparente para a aplicaçãoFuncionalidade transparente para a aplicação 86

Facilidades ComunsFacilidades Comuns

CORBACORBA

nn OMAOMA

Objetos de ServiçoObjetos de Serviço

Objetos da AplicaçãoObjetos da Aplicação

ObjectObject RequestRequest BrokerBroker (ORB)(ORB)

87

CORBACORBA

nn OMAOMAnn Objetos da AplicaçãoObjetos da AplicaçãonnDefinidos pelos Definidos pelos usuários/programadoresusuários/programadores

nn Facilidades ComunsFacilidades ComunsnnGrupos de objetos que fornecem serviços Grupos de objetos que fornecem serviços

para determinadas áreas de aplicaçãopara determinadas áreas de aplicaçãonn Objetos de ServiçoObjetos de ServiçonnServiços de propósito geral usados por Serviços de propósito geral usados por

objetos distribuídosobjetos distribuídosnn ObjectObject RequestRequest BrokerBroker (ORB)(ORB)nnCanal de comunicação entre objetosCanal de comunicação entre objetos

88

CORBACORBA

nn CORBA (CORBA (CommonCommon ObjectObject RequestRequest BrokerBrokerArchitectureArchitecture))nn Define concretamente as interfaces do ORB, Define concretamente as interfaces do ORB,

especificado de forma abstrata pela especificado de forma abstrata pela Arquitetura OMAArquitetura OMA

nn Permite a interação entre objetos distribuídos Permite a interação entre objetos distribuídos nn Fornece um suporte completoFornece um suporte completo para para

desenvolver aplicações distribuídas orientadas desenvolver aplicações distribuídas orientadas a objetosa objetos

89

CORBACORBA

nn HistóricoHistóriconn A versão 1.0 do CORBA foi proposta em 1991A versão 1.0 do CORBA foi proposta em 1991nn CORBA começou a se estabelecer a partir de CORBA começou a se estabelecer a partir de

1993, com o surgimento das primeiras 1993, com o surgimento das primeiras implementações de implementações de ORBsORBs comerciaiscomerciais

nn CORBA 2.0 foi lançado em 1996CORBA 2.0 foi lançado em 1996nn Interoperabilidade entre implementaçõesInteroperabilidade entre implementações

nn Versão 3.0 Versão 3.0 foifoi lançada em 200lançada em 20022nnAcrescentouAcrescentou suportesuporte a a componentescomponentes (CCM), (CCM),

invocaçõesinvocações assíncronasassíncronas de de métodosmétodos (AMI), (AMI), mensagensmensagens (CORBA Messaging), ...(CORBA Messaging), ...

90

CORBACORBA

nn CORBA proporciona total transparência CORBA proporciona total transparência para os Objetos Distribuídospara os Objetos Distribuídosnn Transparência de LinguagemTransparência de LinguagemnnUsa IDL (Usa IDL (Interface Interface DefinitionDefinition LanguageLanguage))

nn Transparência de S.O. e HardwareTransparência de S.O. e HardwarennORB pode ser implementado em várias ORB pode ser implementado em várias

plataformas: Windows, UNIX, SO’s plataformas: Windows, UNIX, SO’s embarcados e de tempo real, ...embarcados e de tempo real, ...

nn Transparência de Localização dos ObjetosTransparência de Localização dos ObjetosnnObjetos são localizados através de suas Objetos são localizados através de suas

referências, que são resolvidas pelo ORBreferências, que são resolvidas pelo ORB

PDF created with pdfFactory Pro trial version www.pdffactory.com

Page 16: n Sistemas Distribuídos n Sincronização de Relógios nfrank/unileste/Sistemas Distribuidos - Parte II.pdf · 7 2Canal de Comunicação Comunicação em Sist. Distribuídos nClassificação

91

CORBACORBA

nn IDL (IDL (Interface Interface DefinitionDefinition LanguageLanguage))nn UsadaUsada parapara descreverdescrever as interfaces de as interfaces de objetosobjetosnn LinguagemLinguagem ppuramenteuramente declarativa, declarativa, ssem em

nenhuma estrutura algorítmicanenhuma estrutura algorítmicann Sintaxe e tipos de dados baseados em Sintaxe e tipos de dados baseados em C/C++C/C++nn Define seus próprios tipos de dados, que são Define seus próprios tipos de dados, que são

mapeados nos tipos de dados de cada mapeados nos tipos de dados de cada linguagem de programação suportadalinguagem de programação suportada

nn Mapeada para diversas linguagens Mapeada para diversas linguagens nnC, C++, Java, C, C++, Java, DelphiDelphi, COBOL, , COBOL, PythonPython, ADA, , ADA,

SmalltalkSmalltalk, LISP, ..., LISP, ...92

nn Compilador IDL Compilador IDL nn Gera todo o código responsável por:Gera todo o código responsável por:nn Fazer a comunicação entre objetos Fazer a comunicação entre objetos nn Fazer o mapeamento dos tipos de dados Fazer o mapeamento dos tipos de dados

definidos em IDL para a linguagem usada definidos em IDL para a linguagem usada na implementaçãona implementaçãonn Fazer as conversões de dados necessárias Fazer as conversões de dados necessárias

na comunicação (na comunicação (serializaçãoserialização/ / marshallingmarshallingdos dados)dos dados)

CORBACORBA

93

CORBACORBA

nn Interação entre objetos no CORBA Interação entre objetos no CORBA nn Segue o modelo ClienteSegue o modelo Cliente--ServidorServidornn Cliente: faz requisições em Cliente: faz requisições em objsobjs. remotos. remotosnn Implementação de objeto: implementa os Implementação de objeto: implementa os

serviços descritos na sua interfaceserviços descritos na sua interface

ObjectObject RequestRequest BrokerBroker

Implementação Implementação de Objetode Objeto

ClienteCliente

94

CORBACORBA

nn Objetos Objetos CORBA CORBA possuem:possuem:nn Atributos: dados encapsulados pelo objeto que podem Atributos: dados encapsulados pelo objeto que podem

ser lidos e ter seu valor modificado pelo clienteser lidos e ter seu valor modificado pelo clientenn OperaOperaçções: serviões: serviçços que podem ser requisitados pelos os que podem ser requisitados pelos

clientes de um objeto, que possuem:clientes de um objeto, que possuem:nn Parâmetros: dados passados pelo cliente para a Parâmetros: dados passados pelo cliente para a

implementaimplementaçção do objeto ao chamar uma operaão do objeto ao chamar uma operaççãoãonn Resultado: dado retornado pela operaResultado: dado retornado pela operaçção ão nn ExceExceçções: retornadas quando detectada uma ões: retornadas quando detectada uma

condicondiçção anormal na execuão anormal na execuçção de uma operaão de uma operaçção ão nn Contextos: carregam informaContextos: carregam informaçção capaz de afetar a ão capaz de afetar a

execuexecuçção de uma operaão de uma operaççãoão

95

CORBACORBA

nn ArquiteturaArquitetura do ORBdo ORB

CORBACORBA

Núcleo do ORBNúcleo do ORB

Adaptador Adaptador de Objetode Objeto

SkeletonSkeletonDinâmicoDinâmico

SkeletonSkeletonIDLIDLInterface Interface

do ORBdo ORBStubsStubsIDLIDL

Invocação Invocação DinâmicaDinâmica

Implementação Implementação de Objetode Objeto

ClienteCliente

Repositório Repositório de Interfacede Interface

Repositório de Repositório de ImplementaçãoImplementação

96

CORBA CORBA

nn InvocaInvocaççãoão de de OperaOperaççõesões RemotasRemotasnn FormasFormas de de invocainvocaççãoão: : nnEstEstááticatica:: atravatravéés do cs do cóódigo gerado com digo gerado com

base na describase na descriçção da interface do ão da interface do servidor em IDLservidor em IDL;; ou ou nnDDinâmicainâmica:: atravatravééss dada interface de interface de

invocainvocaçção dinâmica do CORBAão dinâmica do CORBAnn OO servidor não percebe o tipo de servidor não percebe o tipo de

invocainvocaçção utilizado na requisião utilizado na requisiçção pelo ão pelo clientecliente

PDF created with pdfFactory Pro trial version www.pdffactory.com

Page 17: n Sistemas Distribuídos n Sincronização de Relógios nfrank/unileste/Sistemas Distribuidos - Parte II.pdf · 7 2Canal de Comunicação Comunicação em Sist. Distribuídos nClassificação

97

nn Invocação Estática:Invocação Estática: StubsStubs e e SkeletonsSkeletons IDLIDL

CORBACORBA

Implementação Implementação de Objetode Objeto

ClienteCliente

CORBACORBA

Adaptador Adaptador de Objetode Objeto

SkeletonSkeletonDinâmicoDinâmico

SkeletonSkeletonIDLIDL

Núcleo do ORBNúcleo do ORB

Interface Interface do ORBdo ORB

StubsStubsIDLIDL

Invocação Invocação DinâmicaDinâmica

Repositório Repositório de Interfacede Interface

Repositório de Repositório de ImplementaçãoImplementação

98

nn StubsStubs IDLIDLnn GGeraderadaas pelo compiladors pelo compilador IDL IDL com base na com base na

descrição da interface do objetodescrição da interface do objetonn Usadas na invocação estáticaUsadas na invocação estáticann O cliente O cliente conhece a interface, o método e os conhece a interface, o método e os

parâmetrosparâmetros em tempo de compilaçãoem tempo de compilação

nn SkeletonsSkeletons IDLIDLnn GGeraderadaas pelo compiladors pelo compilador IDL IDL nn Interface estática para os serviços (métodos) Interface estática para os serviços (métodos)

remotos executados pelo servidorremotos executados pelo servidor

CORBA CORBA

99

nn Invocação DinâmicaInvocação Dinâmica

CORBACORBA

CORBACORBA

Núcleo do ORBNúcleo do ORB

Adaptador Adaptador de Objetode Objeto

SkeletonSkeletonDinâmicoDinâmico

SkeletonSkeletonIDLIDLInterface Interface

do ORBdo ORBStubsStubsIDLIDL

Invocação Invocação DinâmicaDinâmica

Implementação Implementação de Objetode Objeto

ClienteCliente

Repositório Repositório de Interfacede Interface

Repositório de Repositório de ImplementaçãoImplementação

100

nn Interface de Invocação Dinâmica (DII)Interface de Invocação Dinâmica (DII)nn Permite que o cliente construa uma invocação Permite que o cliente construa uma invocação

em tempo de execuçãoem tempo de execuçãonn Elimina a necessidade das Elimina a necessidade das StubsStubs IDL IDL nn Com a DII, Com a DII, novos tipos de objetos novos tipos de objetos podempodem serser

adicionados ao sistema em tempo de execuçãoadicionados ao sistema em tempo de execuçãonn O O cliente especifica o objeto, o método e ocliente especifica o objeto, o método e oss

parâmetros com uma seqüência de chamadasparâmetros com uma seqüência de chamadasnn O servidor continua recebendo as requisições O servidor continua recebendo as requisições

através de seu através de seu skeletonskeleton IDLIDL

CORBACORBA

101

CORBACORBA

nn Repositório de InterfaceRepositório de Interfacenn Contém informações a respeito das interfaces Contém informações a respeito das interfaces

dos objetos gerenciados pelo ORBdos objetos gerenciados pelo ORBnn Permite que os serviços oferecidos pelo objeto Permite que os serviços oferecidos pelo objeto

sejam conhecidos dinamicamente por clientessejam conhecidos dinamicamente por clientesnn Para Para usarusar a DIIa DII, a interface do objeto deve ser , a interface do objeto deve ser

armazenada no repositório de interfacearmazenada no repositório de interface

102

CORBACORBA

nn Passos de uma Invocação Dinâmica:Passos de uma Invocação Dinâmica:Objetos Objetos ServidorServidor

Repositório Repositório de interfacede interface

““abc”abc” 999999 ‘‘f’f’ 3.143.14 truetrue ““olá”olá”Efetua a requisição (modo síncrono, assíncrono ou semi-síncrono)Obtém o resultado da requisição

Obtém o nome da interface do servidorCliente

Obtém a descrição dos métodosCliente

Cria uma requisiçãoCria uma lista de argumentosAdiciona argumentos à lista

PDF created with pdfFactory Pro trial version www.pdffactory.com

Page 18: n Sistemas Distribuídos n Sincronização de Relógios nfrank/unileste/Sistemas Distribuidos - Parte II.pdf · 7 2Canal de Comunicação Comunicação em Sist. Distribuídos nClassificação

103

nn SkeletonsSkeletons DinâmicosDinâmicos

CORBACORBA

CORBACORBA

Núcleo do ORBNúcleo do ORB

Adaptador Adaptador de Objetode Objeto

SkeletonSkeletonDinâmicoDinâmico

SkeletonSkeletonIDLIDLInterface Interface

do ORBdo ORBStubsStubsIDLIDL

Invocação Invocação DinâmicaDinâmica

Implementação Implementação de Objetode Objeto

ClienteCliente

Repositório Repositório de Interfacede Interface

Repositório de Repositório de ImplementaçãoImplementação

104

nn SkeletonsSkeletons DinâmicosDinâmicosnn SSubstituemubstituem os os SkeletonsSkeletons IDL na ativação do IDL na ativação do

objetoobjetonn Usados para manipular invocações de Usados para manipular invocações de

operações para as quais o servidor não possui operações para as quais o servidor não possui SkeletonsSkeletons IDLIDL

nn Fornece um mecanismo de ligação (Fornece um mecanismo de ligação (bindingbinding) ) em tempo de execuçãoem tempo de execução

nn Uso: implementar pontes entre Uso: implementar pontes entre ORBsORBs

CORBACORBA

105

nn AdaptadorAdaptador de de ObjetosObjetos

CORBACORBA

CORBACORBA

Núcleo do ORBNúcleo do ORB

Adaptador Adaptador de Objetode Objeto

SkeletonSkeletonDinâmicoDinâmico

SkeletonSkeletonIDLIDLInterface Interface

do ORBdo ORBStubsStubsIDLIDL

Invocação Invocação DinâmicaDinâmica

Implementação Implementação de Objetode Objeto

ClienteCliente

Repositório Repositório de Interfacede Interface

Repositório de Repositório de ImplementaçãoImplementação

106

nn Adaptador de ObjetosAdaptador de Objetosnn Interface entre o suporte e os objetos Interface entre o suporte e os objetos

servidoresservidoresnn Transforma um objeto escrito em uma Transforma um objeto escrito em uma

linguagem qualquer em um objeto CORBAlinguagem qualquer em um objeto CORBAnn Usado para geração e interpretação de Usado para geração e interpretação de

referências de objetos, invocação dos referências de objetos, invocação dos SkeletonsSkeletons, ativação e desativação de , ativação e desativação de implementações de objetos, etc.implementações de objetos, etc.

nn Existem vExistem váários tipos de adaptador de objetorios tipos de adaptador de objeto

CORBACORBA

107

nn PortablePortable ObjectObject AdapterAdapter (POA)(POA)nn Adaptador padrão: torna o servidor portável Adaptador padrão: torna o servidor portável

entre implementações diferentes entre implementações diferentes nn Abstrai a identidade do objeto da sua Abstrai a identidade do objeto da sua

implementaçãoimplementaçãonn Implementa políticas de gerenciamento de Implementa políticas de gerenciamento de

threadsthreads: : nnuma uma threadthread por objetopor objetonnuma uma threadthread por requisiçãopor requisiçãonngrupo (grupo (poolpool) de ) de threadsthreadsnnetcetc..

CORBACORBA

108

nn Núcleo do ORBNúcleo do ORB,, Interface do ORBInterface do ORBe e Repositório de ImplementaçãoRepositório de Implementação

CORBACORBA

CORBACORBA

Núcleo do ORBNúcleo do ORB

Adaptador Adaptador de Objetode Objeto

SkeletonSkeletonDinâmicoDinâmico

SkeletonSkeletonIDLIDLInterface Interface

do ORBdo ORBStubsStubsIDLIDL

Invocação Invocação DinâmicaDinâmica

Implementação Implementação de Objetode Objeto

ClienteCliente

Repositório Repositório de Interfacede Interface

Repositório de Repositório de ImplementaçãoImplementação

PDF created with pdfFactory Pro trial version www.pdffactory.com

Page 19: n Sistemas Distribuídos n Sincronização de Relógios nfrank/unileste/Sistemas Distribuidos - Parte II.pdf · 7 2Canal de Comunicação Comunicação em Sist. Distribuídos nClassificação

109

nn Núcleo do ORBNúcleo do ORBnn Implementa os serviços básicos de Implementa os serviços básicos de

comunicaçãocomunicaçãonn Utilizado pelos demais componentes do ORBUtilizado pelos demais componentes do ORB

nn Interface do ORBInterface do ORBnn Fornece serviços locais de propósito geralFornece serviços locais de propósito geralnn Usado tanto pelo cliente quanto pelo servidor Usado tanto pelo cliente quanto pelo servidor

nn Repositório de ImplementaçãoRepositório de Implementaçãonn Contém informações para o ORB localizar e Contém informações para o ORB localizar e

ativar as implementações de objetosativar as implementações de objetos

CORBACORBA

110

CORBACORBA

nn InterceptadoresInterceptadores

CORBACORBA

Núcleo do ORBNúcleo do ORB

Adaptador Adaptador de Objetode Objeto

SkeletonSkeletonDinâmicoDinâmico

SkeletonSkeletonIDLIDLInterface Interface

do ORBdo ORBStubsStubsIDLIDL

Invocação Invocação DinâmicaDinâmica

Implementação Implementação de Objetode Objeto

ClienteCliente

Repositório Repositório de Interfacede Interface

Repositório de Repositório de ImplementaçãoImplementação

I II II

111

CORBACORBA

nn InterceptadoresInterceptadoresnn DDispositivosispositivos interpostos no caminho de interpostos no caminho de

invocaçãoinvocação,, entre Cliente e Servidorentre Cliente e Servidornn Permitem executar código adicional para Permitem executar código adicional para

gerenciamento/controle/segurançagerenciamento/controle/segurança, etc., etc.nn Há Há cincocinco pontos pontos possíveispossíveis de interceptação de interceptação nnDoisDois pontospontos de interceptação de interceptação no no clientecliente: : aoao

enviarenviar a a chamadachamada e e aoao receberreceber a a respostarespostannDoisDois pontospontos de interceptação de interceptação no no servidorservidor: : aoao

receberreceber a a chamadachamada e e aoao enviarenviar a a respostarespostannUm Um pontoponto de interceptação de interceptação no POA: no POA: apósapós a a

criaçãocriação dada referênciareferência do do objetoobjeto (IOR)(IOR)112

CORBACORBA

nn Interoperabilidade Interoperabilidade nn CORBA garante a interoperabilidade entre CORBA garante a interoperabilidade entre

objetos que usem diferentes implementações objetos que usem diferentes implementações de ORBde ORB

nn Solução adotada a partir do CORBA 2.0Solução adotada a partir do CORBA 2.0nnPadronizar o protocolo de comunicação e o Padronizar o protocolo de comunicação e o

formato das mensagens trocadasformato das mensagens trocadasnnFoi definido um protocolo geral, que é Foi definido um protocolo geral, que é

especializado para vários ambientes especializado para vários ambientes específicosespecíficos

113

CORBACORBA

nn Interoperabilidade (cont.)Interoperabilidade (cont.)nn Protocolo Protocolo InterInter--ORBORB Geral (GIOP)Geral (GIOP)nnEEspecificaspecifica um conjunto de mensagens e um conjunto de mensagens e

dados para a comunicação entre dados para a comunicação entre ORBsORBsnn Especializações do GIOPEspecializações do GIOPnnProtocolo InterProtocolo Inter--ORB ORB parapara IInternetnternet (IIOP): (IIOP):

specificaspecifica como mensagens GIOP são como mensagens GIOP são transmitidas numa rede TCP/IP transmitidas numa rede TCP/IP nnProtocoloProtocoloss InterInter--ORB para AmbienteORB para Ambientess

EspecíficoEspecíficos: ps: permitermitemem a interoperabilidade a interoperabilidade do ORB com outros ambientes (ex.: DCEdo ORB com outros ambientes (ex.: DCE, , ATM ATM nativonativo, etc., etc.))

114

nn HalfHalf bridgebridge

InteroperabilidadeInteroperabilidade

IIOPIIOP

IIOPIIOP

HalfHalfBridgeBridge

HalfHalfBridgeBridge

DCE DCE -- GIOPGIOP

Outros Outros protocolosprotocolos

Domínio ORBDomínio ORB

IIOPIIOP

Domínio ORBDomínio ORB

PDF created with pdfFactory Pro trial version www.pdffactory.com

Page 20: n Sistemas Distribuídos n Sincronização de Relógios nfrank/unileste/Sistemas Distribuidos - Parte II.pdf · 7 2Canal de Comunicação Comunicação em Sist. Distribuídos nClassificação

115

nn Interoperabilidade entre Interoperabilidade entre ORBsORBs usando usando BridgeBridge requestrequest--levellevel

InteroperabilidadeInteroperabilidade

Serviços do ORB

Núcleo do ORB X

Serviços do ORB

Núcleo do ORB Y

DIIDII

BridgeBridge ServidorServidorClienteCliente

DIIDII DSIDSI

116

nn Interoperabilidade entre Interoperabilidade entre ORBsORBs usando usando BridgeBridge InIn--LineLine

InteroperabilidadeInteroperabilidade

Serviços do ORB

Núcleo do ORB X

Serviços do ORB

Núcleo do ORB Y

ServidorServidorClienteCliente

DIIDII

117

CORBACORBA

nn InteroperaInteroperabbiilliiddaaddee entre CORBA e Java RMIentre CORBA e Java RMInn Une as vantagens das duas tecnologiasUne as vantagens das duas tecnologiasnn AppletsApplets, , ServletsServlets e aplicações Java podem ser e aplicações Java podem ser

clientes CORBA usando clientes CORBA usando RMI/IIOPRMI/IIOP ou ORB Javaou ORB Javann Mapeamentos: IDL Mapeamentos: IDL àà Java Java ee Java Java àà IDLIDL

nn Interoperabilidade entre CORBA e DCOMInteroperabilidade entre CORBA e DCOMnn Permite que objetos DCOM acessem serviços Permite que objetos DCOM acessem serviços

oferecidos por objetos CORBA e viceoferecidos por objetos CORBA e vice--versaversann BridgesBridges convertem mensagens entre os convertem mensagens entre os

ambientes, integrando o DCOM a plataformas ambientes, integrando o DCOM a plataformas nas quais ele não está disponívelnas quais ele não está disponível

118

CORBACORBA

nn Padrões RelacionadosPadrões Relacionadosnn CCM:CCM: mmodeloodelo de de ccomponentesomponentes CORBACORBAnn CORBA AV CORBA AV streamsstreams:: para para fluxosfluxos de de

áudio/vídeoáudio/vídeonn MinimumMinimum CORBA: CORBA: parapara sistemassistemas embarcadosembarcadosnn RT CORBA:RT CORBA: para tempopara tempo--realrealnn FT CORBA:FT CORBA: para para toltolerânciaerância a falhasa falhasnn CORBASecCORBASec: : serviçoserviço de de segurançasegurançann CORBA Messaging: CORBA Messaging: parapara trocatroca de de mensagensmensagensnn AMI: AMI: parapara invocaçãoinvocação assíncronaassíncrona de de métodosmétodosnn MMapeaapeamentomento de UMLde UML pparaara IIDLDL

119

CORBACORBA

nn Padrões Relacionados (cont.)Padrões Relacionados (cont.)nn ModelModel--Driven ArchitectureDriven Architecture (MDA)(MDA)nn UnifiedUnified ModelingModeling LanguageLanguage (UML(UML))nn CommonCommon WarehouseWarehouse MetamodelMetamodel (CWM)(CWM)nn XML XML MetadataMetadata InterchageInterchage (XMI)(XMI)

nn Em fase de padronização:Em fase de padronização:nn IntegraçãoIntegração de de negóciosnegócios, , finançasfinanças, , manufaturamanufatura, … , … nn IntegraçãoIntegração com Web Services e .NET com Web Services e .NET nn SuporteSuporte parapara aagentes móveisgentes móveisnn SuporteSuporte parapara redesredes semsem fiofionn ... e dezenas de outras especificações.... e dezenas de outras especificações. 120

nn Serviços CORBAServiços CORBAnn Coleção de serviços em nível de sistema Coleção de serviços em nível de sistema nn Oferecem funcionalidades básicas para Oferecem funcionalidades básicas para

utilizar e implementar os objetos de utilizar e implementar os objetos de aplicações distribuídasaplicações distribuídas

nn Especificam as interfaces e casos de uso, Especificam as interfaces e casos de uso, deixando a implementação de ladodeixando a implementação de lado

nn Estendem ou complementam as Estendem ou complementam as funcionalidades do ORBfuncionalidades do ORB

nn Independentes da aplicaçãoIndependentes da aplicação

Serviços CORBAServiços CORBA

PDF created with pdfFactory Pro trial version www.pdffactory.com

Page 21: n Sistemas Distribuídos n Sincronização de Relógios nfrank/unileste/Sistemas Distribuidos - Parte II.pdf · 7 2Canal de Comunicação Comunicação em Sist. Distribuídos nClassificação

121

Aplicações Distribuídas

Object Request Broker (ORB)

Sistema Operacional e Serviços de Rede

Serviços CORBAConsulta

Licenciamento

Propriedade

Tempo

Segurança

Trader

Coleção

Replicação

Notificação

Gerenciamento

........

........

Transação

Concorrência

Relacionamento

Externalização

Nomeação

Eventos

Ciclo de vida

Persistente

Serviços CORBAServiços CORBA

122

nn Serviço de Nomes (Serviço de Nomes (NamingNaming ServiceService))nn Define as interfaces necessárias para mapear Define as interfaces necessárias para mapear

um nome com uma referência de objetoum nome com uma referência de objetonn O objeto que implementa o serviço de nomes O objeto que implementa o serviço de nomes

mantém a base de dados com o mapeamento mantém a base de dados com o mapeamento entre referências e nomesentre referências e nomes

nn Uma referência para este serviço é obtida Uma referência para este serviço é obtida através do método: através do método: resolve_initial_referencesresolve_initial_references(“(“NameServiceNameService”)”)

nn A referência do serviço de nomes é mantida A referência do serviço de nomes é mantida pelo ORB ou em um servidor de diretório, http, pelo ORB ou em um servidor de diretório, http, ftp, etc.ftp, etc.

Serviços CORBAServiços CORBA

123

Serviços CORBAServiços CORBA

nn Serviço de Nomes Serviço de Nomes –– Conceitos Conceitos nn Interface: Interface: NamingContextNamingContextnn Referência: IOR (Referência: IOR (InteroperableInteroperable ObjectObject

ReferenceReference))nn NameName bindingbinding: (nome, referência de objeto) : (nome, referência de objeto)

NamingNamingContextContext

(Banco, refobj1)(Banco, refobj1)

(Banco1, refobj1)(Banco1, refobj1)

(Conta, refobj2)(Conta, refobj2)

124

nn Serviço de Nomes Serviço de Nomes –– ExemploExemplo

Serviços CORBAServiços CORBA

NamingNamingContextContext

ClienteCliente ObjetoObjetoServidorServidor

ServidorServidorHTTPHTTP 1) write

2) get

4) get 3) bind

5) resolve

6) ... 1) Escrever a IOR

2) Pega a referência

3) Cria o mapeamento

4) Pega a referência

5) Consulta o Serviço

6) Executa operações

125

nn Serviço de Eventos (Serviço de Eventos (EventEvent ServiceService))nn Define como objetos podem registrar seu Define como objetos podem registrar seu

interesse dinamicamente em eventos enviados interesse dinamicamente em eventos enviados por outros objetospor outros objetos

nn Tipos de clientes do serviço Tipos de clientes do serviço nnProdutores (ou Produtores (ou publisherspublishers) de eventos) de eventosnnConsumidores (ou Consumidores (ou subscriberssubscribers) de eventos) de eventos

nn Canais de eventos (Canais de eventos (EventEvent ChannelsChannels) coletam e ) coletam e distribuem eventos entre objetos da aplicaçãodistribuem eventos entre objetos da aplicação

nn Três abordagens: Três abordagens: PushPush, , PullPull e Mistae Mista

Serviços CORBAServiços CORBA

126

Canal de Canal de EventosEventos

nn Serviço de Eventos Serviço de Eventos –– Abordagem Abordagem PushPush

Serviços CORBAServiços CORBA

Consumidores Consumidores de Eventosde Eventos

ProdutoresProdutoresde Eventosde Eventos

PDF created with pdfFactory Pro trial version www.pdffactory.com

Page 22: n Sistemas Distribuídos n Sincronização de Relógios nfrank/unileste/Sistemas Distribuidos - Parte II.pdf · 7 2Canal de Comunicação Comunicação em Sist. Distribuídos nClassificação

127

Canal de Canal de EventosEventos

nn Serviço de Eventos Serviço de Eventos –– Abordagem Abordagem PullPull

Serviços CORBAServiços CORBA

Consumidores Consumidores de Eventosde Eventos

ProdutoresProdutoresde Eventosde Eventos

128

nn Serviço de Eventos Serviço de Eventos –– Abordagem Abordagem MistaMista

Serviços CORBAServiços CORBA

Consumidores Consumidores de Eventosde Eventos

Produtores Produtores de Eventosde Eventos

Canal de Canal de EventosEventos

129

Serviços CORBAServiços CORBA

nn Serviço de Eventos Serviço de Eventos –– VantagensVantagensnn Desacoplamento da comunicaçãoDesacoplamento da comunicaçãonnUm produtor não precisa saber quantos ou Um produtor não precisa saber quantos ou

quem são os consumidoresquem são os consumidoresnnUm consumidor não precisa saber quantos Um consumidor não precisa saber quantos

ou quem são os produtoresou quem são os produtoresnn Produtores e consumidores podem se conectar Produtores e consumidores podem se conectar

facilmente a vários canais de eventosfacilmente a vários canais de eventos

130

nn Serviço de Notificação (Serviço de Notificação (NotificationNotification ServiceService))nn Extensão do serviço de eventos que oferece:Extensão do serviço de eventos que oferece:nnQualidade de serviço: prioridade, prazo de Qualidade de serviço: prioridade, prazo de

validade dos eventos, ...validade dos eventos, ...nnPersistência: armazena evento em um BDPersistência: armazena evento em um BDnnFiltragem de eventos: limita os eventos Filtragem de eventos: limita os eventos

recebidos usando um padrãorecebidos usando um padrãonnEventos estruturados: possuem propriedades Eventos estruturados: possuem propriedades

e dados para filtrageme dados para filtragemnnSuporte a Suporte a MulticastMulticast: reduz tráfego na rede: reduz tráfego na rede

Serviços CORBAServiços CORBA

131

nn Serviço de Ciclo de Vida (Serviço de Ciclo de Vida (LifeLife CycleCycle ServiceService))nn Define interfaces e convenções para criar, Define interfaces e convenções para criar,

remover, copiar e mover objetosremover, copiar e mover objetosnnFactoryFinderFactoryFindernnGenericFactoryGenericFactorynnLifeCycleObjectLifeCycleObject

nn Estas operações podem ser realizadas Estas operações podem ser realizadas remotamente pelos objetos da aplicaçãoremotamente pelos objetos da aplicação

Serviços CORBAServiços CORBA

132

Serviços CORBAServiços CORBA

nn Serviço de Ciclo de Vida Serviço de Ciclo de Vida –– Exemplo de usoExemplo de uso

LifeCycleLifeCycleObjectObjectClienteCliente

FactoryFactoryFinderFinder

GenericGenericFactoryFactory

find_factories()

copy/move/remove()

create_object()

PDF created with pdfFactory Pro trial version www.pdffactory.com

Page 23: n Sistemas Distribuídos n Sincronização de Relógios nfrank/unileste/Sistemas Distribuidos - Parte II.pdf · 7 2Canal de Comunicação Comunicação em Sist. Distribuídos nClassificação

133

Serviços CORBAServiços CORBA

nn Serviço de Persistência Serviço de Persistência ((PersistentPersistent StateState ServiceService))nn Substitui o antigo Substitui o antigo PersistentPersistent ObjectObject ServiceServicenn Este serviço é acessado através do método Este serviço é acessado através do método resolve_initial_referencesresolve_initial_references(“PSS”)(“PSS”)

nn Define as interface Define as interface StorageStorage ObjectObject, , StorageStorageHomeHome e e DatastoreDatastore

nn Define um Define um supersetsuperset da IDL: a da IDL: a PersistentPersistent StateStateDefinitionDefinition LanguageLanguage (PSDL)(PSDL)

134

Serviços CORBAServiços CORBA

nn Serviço de Persistência Serviço de Persistência –– Exemplo de PSDLExemplo de PSDLabstract storagetype Person {

readonly state long social_security_number;state string full_name;state string phone_number;

};abstract storagehome PersonHome of Person {

Person create(in long ssn, in string full_name, in string phone);

};catalog People {

provides PersonHome person_home;};

135

Serviços CORBAServiços CORBA

nn Serviço de Transação (Serviço de Transação (TransactionTransaction ServiceService))nn Propriedades garantidas pelo serviço:Propriedades garantidas pelo serviço:nnAtomicidade: um conjunto de computações Atomicidade: um conjunto de computações

é integralmente realizado ou não realizadoé integralmente realizado ou não realizadonnConsistência: uma transação mantém a Consistência: uma transação mantém a

consistência de estado dos objetosconsistência de estado dos objetosnn Isolamento: resultados parciais de uma Isolamento: resultados parciais de uma

transação são invisíveis para transações transação são invisíveis para transações concorrentesconcorrentesnnDurabilidade: resultados de uma transação Durabilidade: resultados de uma transação

são persistentessão persistentes136

Serviços CORBAServiços CORBA

nn Serviço de Transação Serviço de Transação –– Efetivação Efetivação nn Efetivação da transação é feita usando o Efetivação da transação é feita usando o

protocolo 2PC (protocolo 2PC (twotwo--phasephase--commitcommit ))nn Envio de uma mensagem “Envio de uma mensagem “prepareprepare””nn Votos das partesVotos das partesnn Decisão sobre o resultado (um voto Decisão sobre o resultado (um voto

negativo aborta)negativo aborta)nn Envio de mensagens de conclusão ou o Envio de mensagens de conclusão ou o

cancelamentocancelamento

137

Serviços CORBAServiços CORBA

nn Serviço de Transação Serviço de Transação –– UtilizaçãoUtilizaçãonn A interface A interface TransactionCurrentTransactionCurrent oferece as oferece as

operações para o controle de transaçõesoperações para o controle de transaçõesnnMétodo Método beginbegin() indica o início da transação() indica o início da transaçãonnMétodo Método commitcommit() para tentar concluir () para tentar concluir

(pode ocorrer uma exceção de sistema)(pode ocorrer uma exceção de sistema)nnMétodo Método rollbackrollback() para abortar() para abortar

nn Este serviço é acessado através do método Este serviço é acessado através do método resolve_initial_referencesresolve_initial_references(“(“TransactionTransactionCurrentCurrent”)”)

138

nn Serviço de Segurança (Serviço de Segurança (SecuritySecurity ServiceService))nn Fornece serviços de segurança para objetos Fornece serviços de segurança para objetos

de aplicações CORBAde aplicações CORBAnn Define a infraestrutura para garantirDefine a infraestrutura para garantirnn Identificação e AutenticaçãoIdentificação e AutenticaçãonnAutorização e Controle de AcessoAutorização e Controle de AcessonnAuditoriaAuditoriannSegurança na ComunicaçãoSegurança na ComunicaçãonnNão RepudiaçãoNão Repudiação

nn Independente da Tecnologia de Segurança Independente da Tecnologia de Segurança usada: SSL, Kerberos, CSIusada: SSL, Kerberos, CSI--ECMA, etc.ECMA, etc.

Serviços CORBAServiços CORBA

PDF created with pdfFactory Pro trial version www.pdffactory.com

Page 24: n Sistemas Distribuídos n Sincronização de Relógios nfrank/unileste/Sistemas Distribuidos - Parte II.pdf · 7 2Canal de Comunicação Comunicação em Sist. Distribuídos nClassificação

139

nn Serviço de Segurança Serviço de Segurança –– ArquiteturaArquitetura

Serviços CORBAServiços CORBA

ORB Core

Serviços de

Segurança

Serviços do ORB

Serviços do ORB

ServidorCliente

Requisição Requisição

Tecnologia de segurançaComunicação e proteção básica

140

nn Serviço de Tempo (Serviço de Tempo (Time Time ServiceService))nn Usado para ordenar, gerar ou computar Usado para ordenar, gerar ou computar

intervalo entre eventos (temporização e intervalo entre eventos (temporização e alarmes) no sistemaalarmes) no sistema

nn Baseado no padrão UTC (Baseado no padrão UTC (Universal Universal Time Time CoordinatedCoordinated): ): fornece uma estimativa fornece uma estimativa do erro de transmissãodo erro de transmissão

nn Pode ser usado para Pode ser usado para sincronização de relógios sincronização de relógios em ambiente heterogêneoem ambiente heterogêneo

Serviços CORBAServiços CORBA

Clientes do ServiçoClientes do Serviço

TimeTimeServiceService

141

Serviços CORBAServiços CORBA

nn Serviço de Consulta Serviço de Consulta ((QueryQuery ServiceService))nn Define a interface entre Define a interface entre

BD (relacional, OO ou outros) BD (relacional, OO ou outros) e objetos CORBAe objetos CORBA

nn Define operações de Define operações de consulta para objetos: consulta para objetos: interface interface QueryEvaluatorQueryEvaluator

nn Baseado na SQL3 e na OQL Baseado na SQL3 e na OQL ((ObjectObject QueryQuery LanguageLanguage))

ObjetoObjeto

ClienteCliente

QueryQueryEvaluatorEvaluator

QueryQueryEvaluatorEvaluator

ObjetoObjeto

QueryQueryEvaluatorEvaluator

SistemaSistemaNativoNativo

142

Serviços CORBAServiços CORBA

nn RealReal--Time CORBATime CORBAnn Permite que o CORBA seja utilizado para Permite que o CORBA seja utilizado para

construir sistemas com requisitos temporaisconstruir sistemas com requisitos temporaisnn Depende dos mecanismos de tempo real do Depende dos mecanismos de tempo real do

sistema operacional, do suporte de sistema operacional, do suporte de comunicação e da aplicação para que haja comunicação e da aplicação para que haja determinismo fimdeterminismo fim--aa--fimfim

nn São feitas modificações no suporte de São feitas modificações no suporte de comunicação do CORBA de modo a atender os comunicação do CORBA de modo a atender os requisitos de tempo realrequisitos de tempo real

143

Serviços CORBAServiços CORBA

nn Características do RTCaracterísticas do RT--CORBACORBAnn Prioridades globais do RTPrioridades globais do RT--CORBA são CORBA são

associadas a chamadas remotas de objetos associadas a chamadas remotas de objetos nn Conjuntos (Conjuntos (poolspools) de ) de threadsthreads podem ser podem ser

criados para executar as chamadas remotas criados para executar as chamadas remotas de objetosde objetos

nn Podem ser criadas conexões privadas Podem ser criadas conexões privadas associadas a prioridades para comunicação associadas a prioridades para comunicação entre objetosentre objetos

144

Serviços CORBAServiços CORBA

nn O RTO RT--CORBA fornece ainda:CORBA fornece ainda:nn Um Serviço de Escalonamento, que provê Um Serviço de Escalonamento, que provê

suporte para o escalonamento estático (suporte para o escalonamento estático (offoff--lineline) ou dinâmico de operações tempo real) ou dinâmico de operações tempo real

nn O RTO RT--POA, que adiciona funções de tempo POA, que adiciona funções de tempo real ao POAreal ao POA

nn Um Um mapeadormapeador de prioridades, que converte de prioridades, que converte prioridades do RTprioridades do RT--CORBA em prioridades do CORBA em prioridades do sistema operacional (nativas) e vicesistema operacional (nativas) e vice--versaversa

nn Um gerenciador do RTUm gerenciador do RT--CORBACORBA

PDF created with pdfFactory Pro trial version www.pdffactory.com

Page 25: n Sistemas Distribuídos n Sincronização de Relógios nfrank/unileste/Sistemas Distribuidos - Parte II.pdf · 7 2Canal de Comunicação Comunicação em Sist. Distribuídos nClassificação

145

Serviços CORBAServiços CORBA

nn FaultFault--TolerantTolerant CORBACORBAnn Usado no desenvolvimento de aplicações Usado no desenvolvimento de aplicações

confiáveisconfiáveisnnPermitir que serviços sejam oferecidos Permitir que serviços sejam oferecidos

continuamente mesmo em presença de continuamente mesmo em presença de falhas parciais no sistemafalhas parciais no sistema

nn Técnicas de replicaçãoTécnicas de replicaçãonnFaz várias cópias (réplicas) de um servidorFaz várias cópias (réplicas) de um servidornnEm caso de falha de um servidor, existem Em caso de falha de um servidor, existem

réplicas para atender o clienteréplicas para atender o cliente146

Serviços CORBAServiços CORBA

nn Serviços do FTServiços do FT--CORBACORBAnn Serviço de Gerenciamento de Replicação (SGR):Serviço de Gerenciamento de Replicação (SGR):

nn Serviço de Gerenciamento de Grupo (SGG)Serviço de Gerenciamento de Grupo (SGG)nn Serviço de Gerenciamento de Propriedades (SGP)Serviço de Gerenciamento de Propriedades (SGP)nn Serviço de Fábrica de Objetos (SFO)Serviço de Fábrica de Objetos (SFO)

nn Serviço de Gerenciamento de Falhas (SGF)Serviço de Gerenciamento de Falhas (SGF)::nn Serviço de Detecção de Falhas (SDF)Serviço de Detecção de Falhas (SDF)nn Serviço de Notificação de Falhas (SNF)Serviço de Notificação de Falhas (SNF)nn Serviço de Análise de Falhas (SAF)Serviço de Análise de Falhas (SAF)

nn Serviço de Serviço de LoggingLogging e Recuperação (SLR):e Recuperação (SLR):nn Registro das requisiçõesRegistro das requisiçõesnn Atualização de estadoAtualização de estado

147

GenericGeneric FactoryFactory GenericGeneric FactoryFactory

Serviços CORBAServiços CORBA

ClienteCliente

Gerenciamento de Gerenciamento de ReplicaçãoReplicação

PropriedadesPropriedades GruposGrupos

NotificadorNotificadorde Falhade Falha

DFDFHostHost

ServidorServidor

LoggingLogging LoggingLoggingRecuperaçãoRecuperação RecuperaçãoRecuperação

ServidorServidorDFDF DFDF

Sistema de Comunicação de GrupoSistema de Comunicação de Grupo

Admin.Admin.

148

nn Facilidades CORBA Facilidades CORBA nn Coleções de serviços de propósito geraColeções de serviços de propósito gerall

utilizados por aplicações distribuídasutilizados por aplicações distribuídasnn Facilidades Horizontais Facilidades Horizontais nn São utilizadas por várias aplicações, São utilizadas por várias aplicações,

independente da área da aplicaçãoindependente da área da aplicaçãonn São divididas segundo quatro categoriasSão divididas segundo quatro categoriasnn Interface do usuárioInterface do usuárionnGerenciamento de informaçãoGerenciamento de informaçãonnGerenciamento de sistemaGerenciamento de sistemannGerenciamento de tarefaGerenciamento de tarefa

Facilidades CORBAFacilidades CORBA

149

Facilidades CORBA HorizontaisGerenciamento de sistemaInterface do

usuário

Gerenciamento de rendering

Scripting

Suporte ao usuário

Composição da apresentação

Gerenciamento de desktop

Gerenciamento de informação

Troca de dados

Troca de informação

Representação e encodificação

Operações de tempo

Modelamento

Armazenamentoe recuperação

Troca de composição

Coleção de dados

Eventos

Instância

Instrumentação

Consistência

Customização

Qualidade de serviço

Escalonamento

Segurança

Coleção

Política

Lançar processos

Gerenciamento de tarefa

Workflow

Agentes

Automação

Regras

Aplicações Distribuídas

Facilidades CORBAFacilidades CORBA

Object Request Broker (ORB)

150

nn Facilidades Verticais Facilidades Verticais nn São utilizadas em áreas de aplicação São utilizadas em áreas de aplicação

específicasespecíficasnn Exemplos: Exemplos: nnProcessamento de ImagensProcessamento de ImagensnnSuperviasSupervias de informaçãode informaçãonnManufatura integrada por computadorManufatura integrada por computadornnSimulação distribuídaSimulação distribuídannContabilidadeContabilidadenn ......

Facilidades CORBAFacilidades CORBA

PDF created with pdfFactory Pro trial version www.pdffactory.com

Page 26: n Sistemas Distribuídos n Sincronização de Relógios nfrank/unileste/Sistemas Distribuidos - Parte II.pdf · 7 2Canal de Comunicação Comunicação em Sist. Distribuídos nClassificação

151

Facilidades CORBA Verticais

Supervia da informação

Mapeamento

Produção e exploração de

óleo e gás

Segurança

Telecomu-nicações

Replicação

Tempo-real

Meta-objetos ........

Medicina

Simulação Distribuída

Internacio-nalização

Contabilidade

Desenvolvi-mento de

Aplicações

Manufatura

Facilidades CORBAFacilidades CORBA

Aplicações Distribuídas

Object Request Broker (ORB)

152

CORBA IDLCORBA IDL

nn IDLIDL (L(Linguageminguagem de de DDefiniçãoefinição de de IInterfacenterface))nn UsadaUsada para descrever para descrever as as interfaces dinterfaces dosos

objetos CORBAobjetos CORBAnn É uma linguagem declarativa, sem estruturas É uma linguagem declarativa, sem estruturas

algorítmicasalgorítmicas, , queque permitepermite somentesomente descreverdescrevertipostipos de dadosde dados, constantes e operações de um , constantes e operações de um objeto CORBAobjeto CORBA

nn Uma interface descrita em IDL Uma interface descrita em IDL ((arquivoarquivo ..idlidl) ) especifica as operações providas pelo objeto e especifica as operações providas pelo objeto e os parâmetros os parâmetros de cadde cada operaçãoa operação

153

CORBA IDLCORBA IDL

nn IDL (cont.)IDL (cont.)nn De posse De posse dada IDL de um objetoIDL de um objeto,, o cliente o cliente

possui toda a informação possui toda a informação necessárianecessária para para utilizarutilizar osos serviçosserviços destedeste objetoobjeto

nn IInterfacesnterfaces definidas definidas emem IDL podem ser IDL podem ser acessadas através de acessadas através de stubstubss ou da interface de ou da interface de invocação dinâmica (DII)invocação dinâmica (DII)

nn As regras lAs regras lééxicas da IDL são iguais xicas da IDL são iguais ààs do C++s do C++nn As regras gramaticais da IDL são um As regras gramaticais da IDL são um

subconjunto das regras do C++, acrescidas de subconjunto das regras do C++, acrescidas de construconstruçções para ões para a a declaradeclaraççãoão de operade operaççõesões

154

CORBA IDLCORBA IDL

nn TokensTokensnn Literais: 1, 2.37, ‘a’, “string”, ...Literais: 1, 2.37, ‘a’, “string”, ...nn Operadores: + , Operadores: + , -- , * , = , ..., * , = , ...nn SeparadoresSeparadoresnnEspaçosEspaçosnnTabulaçõesTabulaçõesnnQQuebrasuebras dede linhalinhannComentárioComentários: // s: // ouou /* *//* */

nn PalavrasPalavras--chavechavenn IdentificadoresIdentificadores

155

CORBA IDLCORBA IDL

EscopoEscopomodulemoduleinterfaceinterface

abstractabstractlocallocal

DefiniDefiniççãoão de de TiposTiposconst const exceptionexceptionnative native typedeftypedefvaluetypevaluetype

supportssupportstruncatabletruncatablefactory factory custom custom privateprivatepublicpublic

TiposTipos BBáásicossicosany any booleanbooleancharchardoubledoublefixedfixedfloatfloatlonglongObjectObjectoctetoctetshortshortstringstringunsignedunsignedValueBaseValueBasevoidvoidwcharwcharwstringwstring

TiposTipos ConstruConstruíídosdosenumenumsequencesequencestructstructuunionnion

switchswitchcasecasedefaultdefault

Dados e Dados e OperaOperaççõesõesattributeattribute

readonlyreadonlyonewayonewayininoutoutinoutinoutcontextcontextraisesraises

156

CORBA IDLCORBA IDL

nn IdentificadoresIdentificadoresnn São seqSão seqüüências de caracteres do alfabeto, ências de caracteres do alfabeto,

ddíígitos e gitos e underscoresunderscores ‘‘__’’nn O primeiro caractere deve ser uma letraO primeiro caractere deve ser uma letrann Todos os caracteres são significativosTodos os caracteres são significativosnn Um identificador deve ser escrito exatamente Um identificador deve ser escrito exatamente

como declarado, atentando para a diferencomo declarado, atentando para a diferençça a entre letra maientre letra maiúúsculas e minsculas e minúúsculassculas

nn Identificadores diferenciados apenas Identificadores diferenciados apenas pelopelocasecase, como , como MyIdentMyIdent e e myidentmyident, causam , causam erros de compilaerros de compilaççãoão

PDF created with pdfFactory Pro trial version www.pdffactory.com

Page 27: n Sistemas Distribuídos n Sincronização de Relógios nfrank/unileste/Sistemas Distribuidos - Parte II.pdf · 7 2Canal de Comunicação Comunicação em Sist. Distribuídos nClassificação

157

CORBA IDLCORBA IDL

nn Elementos de uma especificação IDLElementos de uma especificação IDLnn MódulosMódulosnn InterfacesInterfacesnn Tipos de dadosTipos de dadosnn ConstantesConstantesnn ExceçõesExceçõesnn AtributosAtributosnn OperaçõesOperaçõesnnParâmetrosParâmetrosnnContextosContextos

158

CORBA IDLCORBA IDL

nn MódulosMódulosnn Declaração de módulo:Declaração de módulo:

module module identident {{// // listalista dede definiçõesdefinições

};};nn Pode conter declarações de tipos, constantes, Pode conter declarações de tipos, constantes,

exceções, interfaces exceções, interfaces ouou outros módulosoutros módulosnn O operador de escopo ‘::’ pode ser usado para O operador de escopo ‘::’ pode ser usado para

se referir a elementos com um mesmo nome se referir a elementos com um mesmo nome em módulos diferentesem módulos diferentes

159

CORBA IDLCORBA IDL

nn InterfaceInterfacenn Declaração de interface: Declaração de interface:

interface interface identident : interfaces_herdadas {: interfaces_herdadas {// // declaraçõesdeclarações dede tipotiposs// // declaraçõesdeclarações dede constantesconstantes// // declaraçõesdeclarações dede exceçõesexceções// // declaraçõesdeclarações dede atributosatributos// // declaraçõesdeclarações dede operaçõesoperações

}; }; nn PodePode conterconter declarações de tipodeclarações de tiposs, constantes, constantes,,

exceções, atributos e operaçõesexceções, atributos e operações160

CORBA IDLCORBA IDL

nn Interfaces Interfaces AbstratasAbstratasnn NãoNão podempodem ser ser instanciadasinstanciadas, , servindoservindo

somentesomente comocomo base base parapara outrasoutras interfacesinterfacesabstract abstract interface interface identident {{ ... };... };

nn Interfaces Interfaces LocaisLocaisnn NãoNão sãosão acessíveisacessíveis pelapela rederede, , recebendorecebendo

somentesomente chamadaschamadas locaislocaislocal local interface interface identident {{ ... };... };

161

CORBA IDLCORBA IDL

nn HerançaHerança de Interfacesde Interfacesnn Os elementos herdados por uma interface Os elementos herdados por uma interface

podem ser acessados como se fossem podem ser acessados como se fossem elementos declarados explicitamenteelementos declarados explicitamente, a , a nãonãoser ser queque o o identificadoridentificador sejaseja redefinidoredefinido ououusados em mais de uma interface baseusados em mais de uma interface base

nn O operador O operador de de escopoescopo ‘‘::::’’ deve ser utilizado deve ser utilizado para referirpara referir--se a elementos das interfaces se a elementos das interfaces base que foram redefinidos ou que são usados base que foram redefinidos ou que são usados em mais de uma interface baseem mais de uma interface base

162

CORBA IDLCORBA IDL

nn HerançaHerança de Interfacesde Interfaces (cont.)(cont.)nn Uma interface pode herdar bases Uma interface pode herdar bases

inindiretamente, diretamente, poispois interfaces herdadas interfaces herdadas possuempossuem suas prsuas próóprias relaprias relaçções de heranões de heranççaa

nn Uma interface não pode Uma interface não pode apareceraparecer mais de mais de uma vez uma vez nana declaradeclaraççãoão de de heranheranççaa de uma de uma outraoutra interface, interface, masmas mmúúltiplas ocorrências ltiplas ocorrências como base como base indiretindireta a sãosão aceitasaceitas

PDF created with pdfFactory Pro trial version www.pdffactory.com

Page 28: n Sistemas Distribuídos n Sincronização de Relógios nfrank/unileste/Sistemas Distribuidos - Parte II.pdf · 7 2Canal de Comunicação Comunicação em Sist. Distribuídos nClassificação

163

CORBA IDLCORBA IDL

nn Exemplo: Servidor de um BancoExemplo: Servidor de um Bancomodule module bancobanco {{

// ...// ...interface interface auto_atendimentoauto_atendimento {{

// ... // ... };};interface interface caixa_eletronicocaixa_eletronico: : auto_atendimentoauto_atendimento {{

// ... // ... };};

};};164

CORBA IDLCORBA IDL

nn Tipos e Constantes Tipos e Constantes nn Novos nomes podem ser associados a tipos já Novos nomes podem ser associados a tipos já

existentes com a palavraexistentes com a palavra--chave chave typedeftypedeftypedeftypedef tipo tipo identident;;

nn ObjetosObjetos descritosdescritos comocomo vvaluetypealuetype podempodem ser ser enviadosenviados comocomo parâmetrosparâmetros de de chamadaschamadasvaluetypevaluetype identident { ... };{ ... };

165

CORBA IDLCORBA IDL

nn ConstantesConstantesnn Definidas com a seguinte sintaxe:Definidas com a seguinte sintaxe:

constconst tipo tipo identident = valor;= valor;nn Operações aritméticas (+, Operações aritméticas (+, --, *, /, ...) e , *, /, ...) e

binárias (|, &, <<, ...) entre literais e binárias (|, &, <<, ...) entre literais e constantes podem ser usadas para definir o constantes podem ser usadas para definir o valor de uma constantevalor de uma constante

166

CORBA IDLCORBA IDL

nn TiposTipos BásicosBásicosnn bbooleanoolean: : tipotipo booleanobooleano, valor TRUE ou FALSE, valor TRUE ou FALSEnn charchar: : caractere de 8 bits, padrão ISO caractere de 8 bits, padrão ISO LatinLatin--11nn sshorthort: : inteiro curto com sinal; inteiro curto com sinal; --221515 a 2a 21515--11nn llongong: : inteiro longo com sinal; inteiro longo com sinal; --223131 a 2a 23131--11nn unsignedunsigned shortshort: i: inteironteiro curto sem sinal; 0 a 2curto sem sinal; 0 a 21616--11nn unsignedunsigned longlong: : inteiro longo sem sinal; 0 a 2inteiro longo sem sinal; 0 a 23232--11nn ffloatloat: : real curto, padrão IEEE 754/1985real curto, padrão IEEE 754/1985nn ddoubleouble: : real longo, padrão IEEE 754/1985real longo, padrão IEEE 754/1985nn ooctetctet: : 1 byte, nunca convertido na 1 byte, nunca convertido na transmisstransmissãoãonn aanyny: : corresponde a qualquer tipo IDLcorresponde a qualquer tipo IDL

167

CORBA IDLCORBA IDL

nn TiposTipos BásicosBásicos (cont.)(cont.)nn ObjectObject: : corresponde a um objetocorresponde a um objeto CORBACORBAnn longlong longlong: inteiro de 64 bits; : inteiro de 64 bits; ––226363 a 2a 26363--11nn unsignedunsigned longlong longlong: inteiro de 64 bits sem : inteiro de 64 bits sem

sinal; 0 a 2sinal; 0 a 26464--1 1 nn longlong doubledouble: real duplo longo padrão IEEE; : real duplo longo padrão IEEE;

base com sinal de 64 bits e 15 bits de expoente base com sinal de 64 bits e 15 bits de expoente nn wcharwchar: caractere de 2 bytes, para suportar : caractere de 2 bytes, para suportar

diversos alfabetosdiversos alfabetosnn fixed<nfixed<n,,dd>>: real: real de de precisãoprecisão fixafixa; ; n algarismosn algarismos

significativos significativos e d e d casascasas decimaisdecimais168

CORBA IDLCORBA IDL

nn ArraysArraysnn Array de Array de tamanhotamanho fixofixo: :

tipo tipo identident[tam[tamanhoanho]];;nn Array de Array de tamanhotamanho variávelvariável semsem limitelimite dede

tamanhotamanho ((tamanho efetivo tamanho efetivo definidodefinido em tempo em tempo de execuçãode execução) ) sequencesequence <tipo> <tipo> identident;;

nn Array de Array de tamanhotamanho variávelvariável com com tamanhotamanhomáximomáximo: : sequencesequence <tipo,<tipo,tamanhotamanho> > identident;;

PDF created with pdfFactory Pro trial version www.pdffactory.com

Page 29: n Sistemas Distribuídos n Sincronização de Relógios nfrank/unileste/Sistemas Distribuidos - Parte II.pdf · 7 2Canal de Comunicação Comunicação em Sist. Distribuídos nClassificação

169

CORBA IDLCORBA IDL

nn Strings Strings nn SSeqüênciaeqüência de caracteres de caracteres semsem limitelimite dede

tamanhotamanho: : string string identident; // ; // seqüênciaseqüência de de char’schar’swstringwstring identident; // ; // seqüênciaseqüência de de wchar’swchar’s

nn SSeqüênciaeqüência de caracteres com tamanho de caracteres com tamanho máximomáximo: : string <string <tamanhotamanho> > identident;;wstringwstring <<tamanhotamanho> > identident;;

170

CORBA IDLCORBA IDL

nn Exemplo: Servidor de um BancoExemplo: Servidor de um Bancomodule module bancobanco {{

typedeftypedef unsigned long unsigned long contaconta;;typedeftypedef double valor; double valor; const string const string nome_banconome_banco = “UFSC”; = “UFSC”; constconst string moeda = "R$"; string moeda = "R$"; // ...// ...

};};

171

CORBA IDLCORBA IDL

nn TiposTipos ComplexosComplexosnn EEstruturastrutura de dados (registro)de dados (registro)nnTipo composto por vários Tipo composto por vários camposcampos

structstruct identident {{// // listalista dede camposcampos ((tipostipos IDL)IDL)

};};nn LListaista enumeradaenumeradannListaLista com com valoresvalores de um de um tipotipo

enumenum identident { /*lista de valores*/ };{ /*lista de valores*/ };

172

CORBA IDLCORBA IDL

nn TiposTipos ComplexosComplexos (cont.)(cont.)nn UUniãonião discriminadadiscriminadannTipo composto com Tipo composto com seleçãoseleção de campo de campo porpor

cláusulacláusula switcswitch/h/case; case; o o seletorseletor devedeve ser ser tipotipoIDL IDL inteiro, inteiro, charchar, , booleanboolean ou ou enumenumunion union identident switch (switch (seletorseletor){ ){

case valor: tipo case valor: tipo identident;;// // maismais camposcamposdefaultdefault: tipo : tipo identident; ;

};};

173

CORBA IDLCORBA IDL

nn Exemplo: Servidor de um BancoExemplo: Servidor de um Bancomodule module bancobanco {{

// ...// ...enumenum aplicacaoaplicacao { { poupancapoupanca, CDB, , CDB, renda_fixarenda_fixa };};structstruct transacaotransacao { {

unsigned long data; // unsigned long data; // formatoformato ddmmyyyyddmmyyyystring<12> string<12> descricaodescricao; ; valor valor quantiaquantia; ;

};};sequence < sequence < transacaotransacao > > transacoestransacoes; ; // ...// ...

};};174

A A LinguagemLinguagem IDLIDL

nn Exceções Exceções nn São estruturas de dados retornadas por uma São estruturas de dados retornadas por uma

operação para indicar que uma situação operação para indicar que uma situação anormal ocorreu durante sua execução anormal ocorreu durante sua execução

nn Cada exceção possui um identificador e uma Cada exceção possui um identificador e uma lista de membros que informam aslista de membros que informam ascondições nas quais a exceção ocorreu condições nas quais a exceção ocorreu exceptionexception identident {{

// lista de membros// lista de membros};};

nn ExceçõesExceções padrãopadrão do CORBA: do CORBA: CONCLUDED_YESCONCLUDED_YES, , CONCLUDED_NOCONCLUDED_NO, , CONCLUDED_MAYBECONCLUDED_MAYBE

PDF created with pdfFactory Pro trial version www.pdffactory.com

Page 30: n Sistemas Distribuídos n Sincronização de Relógios nfrank/unileste/Sistemas Distribuidos - Parte II.pdf · 7 2Canal de Comunicação Comunicação em Sist. Distribuídos nClassificação

175

CORBA IDLCORBA IDL

nn AtributosAtributosnn SãoSão dados de um dados de um objetoobjeto queque podempodem terter seuseu

valor lido valor lido e/oue/ou modificadomodificado remotamenteremotamentenn Declarados usando a sintaxe:Declarados usando a sintaxe:

attributeattribute tipotipo identident;;nn Caso a palavraCaso a palavra--chave chave readonlyreadonly seja utilizada, seja utilizada,

o valor do atributo pode ser somente lidoo valor do atributo pode ser somente lidoreadonlyreadonly attributeattribute tipotipo identident;;

176

CORBA IDLCORBA IDL

nn Exemplo: Servidor de um BancoExemplo: Servidor de um Bancomodule module bancobanco {{

// ...// ...exception exception conta_invalidaconta_invalida { { contaconta c; };c; };exception exception saldo_insuficientesaldo_insuficiente { valor { valor saldosaldo; }; ; };

interface interface auto_atendimentoauto_atendimento {{readonlyreadonly attribute string attribute string boas_vindasboas_vindas;;// ...// ...

};};// ...// ...

};};

177

CORBA IDLCORBA IDL

nn Operações Operações nn Declaradas em IDL na forma:Declaradas em IDL na forma:

tipo tipo identident (/* lista de parâmetros */)(/* lista de parâmetros */)[ [ raisesraises ( /* lista de exceções */ ) ( /* lista de exceções */ ) [ [ contextcontext ( /* lista de contextos */ ) ] ;( /* lista de contextos */ ) ] ;

nn Parâmetros Parâmetros nnSeguem a forma: Seguem a forma: {{in|out|inoutin|out|inout} tipo } tipo identidentnn inin: parâmetro de entrada : parâmetro de entrada nnoutout: parâmetro de saída : parâmetro de saída nn inoutinout: parâmetro de entrada e saída : parâmetro de entrada e saída

nnSeparados por vírgulasSeparados por vírgulas178

A A LinguagemLinguagem IDLIDL

nn ContextosContextosnn São São stringsstrings que, ao serem passadas para o que, ao serem passadas para o

servidor em uma chamada, podem interferir servidor em uma chamada, podem interferir de alguma forma na execução da operação de alguma forma na execução da operação

nn Um asterisco, ao aparecer como o último Um asterisco, ao aparecer como o último caractere de um contexto, representa caractere de um contexto, representa qualquer seqüência de zero ou mais qualquer seqüência de zero ou mais caracterescaracteres

179

CORBA IDLCORBA IDL

nn Operações Operações OneOne WayWay (assíncronas)(assíncronas)nn Declaradas em IDL na forma:Declaradas em IDL na forma:

onewayoneway voidvoid identident (/* lista de parâmetros */);(/* lista de parâmetros */);nn Uma operação Uma operação onewayoneway é assíncrona, ou seja, é assíncrona, ou seja,

o cliente não aguarda seu términoo cliente não aguarda seu términonn Operações Operações oneone wayway não possuem retorno (o não possuem retorno (o

tipo retornado é sempre tipo retornado é sempre voidvoid) e as exceções ) e as exceções possíveis são somente as padrãopossíveis são somente as padrão

180

CORBA IDLCORBA IDL

nn Exemplo: Servidor de um BancoExemplo: Servidor de um Bancointerface interface auto_atendimentoauto_atendimento {{

readonlyreadonly attribute string attribute string boas_vindasboas_vindas;;valor valor saldosaldo ( in ( in contaconta c ) raises (c ) raises (conta_invalidaconta_invalida););void void extratoextrato ( in ( in contaconta c, out c, out transacoestransacoes t, t,

out valor out valor saldosaldo ) raises () raises (conta_invalidaconta_invalida); ); void void tranferenciatranferencia ( in ( in contaconta origemorigem, ,

in in contaconta destinodestino, in valor v ), in valor v )raises (raises (conta_invalidaconta_invalida, , saldo_insuficientesaldo_insuficiente); );

void void investimentoinvestimento ( in ( in contaconta c, c, in in aplicacaoaplicacao aplapl, in valor v ) , in valor v ) raises (raises (conta_invalidaconta_invalida, , saldo_insuficientesaldo_insuficiente); );

};};

PDF created with pdfFactory Pro trial version www.pdffactory.com

Page 31: n Sistemas Distribuídos n Sincronização de Relógios nfrank/unileste/Sistemas Distribuidos - Parte II.pdf · 7 2Canal de Comunicação Comunicação em Sist. Distribuídos nClassificação

181

CORBA IDLCORBA IDL

nn Exemplo: Servidor de um BancoExemplo: Servidor de um Bancointerface interface caixa_eletronicocaixa_eletronico : : auto_atendimentoauto_atendimento {{

void void saquesaque ( in ( in contaconta c, in valor v ) c, in valor v ) raises ( raises ( conta_invalidaconta_invalida, , saldo_insuficientesaldo_insuficiente ); );

};};

182

CORBA IDLCORBA IDL

nn Mapeamento IDL para C++Mapeamento IDL para C++nn Definido no documento OMG/99Definido no documento OMG/99--0707--41, 41,

disponível em disponível em http://www.omg.orghttp://www.omg.orgnn O mapeamento define a forma como são O mapeamento define a forma como são

representados em C++ os tipos, interfaces, representados em C++ os tipos, interfaces, atributos e operações definidos em IDLatributos e operações definidos em IDL

183

CORBA IDLCORBA IDL

nn Mapeamento de Módulos IDL para C++Mapeamento de Módulos IDL para C++nn Módulos são mapeados em Módulos são mapeados em namespacesnamespacesnn Se o compilador não suportar Se o compilador não suportar namespacesnamespaces, o , o

módulo é mapeado como uma classemódulo é mapeado como uma classe

nn Mapeamento de Interfaces IDL para C++Mapeamento de Interfaces IDL para C++nn Interfaces são mapeadas como classes C++Interfaces são mapeadas como classes C++nn Interface_varInterface_var: libera a memória : libera a memória

automaticamente quando sai do escopoautomaticamente quando sai do escoponn Interface_ptrInterface_ptr: não a libera memória: não a libera memória

184

CORBA IDLCORBA IDL

CORBA::CORBA::FixedFixed (classe)(classe)fixedfixedCORBA::CORBA::AnyAny (classe)(classe)anyanyCORBA::CORBA::OctetOctetooctetctet

Equivalente em C++Equivalente em C++Tipo IDLTipo IDL

CORBA::CORBA::WCharWCharwcharwchar

CORBA::CORBA::LongDoubleLongDoublelonglong doubledouble

CORBA::CORBA::ULongLongULongLongunsignedunsigned longlonglonglong

CORBA::CORBA::LongLongLongLonglonglong longlong

CORBA::CORBA::ObjectObject (classe)(classe)ObjectObject

CORBA::CORBA::DoubleDoubleddoubleoubleCORBA::CORBA::FloatFloatffloatloatCORBA::CORBA::UlongUlongunsignedunsigned longlongCORBA::CORBA::UshortUshortunsignedunsigned shortshortCORBA::CORBA::LongLongllongongCORBA::ShortCORBA::ShortsshorthortCORBA::CORBA::CharCharcharcharCORBA::CORBA::BooleanBooleanbbooleanoolean

185

CORBA IDLCORBA IDL

nn Mapeamento de Tipos IDL para C++ Mapeamento de Tipos IDL para C++ nn São idênticos em C++ e IDL, e portanto não São idênticos em C++ e IDL, e portanto não

precisam de mapeamento:precisam de mapeamento:nnConstantesConstantesnnEstruturas de dadosEstruturas de dadosnnListas enumeradasListas enumeradasnnArraysArrays

nn UnionsUnions IDL são mapeadas como classes CIDL são mapeadas como classes C++, ++, poipois o tipo s o tipo unionunion de Cde C++ não possui seletor++ não possui seletor

nn Seqüências são mapeadas em classes C++Seqüências são mapeadas em classes C++nn StringsStrings são mapeadas como são mapeadas como charchar * e * e WcharWchar **

186

CORBA IDLCORBA IDL

nn Mapeamento de Atributos IDL para C++ Mapeamento de Atributos IDL para C++ nn Um método com o mesmo nome do atributo Um método com o mesmo nome do atributo

retorna o seu valor retorna o seu valor nn Se o atributo não for somente de leitura, um Se o atributo não for somente de leitura, um

método de mesmo nome permite modificar o método de mesmo nome permite modificar o seu valorseu valor

nn Mapeamento de Exceções IDL para C++Mapeamento de Exceções IDL para C++nn São mapeadas como classes C++São mapeadas como classes C++

PDF created with pdfFactory Pro trial version www.pdffactory.com

Page 32: n Sistemas Distribuídos n Sincronização de Relógios nfrank/unileste/Sistemas Distribuidos - Parte II.pdf · 7 2Canal de Comunicação Comunicação em Sist. Distribuídos nClassificação

187

CORBA IDLCORBA IDL

nn Mapeamento de Operações IDL para C++Mapeamento de Operações IDL para C++nn Operações de interfaces IDL são mapeadas Operações de interfaces IDL são mapeadas

como métodos da classe C++ correspondentecomo métodos da classe C++ correspondentenn Contextos são mapeados como um parâmetro Contextos são mapeados como um parâmetro

implícito no final da lista de parâmetros implícito no final da lista de parâmetros (classe (classe Context_ptrContext_ptr))

nn Se o compilador não suportar exceções, outro Se o compilador não suportar exceções, outro parâmetro implícito é criado ao final da lista parâmetro implícito é criado ao final da lista de parâmetros (classe de parâmetros (classe ExceptionException))

nn Os parâmetros implícitos têm valores Os parâmetros implícitos têm valores defaultdefaultnulos, permitindo que a operação seja nulos, permitindo que a operação seja chamada sem especificar estes parâmetroschamada sem especificar estes parâmetros

188

CORBA IDLCORBA IDL

189

CORBA IDLCORBA IDL

nn MapeamentoMapeamento IDL IDL parapara JavaJavann Definido pelo documento formal/01Definido pelo documento formal/01--0606--06, 06,

disponível em disponível em http://www.omg.org/http://www.omg.org/nn O mapeamento define a forma como são O mapeamento define a forma como são

representados em Java os tipos, interfaces, representados em Java os tipos, interfaces, atributos e operações definidos em IDLatributos e operações definidos em IDL

190

CORBA IDLCORBA IDL

nn Mapeamento de IDL para JavaMapeamento de IDL para Javann Módulos são mapeados em Módulos são mapeados em packagespackages JavaJavann Interfaces, Exceções e Interfaces, Exceções e ArraysArrays e e StringsStrings são são

idênticos em Javaidênticos em Javann SequênciasSequências são mapeadas como são mapeadas como ArraysArrays JavaJavann Constantes são mapeadas para atributos Constantes são mapeadas para atributos

estáticosestáticosnn Estruturas de dados, Estruturas de dados, UnionsUnions e e EnumsEnums são são

mapeadas como classes Javamapeadas como classes Java

191

CORBA IDLCORBA IDL

MathMath..BigDecimalBigDecimalfixedfixedCORBA.CORBA.AnyAnyanyanybytebyteooctetctet

Equivalente em JavaEquivalente em JavaTipo IDLTipo IDL

charcharwcharwchar

(não disponível)(não disponível)longlong doubledouble

longlongunsignedunsigned longlong longlong

longlonglonglong longlong

CORBA.CORBA.ObjectObjectObjectObject

doubledoubleddoubleoublefloatfloatffloatloat

intintunsignedunsigned longlongshortshortunsignedunsigned shortshort

intintllongongshortshortsshorthort

charcharcharcharbooleanbooleanbbooleanoolean

192

CORBA IDLCORBA IDL

nn Mapeamento de Atributos IDL para JavaMapeamento de Atributos IDL para Javann É criado um método com o nome do atributoÉ criado um método com o nome do atributonn Se o atributo não for Se o atributo não for readonlyreadonly, um método de , um método de

mesmo nome permite modificar o seu valormesmo nome permite modificar o seu valornn Mapeamento de Operações IDL para JavaMapeamento de Operações IDL para Javann São criados métodos na interface São criados métodos na interface

correspondente, com os mesmos parâmetros correspondente, com os mesmos parâmetros e exceçõese exceções

nn Contexto inserido no final da lista de Contexto inserido no final da lista de parâmetrosparâmetros

PDF created with pdfFactory Pro trial version www.pdffactory.com

Page 33: n Sistemas Distribuídos n Sincronização de Relógios nfrank/unileste/Sistemas Distribuidos - Parte II.pdf · 7 2Canal de Comunicação Comunicação em Sist. Distribuídos nClassificação

193

Desenvolvimento de AplicaçõesDesenvolvimento de Aplicações

nn Passos para Passos para desenvolver um desenvolver um servidor CORBAservidor CORBAnn Definir a interface IDL Definir a interface IDL

do servidordo servidornn Compilar a IDL para Compilar a IDL para

gerar o gerar o skeletonskeletonnn Implementar os Implementar os

métodos do servidormétodos do servidornn CompilarCompilarnn ExecutarExecutar

nn Passos para Passos para desenvolver um desenvolver um cliente CORBAcliente CORBAnn Compilar a IDL do Compilar a IDL do

servidor para gerar a servidor para gerar a stubstub

nn Implementar o código Implementar o código do clientedo cliente

nn CompilarCompilarnn ExecutarExecutar

194

Desenvolvimento de AplicaçõesDesenvolvimento de AplicaçõesEspecificaçãodo Servidor

ArquivoIDL

Especificaçãodo Cliente

CompiladorIDL

StubsIDL

SkeletonsIDL

Executáveldo Cliente

01010101010101010101010101010101010101010101010101010101

Executáveldo Servidor01010101010101010101010101010101010101010101010101010101

Compilador daLinguagem do Cliente

Compilador daLinguagem do Servidor

Códigodo Cliente

Códigodo Servidor

195

Desenvolvimento de AplicaçõesDesenvolvimento de Aplicações

nn O código pode ser implementado em O código pode ser implementado em qualquer linguagem mapeada para IDLqualquer linguagem mapeada para IDLpublic class AutoAtendimentoImpl Javaextends AutoAtendimentoPOA {public String boas_vindas() {return “Bem-vindo ao Banco”;

}...

};class auto_atendimentoImpl: C++auto_atendimentoPOA { ... };

char* banco_auto_atendimentoImpl::boas_vindas() throws (CORBA::SystemException) {return CORBA::string_dup(“Bem-vindo ao Banco”);

}196

Desenvolvimento de AplicaçõesDesenvolvimento de Aplicações

nn Implementação do ServidorImplementação do Servidornn O servidor deve iniciar o ORB e o POA, e O servidor deve iniciar o ORB e o POA, e

disponibilizar sua referência para os clientesdisponibilizar sua referência para os clientesnn Referências podem ser disponibilizadas Referências podem ser disponibilizadas

através do serviço de nomes, impressas na através do serviço de nomes, impressas na tela ou escritas em um arquivo acessado pelos tela ou escritas em um arquivo acessado pelos clientes usando o sistema de arquivos clientes usando o sistema de arquivos distribuído, um servidor HTTP ou FTPdistribuído, um servidor HTTP ou FTP

nn Feito isso, o servidor deve ficar ouvindo Feito isso, o servidor deve ficar ouvindo requisições e as executando requisições e as executando

197

Desenvolvimento de AplicaçõesDesenvolvimento de Aplicações

nn Implementação do ServidorImplementação do Servidorpackagepackage banco;banco;importimport org.org.omgomg.*;.*;importimport javajava..ioio.*;.*;

publicpublic classclass servidorservidor{{publicpublic staticstatic voidvoid mainmain(String (String argsargs[]) {[]) {trytry{{

// Cria e // Cria e inicializainicializa o ORBo ORBORB ORB orborb = ORB.= ORB.initinit((argsargs, , nullnull););

// Cria a implementação e registra n// Cria a implementação e registra no ORBo ORBauto_atendimentoImplauto_atendimentoImpl implimpl = = newnew

auto_atendimentoImplauto_atendimentoImpl();();198

Desenvolvimento de AplicaçõesDesenvolvimento de Aplicações

// Ativa o POA// Ativa o POAPOA POA rootpoarootpoa = = POAHelperPOAHelper..narrownarrow((orborb..resolve_initial_referencesresolve_initial_references("("RootPOARootPOA"));"));rootpoarootpoa..the_POAManagerthe_POAManager().().activateactivate();();

// Pega a referência do servidor// Pega a referência do servidororg.org.omgomg.CORBA..CORBA.ObjectObject refref = =

rootpoarootpoa..servant_to_referenceservant_to_reference((implimpl););auto_atendimentoauto_atendimento hrefhref = =

auto_atendimentoHelperauto_atendimentoHelper..narrownarrow((refref););// Obtém uma referência para o serv. de nomes// Obtém uma referência para o serv. de nomes

org.omg.CORBA.Object objReforg.omg.CORBA.Object objRef = = orborb..resolve_initial_referencesresolve_initial_references("("NameServiceNameService");");NamingContextExtNamingContextExt ncRefncRef = =

NamingContextExtHelperNamingContextExtHelper..narrownarrow((objRefobjRef););

PDF created with pdfFactory Pro trial version www.pdffactory.com

Page 34: n Sistemas Distribuídos n Sincronização de Relógios nfrank/unileste/Sistemas Distribuidos - Parte II.pdf · 7 2Canal de Comunicação Comunicação em Sist. Distribuídos nClassificação

199

Desenvolvimento de AplicaçõesDesenvolvimento de Aplicações

// Registra o servidor no // Registra o servidor no servicoservico de nomesde nomesString String namename = "= "AutoAtendimentoAutoAtendimento";";NameComponentNameComponent pathpath[] = [] = ncRefncRef..to_nameto_name( ( namename ););ncRefncRef..rebindrebind((pathpath, , hrefhref););

SystemSystem.out..out.printlnprintln("Servidor em execução");("Servidor em execução");

// Aguarda chamadas dos clientes// Aguarda chamadas dos clientesorborb..runrun();();

} catch (} catch (ExceptionException e) { e) { e.e.printStackTraceprintStackTrace();();

}}}}

}}

200

Desenvolvimento de AplicaçõesDesenvolvimento de Aplicações

packagepackage banco;banco;

importimport org.org.omgomg.*;.*;

publicpublic classclass auto_atendimentoImplauto_atendimentoImplextendsextends auto_atendimentoPOAauto_atendimentoPOA { {

publicpublic String String boas_vindasboas_vindas () { () { returnreturn "Bem"Bem--vindo ao banco " + banco.vindo ao banco " + banco.nome_banconome_banco..valuevalue; ;

}}

publicpublic doubledouble saldo (int c) saldo (int c) throwsthrows conta_invalidaconta_invalida {{returnreturn CadastroBancoCadastroBanco..getContagetConta(c).(c).getSaldogetSaldo(); ();

}}

// ...// ...}}

201

Desenvolvimento de AplicaçõesDesenvolvimento de Aplicações

nn Implementação do Cliente Implementação do Cliente nn Um cliente deve sempre iniciar o ORB e obter Um cliente deve sempre iniciar o ORB e obter

uma referência para o objeto servidoruma referência para o objeto servidornn Referências podem ser obtidas através do Referências podem ser obtidas através do

serviço de nomes, da linha de comando ou serviço de nomes, da linha de comando ou lendo um arquivo que contenha a referêncialendo um arquivo que contenha a referência

nn De posse da referência, o cliente pode chamar De posse da referência, o cliente pode chamar os métodos implementados pelo servidoros métodos implementados pelo servidor

202

Desenvolvimento de AplicaçõesDesenvolvimento de Aplicações

nn Implementação do ClienteImplementação do Clienteimportimport banco.*;banco.*;importimport org.org.omgomg.*;.*;importimport javajava..ioio.*;.*;publicpublic classclass cliente {cliente {

publicpublic staticstatic voidvoid mainmain(String (String argsargs[]) {[]) {trytry {{

// Cria e // Cria e inicializainicializa o ORBo ORBORB ORB orborb = ORB.= ORB.initinit((argsargs, , nullnull););

// // ObtemObtem referencia para o referencia para o servicoservico de nomesde nomesorg.org.omgomg.CORBA..CORBA.ObjectObject objRefobjRef = =

orborb..resolve_initial_referencesresolve_initial_references("("NameServiceNameService");");NamingContextExtNamingContextExt ncRefncRef = = NamingContextExtHelperNamingContextExtHelper..narrownarrow((objRefobjRef););

203

Desenvolvimento de AplicaçõesDesenvolvimento de Aplicações

// Imprime mensagem de boas// Imprime mensagem de boas--vindasvindasSystemSystem.out..out.printlnprintln((serverserver..boas_vindasboas_vindas());());

// // ObtemObtem o numero da contao numero da contaSystemSystem.out..out.printprint("Entre o número da sua conta: ");("Entre o número da sua conta: ");String conta = String conta = newnew BufferedReaderBufferedReader((newnew

InputStreamReaderInputStreamReader((SystemSystem.in))..in)).readLinereadLine();();

// Imprime o saldo atual// Imprime o saldo atualSystemSystem.out..out.printlnprintln("Seu saldo é de R$" +("Seu saldo é de R$" +

serverserver.saldo(.saldo(IntegerInteger..parseIntparseInt(conta)));(conta)));

} catch (} catch (ExceptionException e) {e) {e.e.printStackTraceprintStackTrace((SystemSystem.out);.out);

}}}}

}}

PDF created with pdfFactory Pro trial version www.pdffactory.com