n sistemas distribuídos n sincronização de relógios nfrank/unileste/sistemas distribuidos -...
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](https://reader035.vdocuments.site/reader035/viewer/2022081406/5f0f9dbd7e708231d4450c13/html5/thumbnails/1.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081406/5f0f9dbd7e708231d4450c13/html5/thumbnails/2.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081406/5f0f9dbd7e708231d4450c13/html5/thumbnails/3.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081406/5f0f9dbd7e708231d4450c13/html5/thumbnails/4.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081406/5f0f9dbd7e708231d4450c13/html5/thumbnails/5.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081406/5f0f9dbd7e708231d4450c13/html5/thumbnails/6.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081406/5f0f9dbd7e708231d4450c13/html5/thumbnails/7.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081406/5f0f9dbd7e708231d4450c13/html5/thumbnails/8.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081406/5f0f9dbd7e708231d4450c13/html5/thumbnails/9.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081406/5f0f9dbd7e708231d4450c13/html5/thumbnails/10.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081406/5f0f9dbd7e708231d4450c13/html5/thumbnails/11.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081406/5f0f9dbd7e708231d4450c13/html5/thumbnails/12.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081406/5f0f9dbd7e708231d4450c13/html5/thumbnails/13.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081406/5f0f9dbd7e708231d4450c13/html5/thumbnails/14.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081406/5f0f9dbd7e708231d4450c13/html5/thumbnails/15.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081406/5f0f9dbd7e708231d4450c13/html5/thumbnails/16.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081406/5f0f9dbd7e708231d4450c13/html5/thumbnails/17.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081406/5f0f9dbd7e708231d4450c13/html5/thumbnails/18.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081406/5f0f9dbd7e708231d4450c13/html5/thumbnails/19.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081406/5f0f9dbd7e708231d4450c13/html5/thumbnails/20.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081406/5f0f9dbd7e708231d4450c13/html5/thumbnails/21.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081406/5f0f9dbd7e708231d4450c13/html5/thumbnails/22.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081406/5f0f9dbd7e708231d4450c13/html5/thumbnails/23.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081406/5f0f9dbd7e708231d4450c13/html5/thumbnails/24.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081406/5f0f9dbd7e708231d4450c13/html5/thumbnails/25.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081406/5f0f9dbd7e708231d4450c13/html5/thumbnails/26.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081406/5f0f9dbd7e708231d4450c13/html5/thumbnails/27.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081406/5f0f9dbd7e708231d4450c13/html5/thumbnails/28.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081406/5f0f9dbd7e708231d4450c13/html5/thumbnails/29.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081406/5f0f9dbd7e708231d4450c13/html5/thumbnails/30.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081406/5f0f9dbd7e708231d4450c13/html5/thumbnails/31.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081406/5f0f9dbd7e708231d4450c13/html5/thumbnails/32.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081406/5f0f9dbd7e708231d4450c13/html5/thumbnails/33.jpg)
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](https://reader035.vdocuments.site/reader035/viewer/2022081406/5f0f9dbd7e708231d4450c13/html5/thumbnails/34.jpg)
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