Capítulo 3: Chamadas de Procedimentos Remotos

Tamanho: px
Começar a partir da página:

Download "Capítulo 3: Chamadas de Procedimentos Remotos"

Transcrição

1 Chamada de Procedimentos Remotos RPC - Remote Procedure Call Capítulo 3: Chamadas de Procedimentos Remotos Modelo de programação da comunicação num sistema cliente-servidor Obvia as limitações referidas Objectivo: Estruturar a programação distribuída com base na chamada pelos clientes de procedimentos que se executam remotamente no servidor 1 2 Chamada de um Procedimento Remoto RPC: Fluxo de execução Execução de um procedimento noutro processo O chamador (cliente) envia uma mensagem com um pedido O chamado (servidor) devolve uma mensagem com a resposta O programador chama um procedimento local normal O envio e recepção de mensagens são escondidos Bloqueia-se Cliente bloqueado CLIENTE Chamada ao procedimento remoto: envio dos parâmetros SERVIDOR Execução do procedimento pedido cliente r = serverfunc ( p1, p2 ); servidor r_type serverfunc ( p_type p1, p_type p2 ) Retoma a execução Retorno do procedimento remoto: devolução dos resultados 3 4

2 RPC: Benefícios Adequa-se ao fluxo de execução das aplicações Chamada síncrona de funções Simplifica tarefas fastidiosas e delicadas Construção e análise de mensagens Heterogeneidade de representações de dados Esconde diversos detalhes do transporte Endereçamento do servidor Envio e recepção de mensagens Tratamento de erros Simplifica a divulgação de serviços (servidores) A interface dos serviços é fácil de documentar e apresentar A interface é independente dos protocolos de transporte Positivo RPC: comparação com Mensagens A interface do serviço encontra-se claramente especificada e não é apenas um conjunto de mensagens Mecanismo de estabelecimento da ligação entre o cliente e o servidor é automatizado através do serviço de nomes e rotinas do run-time de suporte ao RPC As funções do cliente e do servidor são consistentes, o sistema garante que são correctamente emparelhadas O modelo de invocação de uma função e respectiva sincronização simplificam a programação Os dados são automaticamente codificados e descodificados resolvendo o problema da heterogeneidade As excepções adaptam-se bem ao tratamento de erros nas invocações remotas Negativo Só são bem suportadas as interacções 1-para-1 (ou seja não suporta difusão) Existem mais níveis de software que implicam maior overhead na execução 5 6 RPC: Rotinas de adaptação (stubs) (também chamados ties do lado do servidor) Arquitectura do sistema de RPC: Blocos funcionais das aplicações Cliente Servidor Conversão de parâmetros Recepção e análise de Criação e envio de mensagens mensagens (pedidos) (pedidos) Conversão de parâmetros Recepção e análise de mensagens Conversão de resultados (respostas) Criação e envio de mensagens Conversão de resultados (respostas) cliente serverfunc ( ); clientstub ( ) serverstub ( ) servidor serverfunc ( ) Código do cliente stubs Run-Time Library Threads transporte Protocolo de apresentação Protocolo de sessão Protocolo de transporte Código do servidor stubs (ou ties) Run-Time Library transporte Threads 7 8

3 Arquitectura Exemplo de RPC: SUN RPC As Rotinas de Adaptação Stubs Efectuam as conversões de envio e recepção dos parâmetros da Chamada Remota Cada rotina tem os seus parâmetros específicos pelo que cada uma tem um stub Do lado do servidor existe um stub ou tie que executa as mesmas conversões pela ordem inversa Função de despacho do servidor Espera por mensagens de clientes num porto de transporte Envia mensagens recebidas para o stub respectivo Recebe mensagens dos stubs e envia-os para os clientes O Sistema de Suporte Run-time system Executa as operações genéricas do RPC, por exemplo: Abrir a ligação com o servidor, efectuar o envio e recepção das mensagens, fechar ligação Como são operações genéricas existe apenas um RTS por cliente e um por servidor Sistema de RPC desenvolvido pela SUN cerca de 1985 Destinado inicialmente a suportar o sistema de ficheiros distribuído NFS Especificação de domínio público Implementação simples e muito divulgada em grande número de plataformas (Unix, MS-DOS, ) 9 10 Objectivos SUN RPC Máquina A Kernel Aplicação cliente funcx(args); pedido RPC stubs resposta Socket TCP ou UDP Máquina B Kernel Aplicação servidora funcx(args); RPC stubs + dispatcher pedido resposta Socket TCP ou UDP Linguagem de IDL semelhante a C, suportada pelo compilador rpcgen Apenas um parâmetro de entrada e um parâmetro de saída Vários valores são transferidos em estruturas Construção que permite transmitir condicionalmente informação Todos os parâmetros são passados por referência para os stubs rpcgen gera automaticamente o programa principal do servidor Biblioteca de RPC inicialmente usava sockets, actualmente usa TLI connect 11 12

4 Sun RPC: Exemplo de IDL program BINOP version BINOP_VERS long BINOP_ADD ( struct input_args ) = 5; = 1; = ; struct input_args long a; long b; ; Identificação (nomes) Interface (n programa, n versão) (300030, 1) Função (Interface, n função) (300030, 1, 5) Máquina A Cliente Sun RPC: Serviço de Nomes e encaminhamento de RPCs cliente stub call ( binding handle n interface, n função, parâmetros) porto de transporte transporte rpcbind procura (n interface, transporte) pedido XID (op. id) RPC version n interface n função autenticador parâmetros resposta XID RPC error resultados porto 111 stub Máquina B registo (n interface, porto de transporte) despacho da interface servidor Servidor operação Diagrama de ficheiros rpcgen: definição e compilação da interface calc.x Service Interface Makefile rpcgen Sample Makefile calc_clnt.c calc.h Definições #include Tipos Protótipos Client stubs calc_xdr.c XDR marshaling calc_srv.c Server stubs & dispatcher Client source files Server source files 17 calc.x enum calc_error CALC_OK = 0, /* No error */ CALC_ZERO_DIV = 1 /* Division by zero */ ; struct calc_args double v1; double v2; ; struct calc_result calc_error error; double value; ; program CALC_PROG version CALC_VERS calc_result SUM(calc_args) = 1; calc_result SUB(calc_args) = 2; calc_result MUL(calc_args) = 3; calc_result DIV(calc_args) = 4; = 1; = ; calc_clnt.c calc_svc.c calc_xdr.c rpcgen -C rpcgen -Sc rpcgen -Ss rpcgen -Sm Sample client Sample server Sample Makefile 18

5 Diagrama de ficheiros (cont.) Funções de conversão via XDR calc.x calc_result sum(calc_args)... VERSION=1 rpcgen -C calc_clnt.c calc_result sum_1(calc_args,...)... calc.h typedef... calc_result; calc_xdr.c typedef... calc_args; calc_result xdr_calc_result() sum_1(calc_args,...);... calc_result xdr_calc_args() sum_1_svc(calc_args,...);... calc_srv.c main(...)... svc_run(); calc_prog_1(...)... main(...)... calc_result sum_1_svc(calc_args,...) calc.x enum calc_error CALC_OK = 0, /* No error */ CALC_ZERO_DIV = 1 /* Div. by zero */ ; struct calc_args double v1; double v2; ; struct calc_result calc_error error; double value; ; rpcgen -C program CALC_PROG version CALC_VERS calc_result SUM(calc_args) = 1; calc_result SUB(calc_args) = 2; calc_result MUL(calc_args) = 3; calc_result DIV(calc_args) = 4; = 1; = ; Funções de conversão calc_xdr.c para cada tipo definido no IDL #include "calc.h bool_t xdr_calc_error(xdr *xdrs, calc_error *objp) if (!xdr_enum(xdrs, (enum_t *)objp)) return (FALSE); return (TRUE); bool_t xdr_calc_args(xdr *xdrs, calc_args *objp)... bool_t xdr_calc_result(xdr *xdrs, calc_result *objp) if (!xdr_calc_error(xdrs, &objp->error)) return (FALSE); if (!xdr_double(xdrs, &objp->value)) return (FALSE); return (TRUE); Chamadas a funções de conversão de tipos base (oferecidas na biblioteca run-time do SUN RPC) 20 calc.x Funções do cliente (stubs) enum calc_error CALC_OK = 0, /* No error */ CALC_ZERO_DIV = 1 /* Division by zero */ ; struct calc_args double v1; double v2; ; struct calc_result calc_error error; double value; ; rpcgen -C program CALC_PROG version CALC_VERS calc_result SUM(calc_args) = 1; calc_result SUB(calc_args) = 2; calc_result MUL(calc_args) = 3; calc_result DIV(calc_args) = 4; = 1; = ; Função genérica de chamada de procedimento remoto (da biblioteca de run-time) #include "calc.h calc_clnt.c static struct timeval TIMEOUT = 25, 0 ; calc_result * sum_1(calc_args *argp, CLIENT *clnt) static calc_result clnt_res; if (clnt_call(clnt, SUM, xdr_calc_args, argp, xdr_calc_result, &clnt_res, TIMEOUT)!= RPC_SUCCESS) return (NULL); return (&clnt_res); calc_result * sub_1(calc_args *argp, CLIENT *clnt)... calc_result * mul_1(calc_args *argp, CLIENT *clnt)... calc_result * div_1(calc_args *argp, CLIENT *clnt) #include <stdio.h> #include <rpc/rpc.h> #include "banco.h" static void bancoprog_1(); main() register SVCXPRT *transp; Exemplo: Ficheiro banco_svc.c Gerado pelo rpcgen (void) pmap_unset(bancoprog, BANCOVERS); transp = svcudp_create(rpc_anysock); if (transp == NULL) fprintf(stderr, "cannot create udp service."); Função de despacho exit(1); if (!svc_register(transp, BANCOPROG, BANCOVERS, bancoprog_1, IPPROTO_UDP)) fprintf(stderr, "unable to register (BANCOPROG, BANCOVERS, udp)."); exit(1); transp = svctcp_create(rpc_anysock, 0, 0); if (transp == NULL) fprintf(stderr, "cannot create tcp service."); exit(1); if (!svc_register(transp, BANCOPROG, BANCOVERS, bancoprog_1, IPPROTO_TCP)) fprintf(stderr, "unable to register (BANCOPROG, BANCOVERS, tcp)."); exit(1); svc_run(); fprintf(stderr, "svc_run returned"); exit(1); /* NOTREACHED */ Cria porto UDP Associa nome da interface e função de despacho ao porto Faz o mesmo para porto TCP Lança ciclo de espera de pedidos Quando chegar algum pedido, svc_run() chama a função de despacho 22

6 Função de despacho Exemplo: Ficheiro banco_svc.c Gerado pelo rpcgen static void bancoprog_1(rqstp, transp) struct svc_req *rqstp; register SVCXPRT *transp; union criarin criar_1_arg; int saldo_1_arg; contaevalor depositar_1_arg; contaevalor levantar_1_arg; transferirin transferir_1_arg; pedirextratoin pedirextrato_1_arg; argument; char *result; bool_t (*xdr_argument)(), (*xdr_result)(); char *(*local)(); switch (rqstp->rq_proc) case NULLPROC: (void) svc_sendreply(transp, xdr_void, (char *)NULL); return; case CRIAR: xdr_argument = xdr_criarin; xdr_result = xdr_criarret; local = (char *(*)()) criar_1; break; case SALDO: xdr_argument = xdr_int; xdr_result = xdr_saldoret; local = (char *(*)()) saldo_1; break; case PEDIREXTRATO: xdr_argument = xdr_pedirextratoin; xdr_result = xdr_pedirextratoret; local = (char *(*)()) pedirextrato_1; break; Função genérica para obter argumentos (da biblioteca de run-time) default: svcerr_noproc(transp); return; bzero((char *)&argument, sizeof(argument)); if (!svc_getargs(transp, xdr_argument, &argument)) svcerr_decode(transp); return; result = (*local)(&argument, rqstp); if (result!= NULL &&!svc_sendreply(transp, xdr_result, result)) svcerr_systemerr(transp); if (!svc_freeargs(transp, xdr_argument, &argument)) fprintf(stderr, "unable to free arguments"); exit(1); return; Função genérica para enviar resposta (da biblioteca de run-time) 23 A Visão da Programação do RPC LINGUAGEM DE DESCRIÇÃO DE INTERFACES - IDL 24 RPC IDL: Características RPC IDL: Código gerado pelo compilador Linguagem própria Linguagem declarativa (não tem a parte operacional das linguagens de programação) permite definir Tipos de dados Protótipos de funções Fluxo de valores (IN, OUT, INOUT) Interfaces Conjuntos de funções Stubs Para o cliente Traduzem e empacotam parâmetros numa mensagem Enviam a mensagem para o servidor, esperam uma resposta Desempacotam a mensagem e traduzem a resposta Para o servidor Desempacotam a mensagem e traduzem os parâmetros Invocam a função desejada e esperam pelo seu retorno Traduzem e empacotam a resposta numa mensagem Função de despacho do servidor Espera por mensagens de clientes num porto de transporte Envia mensagens recebidas para o stub respectivo Recebe mensagens dos stubs e envia-os para os clientes 25 26

7 IDL: Pode ser um.h? RPC IDL: Limitações usuais Quais os parâmetros de entrada/saída da seguinte função? int transfere(int origem, int destino, int valor, int *saldo, char *descr); Ambiguidades acerca dos dados a transmitir: Endereçamento puro de memória (void *) Flexibilidade no uso de ponteiros para manipular vectores Passagem de vectores (normalmente por ponteiro) Strings manipuladas com char * Passagem de variáveis por referência (&var) Semânticas ambíguas Valores booleanos do C (0 False;!= 0 True) Problemas complexos (durante a execução) Transmissão de estruturas dinâmicas com ciclos Integridade referencial dos dados enviados RPC IDL: Soluções para alguns dos problemas Exemplo: IDL Sun RPC Ficheiro banco.x Novos tipos de dados próprios do IDL Sun RPC define 3 novos string: para definir cadeias de caracteres bool: valor booleano, apenas dois valores opaque: bit-arrays, sem tradução Agregados próprios do IDL Uniões (unions) com descriminantes Vectores conformes (DCE/Microsoft) Vectores variáveis (Sun, DCE/Microsoft) program BANCOPROG version BANCOVERS criarret CRIAR(criarIn) = 1; saldoret SALDO(int) = 2; resultado DEPOSITAR(contaEvalor) = 3; resultado LEVANTAR(contaEvalor) = 4; resultado TRANSFERIR(transferirIn) = 5; pedirextratoret PEDIREXTRATO(pedirExtratoIn) = 6; = 1; = 0x ; 30 31

8 Exemplo: Interface em IDL RPC Microsoft [ uuid(00918a0c-4d50-1c17-9bb3-92c1040b0000), version(1.0) ] interface banco typedef enum SUCESSO, ERRO, ERRO_NA_CRIACAO, CONTA_INEXISTENTE, FUNDOS_INSUFICIENTES resultado; typedef enum CRIACAO, SALDO, DEPOSITO, LEVANTAMENTO, TRANSFERENCIA, EXTRATO tipooperacao; typedef struct long dia; long mes; long ano; tipodata; resultado criar([in] handle_t h, [in] long valor, [in, string] char nome[], [in, string] char morada[], [out] long *numero); resultado saldo([in] handle_t h, [in] long nconta, [out] long *valor); resultado depositar([in] handle_t h, [in] long nconta, [in] long valor); resultado levantar([in] handle_t h, [in] long nconta, [in] long valor); resultado transferir([in] handle_t h, [in] long ncontaorigem, [in] long ncontadest, [in] long valor); resultado pedirextrato([in] handle_t h, [in] long nconta, [in] long mes, [in] long ano, [in, out, ptr] dadosoperacao dados[50], [out] long *nelemento); typedef struct tipodata data; tipooperacao operacao; long movimento; long saldo; dadosoperacao; 2009 José Alves Marques 32 Protocolos e Serviços necessário para suportar o RPC HETEROGENEIDADE 33 Heterogeneidade Nos sistemas distribuídos a heterogeneidade é a regra Os formatos de dados são diferentes Nos processadores (ex.: little endian, big endian, apontadores, vírgula flutuante) Nas estruturas de dados geradas pelos compiladores Nos sistemas de armazenamento (ex: strings ASCII vs Unicode) Nos sistemas de codificação Marshalling As redes transmitem bytes entre as máquinas Necessário serializar objectos em memória para sequência de bytes Des-serializar sequência de bytes para objectos na máquina destino Máquinas representam tipos de formas diferentes É necessário traduzir entre representação de tipos do emissor e representação de tipos do receptor Marshalling: serializar + traduzir Unmarshalling: operação inversa 34

9 Resolução da Heterogeneidade na Comunicação Protocolos de Apresentação no RPC Modelo OSI camada de Apresentação Protocolo ASN.1 Sistemas de RPC aproveitam descrição formal da interface heterogeneidade resolvida através de técnicas de compilação. A partir destes sistemas a heterogeneidade na comunicação ficou resolvida no ambiente de execução. Decisões a efectuar Estrutura dos mensagens Implícita as mensagens apenas contêm os dados a transmitir Explicita Auto-descritiva (marcada, tagged) Políticas de conversão dos dados Canónica Uma única representação para que todos convertem J N formatos N funções J Não há comportamentos variáveis L É preciso converter mesmo quando é inútil O-receptor-converte (Receiver-makes-it-right) J Poupa conversões inúteis L N formatos N x N funções Protocolos de Apresentação Conversã o XDR (external Data Representation) Sun RPC Canónica NDR (Network Data Representation) DCE RPC Microsoft RPC ASN.1 (Abstract Syntax Notation) CDR (Common Data Representation) Java Object Serialization OSI CORBA Java RMI W3C Canónica O-receptorconverte O-receptorconverte Canónica XML (Extensible Markup Language) Canónica Caso de estudo: extensible Markup Language - XML Estrutura das msgs. Implícita Binária Comprimentos de vectores variáveis Alinhamento a 32 bits (excepto vectores de caracteres) Implícita Binária Marcas arquitecturais (architecture tags) Explícita Tagged Binária Encoding Rules: Basic Distinguished Canonical Packed Implícita Binária Explícita Binária Explicita Tagged Textual Tipos de Documentos DTD XML schema 38 Resolver a heterogeneidade na comunicação e nos dados de forma universal

10 XML extensible Markup Language Formato canónico Estrutura explícita Textual O XML deriva de uma linguagem muito mais antiga para definição do formato de impressão de documentos o SGML. O SGML já tinha sido a tecnologia de base no desenvolvimento do HTML. Essencialmente o XML permite através de etiquetas (tags) associar a descrição do formato aos dados de um documento. Toda a descrição é textual o que resolve muito dos problemas de portabilidade. O XML é uma proposta do W3C e é percepcionado como o substituto dos formatos anteriores de representação de dados como o EDI Importância do XML Exemplo de uma estrutura de dados em XML O XML trabalha sobre documentos Os documentos podem ser usados para múltiplos fins: Representar/apresentar a informação num forma visível: em papel ou transformada para html Comunicação de dados entre plataformas heterogéneas Para armazenamento da informação em ficheiros ou em bases de dados <person id=" "> <name>smith</name> <place>london</place> <year>1934</year> <!-- a comment --> </person > 42

11 Sintaxe XML Benefícios do XML Regras de construção simples mas rígidas: Existe um elemento raiz único Todos os elementos têm que fechar Fecham pela ordem inversa em que abrem Os nomes são case-sensitive Um documento que respeita as regras diz-se bem formado (well formed) Adicionalmente, pode-se definir uma gramática para validar documentos XML Que sequências de elementos são válidas Que tipo de dados contém o elemento Tecnologia não proprietária Independente das plataformas o formato é texto Compatível com o HTTP O XML tem uma sintaxe mais restritiva que o HTML, mas pode ser usado como o HTML pelo que passa pelas firewalls Internacional Formato texto que usa UTF-8 ou UTF-16 para representar os caracteres Extensível Novas tags podem ser adicionadas por necessidade de extensão. Para evitar duplicações existem namespaces a que um documento pode ser associado. Benefícios do XML(II) A interpretação das mensagens depende de tags e não da posição do campo na mensagem Permite a transformação automática dos dados As transformações são especificadas usando XML Stylesheet Language Transformatiom (XSLT) Auto definida A estrutura de um documento XML tem uma meta-descrição com base Document Type Definition (DTD) ou actualmente com XML schema Ferramentas genéricas Ferramentas Open Source em Java e ferramentas já existentes para SGML. Tecnologia XML Namespaces Permite a unicidade de nomes e resolver colisões. Os Espaços de nomes são normalmente associados a um domínio de aplicação Um nome torna-se único por associação a um URI Xpath Define um mecanismo de acesso a elementos dentro de um documento XML Xlink Mecanismo para indexar outros documentos semelhantes aos hiperlinks do HTML mas mais robusto XSL XML style sheet- documentos XML que definem transformações de documentos em XML DOM - Document Object Model O DOM define os métodos para aceder a um documento XML. Pressupõe que o documento é carregado em memória e que através de uma API se acede aos diferentes elementos SAX - Simple API for XML O SAX é um parser que invoca funções à medida que encontra elementos no documento

12 Exemplo simples mensagem Com definição de namespace Exemplo com múltiplos namespaces <person pers:id=" " xmlns:pers = " <pers:name> Smith </pers:name> <pers:place> London </pers:place > <pers:year> 1934 </pers:year> </person> <?xml version="1.0"?> <bk:book xmlns:bk='urn:loc.gov:books' xmlns:isbn='urn:isbn: '> 6'> <bk:title>cheaper by the Dozen</bk:title> <isbn:number> </isbn:number> </bk:book> extensible Stylesheet Language (XSL) Esquema do Documento Permite: Transformar XML em HTML Transformar XML noutro XML Filtrar e ordenar dados XML Apresentar o mesmo documento de formas diferentes dependendo do dispositivo de destino (ecrã, impressão, telefone móvel, etc.) A especificação de documentos era inicialmente efectuada em DTD Document Type Definition Em 2001 foi proposto o XML Schema Estende as capacidades do DTD mas cuja principal vantagem é ter uma sintaxe XML que o DTD não tinha Um parser usando um DTD ou XML Schema pode verificar se o documento está sintacticamente correcto e se está conforme com um determinado tipo A meta-descrição pode ser incluída no documento, mas a utilização mais interessante é poder aceder-lhe através de um URI partilhando-o entre aplicações

13 XML Schema XML schema para a estrutura de dados Person Define Elementos obrigatórios e proibidos Estrutura hierárquica dos elementos Atributos necessários ou opcionais dos elementos e gama de valores permitidos Referências de parte de um documento a outros elementos do documento <xsd:schema xmlns:xsd = URL of XML schema definitions > <xsd:element name= "person" type ="persontype" /> <xsd:complextype name="persontype"> <xsd:sequence> <xsd:element name = "name" type="xsd:string"/> <xsd:element name = "place" type="xsd:string"/> <xsd:element name = "year" type="xsd:positiveinteger"/> </xsd:sequence> <xsd:attribute name= "id" type = "xsd:positiveinteger"/> </xsd:complextype> </xsd:schema> Exemplo de XML Schemas mais elaborado </xml version= 1.0 encoding= UTF-8?> <xsd:schema xmlns:xsd= targetnamespace= xmlns= > <xsd:element name= employeelist > <xsd:complextype> <xsd:sequence> <xsd:element ref= employee minoccurs= 1 maxoccurs= unbounded /> <xsd:seuqence> </xsd:complextype> </xsd:element> <xsd:element name= employee <xsd:complextype> <xsd:sequence> <xsd:element ref= employee_id minoccurs= 1 maxoccurs= 1 /> <xsd:element ref= name minoccurs= 1 maxoccurs= 1 /> <xsd:element ref= extn minoccurs= 1 maxoccurs= 1 /> <xsd:element ref= dept minoccurs= 1 maxoccurs= 1 /> <xsd:element ref= minoccurs= 1 maxoccurs= 1 /> </xsd:sequence> <xsd:attributegroup ref= employeeattribute /> </xsd:comlextype> </xsd:element> <xsd:element name= name <xsd:complextype> <xsd:sequence> <xsd:element ref= first_name minoccurs= 1 maxoccurs= 1 /> <xsd:element ref= last_name minoccurs= 1 maxoccurs= 1 /> <xsd:sequence> </xsd:complextype> </xsd:element> 2009 José Alves Marques Namespace declaration <!ELEMENT employeelist (employee*)> <!ELEMENT employee (employee_id, name, extn, dept, )> <!ELEMENT name (first_name, last_name)> <xsd:element name= employee_id > <xsd:simpletype> <xsd:restriction base= xsd:int > <xsd:minlnclusive value= 1 /> <xsd:maxlnclusive value= /> <xsd:restriction> </xsd:simpletype> </xsd:element> <xsd:element name= first_name type= xsd:string /> <xsd:element name= last_name type= xsd:string /> <xsd:element name= type= xsd:string /> <xsd:element name= dept > <xsd:simpletype> <xsd:restriction base= xsd:string> <xsd:pattern value= [0-9]3-[0-9]3-[0-9]4 /> </xsd:restriction> </xsd:simpletype> </xsd:element> <xsd:element name= extn > <xsd:simpletype> <xsd:restrition base= xsd:string > <xsd:pattern value= [0-9]5 /> </xsd:restrition> </xsd:simpletype> </xsd:element> <xsd:attributegroup name0 employeeattribute > <xsd:attribute name= type use= required > <xsd:simpletype> <xsd:restriction base= xsd:string > <xsd:enumerator value= contract /> employee:_id must be an integer between 1 and 100,000. <!ELEMENT first_name (PCDATA)> <!ELEMENT (PCDATA) Department must be specified in the form: Extension must be specified in the form (String consisting of five digits). <!ATTLIST employee type (permicontract) #REQUIRED>

14 Tecnologia XML SAX Simple API for XML Processamento em série Baseado no tratamento de eventos 61 Quando usar DOM - Document Object Model Quando pretendemos processar informação em série (data stream). A informação a processar não precisa de manter estado. Importação/exportação de dados Manipulação de árvore em memória

Capítulo 3: Chamadas de Procedimentos Remotos

Capítulo 3: Chamadas de Procedimentos Remotos Capítulo 3: Chamadas de Procedimentos Remotos 2009 José Alves Marques 1 Chamada de Procedimentos Remotos RPC - Remote Procedure Call Modelo de programação da comunicação num sistema cliente-servidor Obvia

Leia mais

Capítulo 3: Chamadas de Procedimentos Remotos

Capítulo 3: Chamadas de Procedimentos Remotos Capítulo 3: Chamadas de Procedimentos Remotos 1 RPC: Benefícios Adequa-se ao fluxo de execução das aplicações Chamada síncrona de funções Simplifica tarefas fastidiosas e delicadas Construção e análise

Leia mais

Sun RPC: Arquitectura

Sun RPC: Arquitectura Sun RPC: Arquitectura 12/13 Sistemas Distribuídos 38 Arquitectura Código do cliente Código do servidor stubs Run-Time Library Protocolo de apresentação Protocolo de sessão stubs (ou ties) Run-Time Library

Leia mais

Projecto hipotético para resolvermos hoje

Projecto hipotético para resolvermos hoje Projecto hipotético para resolvermos hoje 13/14 Sistemas Distribuídos 1 Projecto hipotético para resolvermos hoje Implementar servidor de contagem que mantém contador e oferece estas operações aos clientes:

Leia mais

Projecto hipotético para resolvermos hoje

Projecto hipotético para resolvermos hoje Projecto hipotético para resolvermos hoje 12/13 Sistemas Distribuídos 1 Projecto hipotético para resolvermos hoje Implementar servidor de contagem que mantém contador e oferece estas operações aos clientes:

Leia mais

Capítulo 3: Chamadas de Procedimentos Remotos

Capítulo 3: Chamadas de Procedimentos Remotos Capítulo 3: Chamadas de Procedimentos Remotos 3/6/2005 José Alves Marques 1 Resumo da aula anterior Redes de comunicação Programação da comunicação API de comunicação permite aceder directamente ao nível

Leia mais

Ricardo Couto Antunes da Rocha 2005 Ricardo Couto Antunes da Rocha

Ricardo Couto Antunes da Rocha 2005 Ricardo Couto Antunes da Rocha Programação com Sockets Ricardo Couto Antunes da Rocha rcarocha@inf.ufg.br 2005 Ricardo Couto Antunes da Rocha Parâmetros de protocolos Objetivo do protocolo Protocolo de transporte: TCP ou UDP Porta (servidora!):

Leia mais

rpcgen - Funcionamento rpcgen Exemplo de arquivo de especificação: Passo 1: Construir uma Aplicaçao Convencional

rpcgen - Funcionamento rpcgen Exemplo de arquivo de especificação: Passo 1: Construir uma Aplicaçao Convencional rpcgen - Funcionamento rpcgen procedimentos servidores prog_proc.c stub servidor cc prog_svc.c especificação RPC prog.x rpcgen prog.h biblioteca RPC cliente prog_clnt.c rprog.c stub cliente cc programa

Leia mais

Chamada Remota de Procedimento (RPC)

Chamada Remota de Procedimento (RPC) Chamada Remota de Procedimento (RPC) padrão cliente-servidor A (cliente) send (B, pedido) receive(b, &resp) B (servidor) receive (A, ) processa pedido send(a, ) repetição de padrão de comunicação encapsulação

Leia mais

Sistemas Operacionais Distribuídos e de Redes

Sistemas Operacionais Distribuídos e de Redes Contextualização Sistemas Operacionais Distribuídos e de Redes Comunicação Interprocessos Aula 04 Aula 04 Aplicação, serviços RMI e RPC Protocolo - (requisição-resposta) marshalling e representaçao externa

Leia mais

Chamadas Remotas de Procedimentos (RPC)

Chamadas Remotas de Procedimentos (RPC) Chamadas Remotas de Procedimentos (RPC) Chamada Remota de Procedimento (RPC) ou Chamada de Função ou Chamada de Subrotina Método de transferência de controle de parte de um processo para outra parte Procedimentos

Leia mais

Computação Distribuída Cap. III

Computação Distribuída Cap. III Cap. III Licenciatura em Engenharia Informática Universidade Lusófona Prof. José Rogado Prof. José Faísca Comunicação entre Processos Distribuídos Comunicação entre processos Transporte, streams e mensagens

Leia mais

Comunicação entre Processos

Comunicação entre Processos Comunicação entre Processos Prof. Leonardo Barreto Campos http://sites.google.com/sitew/leonardobcampos 1/29 Sumário Introdução Comunicação entre Processos: Soquetes Comunicação por datagrama UDP Comunicação

Leia mais

Chamada Remota de Procedimento (RPC)

Chamada Remota de Procedimento (RPC) Chamada Remota de Procedimento (RPC) padrão cliente-servidor A (cliente) B (servidor) send (B, pedido) receive(b, &resp) receive (A, ) processa pedido send(a, ) repetição de padrão de comunicação encapsulação

Leia mais

Chamadas do Socket. Socket(int family, int type, int protocol) SOCK_STREAM SOCK_DGRAM AF_INET AF_UNIX AF_NS. sockfd = socket(af_inet, SOCK_STREAM, 0)

Chamadas do Socket. Socket(int family, int type, int protocol) SOCK_STREAM SOCK_DGRAM AF_INET AF_UNIX AF_NS. sockfd = socket(af_inet, SOCK_STREAM, 0) Chamadas do Socket Socket(int family, int type, int protocol) AF_INET AF_UNIX AF_NS SOCK_STREAM SOCK_DGRAM 0 sockfd = socket(af_inet, SOCK_STREAM, 0) Chamadas do Socket bind(int sockfd, struct sockaddr

Leia mais

LEIC/LERC 2008/09 Primeiro Teste de Sistemas Distribuídos. Grupo I [7,2 valores]

LEIC/LERC 2008/09 Primeiro Teste de Sistemas Distribuídos. Grupo I [7,2 valores] Número: Nome: LEIC/LERC 2008/09 Primeiro Teste de Sistemas Distribuídos 24 de Abril de 2009 Responda no enunciado, apenas no espaço fornecido. Identifique todas as folhas. Duração: 1h30m Grupo I [7,2 valores]

Leia mais

Sumário. XML (extensible Markup Language)

Sumário. XML (extensible Markup Language) Sumário 1 Introdução Aplicações Não-Convencionais 2 BD Orientado a Objetos e Objeto-Relacional 3 BD Temporal 4 BD Geográfico 5 XML e Bancos de Dados XML (extensible Markup Language) Tecnologia desenvolvida

Leia mais

Principais conceitos de CORBA

Principais conceitos de CORBA Principais conceitos de CORBA Tecgraf PUC-Rio fevereiro de 2011 Common Object Request Broker Architecture Uma arquitetura aberta para o desenvolvimento de aplicações distribuídas em um ambiente multilinguagem

Leia mais

XML para transferência de dados Estrutura hierárquica do XML DTDs e XML Schema Consultas de documentos XML: XPath e XQuery Transformação de

XML para transferência de dados Estrutura hierárquica do XML DTDs e XML Schema Consultas de documentos XML: XPath e XQuery Transformação de Capítulo 9: XML XML para transferência de dados Estrutura hierárquica do XML DTDs e XML Schema Consultas de documentos XML: XPath e XQuery Transformação de documentos XML: XSLT Mapeamento entre documentos

Leia mais

Sistemas Distribuídos: Conceitos e Projeto RPC e RMI

Sistemas Distribuídos: Conceitos e Projeto RPC e RMI Sistemas Distribuídos: Conceitos e Projeto RPC e RMI Francisco José da Silva e Silva Laboratório de Sistemas Distribuídos (LSD) Departamento de Informática / UFMA http://www.lsd.deinf.ufma.br 15 de abril

Leia mais

XML. Prof. Júlio Machado

XML. Prof. Júlio Machado XML Prof. Júlio Machado julio.machado@pucrs.br ESQUEMAS Modelo de Esquemas Dois diferentes meios permitem descrever a estrutura de documentos XML e definir novos tipos de dados para elementos e atributos:

Leia mais

Sistemas Distribuídos Aula 10

Sistemas Distribuídos Aula 10 Sistemas Distribuídos Aula 10 Aula passada Arquitetura P2P Bittorrent Distributed Hash Table (DHT) Aula de hoje Modelo computação distribuída RPC Marshalling e stubs Semântica operacional RMI Computação

Leia mais

LEIC/LERC 2009/10 Primeiro Teste de Sistemas Distribuídos. Grupo I [6 v]

LEIC/LERC 2009/10 Primeiro Teste de Sistemas Distribuídos. Grupo I [6 v] Número: Nome: LEIC/LERC 2009/10 Primeiro Teste de Sistemas Distribuídos 23 de Abril de 2010 Responda no enunciado, apenas no espaço fornecido. Identifique todas as folhas. Duração: 1h30m Grupo I [6 v]

Leia mais

Teste-Tipo de Sistemas Distribuídos RPC, RMI, Web Services Guia de resolução

Teste-Tipo de Sistemas Distribuídos RPC, RMI, Web Services Guia de resolução Teste-Tipo de Sistemas Distribuídos RPC, RMI, Web Services Guia de resolução Grupo RPC Considere o seguinte código que ilustra uma componente programática de um sistema de RPC, neste caso do SUN-RPC. const

Leia mais

Processos em Sistemas Distribuídos e Comunicação entre Processos

Processos em Sistemas Distribuídos e Comunicação entre Processos Processos em Sistemas Distribuídos e Comunicação entre Processos Sistemas Distribuídos Mauro Lopes Carvalho Silva Professor EBTT DAI Departamento de Informática Campus Monte Castelo Instituto Federal de

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos LICENCIATURA EM COMPUTAÇÃO Prof. Adriano Avelar Site: www.adrianoavelar.com Email: eam.avelar@gmail.com 1. Que são sistemas abertos? É um sistema que oferece serviços de acordo com

Leia mais

INTRODUÇÃO. RPC x RMI

INTRODUÇÃO. RPC x RMI 1 INTRODUÇÃO RPC x RMI 2 INTRODUÇÃO RPC Remote procedure call Este termo é utilizado para aplicativos clientes que fazem normalmente chamadas a procedimentos remotos que estão em outro processo e hosts.

Leia mais

3. Linguagem de Programação C

3. Linguagem de Programação C Introdução à Computação I IBM1006 3. Linguagem de Programação C Prof. Renato Tinós Departamento de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 3.2. Estrutura de Programas e Representação

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Chamada Remota de Procedimento março de 2019 RPC: motivação A B send (B, &pedido) receive (B, &resposta) como facilitar esse padrão tão comum? encapsulamento de detalhes de comunicação criação, envio e

Leia mais

Comunicação. Carlos A. G. Ferraz 25/6/2003. Sistemas Distribuídos 1. Tópicos. Camadas. Transmissão de dados. Marshalling/Unmarshalling.

Comunicação. Carlos A. G. Ferraz 25/6/2003. Sistemas Distribuídos 1. Tópicos. Camadas. Transmissão de dados. Marshalling/Unmarshalling. Tópicos Comunicação Carlos Ferraz cagf@cin.ufpe.br Elementos básicos de comunicação Transmissão de dados Endereçamento Sincronismo Enfileiramento (Bufferização) Confiabilidade Portas e sockets UDP RPC:

Leia mais

Common Object Request Broker Architecture

Common Object Request Broker Architecture Common Object Request Broker Architecture OMG: Object Management Group. Organização internacional, sem fins lucrativos, fundada em 1989. Mais de 800 membros (incluindo fabricantes de sistemas, produtores

Leia mais

Linguagem C Princípios Básicos (parte 1)

Linguagem C Princípios Básicos (parte 1) Linguagem C Princípios Básicos (parte 1) Objetivos O principal objetivo deste artigo é explicar alguns conceitos fundamentais de programação em C. No final será implementado um programa envolvendo todos

Leia mais

XML (extensible Markup Language)

XML (extensible Markup Language) Sumário 1 Aplicações Não-Convencionais 2 Revisão e Dicas de Modelagem Conceitual 3 BD Orientado a Objetos e Objeto- Relacional 4 BD Temporal 5 BD Geográfico 6 BD XML XML (extensible Markup Language) Tecnologia

Leia mais

Sistemas Operacionais II

Sistemas Operacionais II Introdução Instituto de Informátic ca - UFRGS Sistemas Operacionais II Remote Procedure Call - RPC Aula 13 Necessidade de desenvolver aplicações distribuídas de forma simples Solução: estender modelos

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Faculdades SENAC Análise e Desenvolvimento de Sistemas 1 de agosto de 2009 Orientação a Objetos Encapsulamento: Parte interna (privada) dos objetos Implementação: métodos Estado: atributos, variáveis,

Leia mais

LEIC/LERC 2007/08 Exame de Época Especial de Sistemas Distribuídos

LEIC/LERC 2007/08 Exame de Época Especial de Sistemas Distribuídos Número: Nome: LEIC/LERC 2007/08 Exame de Época Especial de Sistemas Distribuídos 8 de Setembro de 2008 Responda no enunciado, apenas no espaço fornecido. Identifique todas as folhas. Duração: 2h30m Grupo

Leia mais

Grupo I [7v] b) [0,3] Em que componente do sistema de RPC será utilizado o campo identificador de operação?

Grupo I [7v] b) [0,3] Em que componente do sistema de RPC será utilizado o campo identificador de operação? Número: Nome: Página 1 de 7 LEIC/LETI 2013/14, 1º Teste de Sistemas Distribuídos, 29 de Março de 2014 Responda no enunciado, apenas no espaço fornecido. Identifique todas as folhas. Duração: 1h30m Grupo

Leia mais

CORBA IDL. Interface Definition Language. Mário Meireles Teixeira.

CORBA IDL. Interface Definition Language. Mário Meireles Teixeira. CORBA IDL Interface Definition Language Mário Meireles Teixeira mario@deinf.ufma.br Desenvolvimento de aplicações Para desenvolver uma aplicação CORBA, segue-se o seguinte roteiro: Descrever a interface

Leia mais

Grupo I [7v] 1. [1,0] Apresente o conteúdo do IDL relativo a este programa. Assuma PROGRAM=62015 e VERSION=1.

Grupo I [7v] 1. [1,0] Apresente o conteúdo do IDL relativo a este programa. Assuma PROGRAM=62015 e VERSION=1. Número: Nome: Página 1 de 6 LEIC/LETI, 2014/15, Repescagem do 1º Teste de Sistemas Distribuídos 30 de Junho de 2015 Responda no enunciado, apenas no espaço fornecido. Identifique todas as folhas. Duração:

Leia mais

Noções de XML. Henrique Silva Direção-Geral do Território FCUL, 12 e 19 de Outubro de 2017

Noções de XML. Henrique Silva Direção-Geral do Território FCUL, 12 e 19 de Outubro de 2017 Noções de XML Henrique Silva Direção-Geral do Território FCUL, 12 e 19 de Outubro de 2017 O que é o XML? Características XML significa Extensible Markup Language XML é uma linguagem de marcadores (tags)

Leia mais

Número: Nome: Página 1 de 7. Duração da prova: 1h30m. Grupo I [7] Considere o seguinte excerto (incompleto) de um programa cliente em SUN RPC:

Número: Nome: Página 1 de 7. Duração da prova: 1h30m. Grupo I [7] Considere o seguinte excerto (incompleto) de um programa cliente em SUN RPC: Número: Nome: Página 1 de 7 LEIC/LETI 2016/17, Repescagem do 1º Teste de Sistemas Distribuídos 4 de julho de 2017 Responda no enunciado, usando apenas o espaço fornecido. Identifique todas as folhas. Uma

Leia mais

Sistemas Operacionais II

Sistemas Operacionais II Introdução Instituto de Informátic ca - UFRGS Sistemas Operacionais II Comunicação e sincronização por troca de mensagens Aula 0 Em ambientes de memória distribuída a comunicação e a sincronização entre

Leia mais

UNIVERSIDADE. Sistemas Distribuídos

UNIVERSIDADE. Sistemas Distribuídos UNIVERSIDADE Sistemas Distribuídos Ciência da Computação Prof. Jesus José de Oliveira Neto Comunicação Inter-Processos Representação Externa de Dados e Marshalling Representação externa de dados Informações

Leia mais

Sistemas Distribuídos Arquiteturas Middlewares

Sistemas Distribuídos Arquiteturas Middlewares Sistemas Distribuídos Arquiteturas s Arquitetura Arquitetura de um sistema é sua estrutura em termos dos componentes e seus relacionamentos Objetivo: garantir que a estrutura satisfará as demandas presentes

Leia mais

Programação de Computadores I Introdução ao C PROFESSORA CINTIA CAETANO

Programação de Computadores I Introdução ao C PROFESSORA CINTIA CAETANO Programação de Computadores I Introdução ao C PROFESSORA CINTIA CAETANO Introdução Criada em 1972, por Dennis Ritchie; Centro de Pesquisas da Bell Laboratories; Para utilização no S.O. UNIX; C é uma linguagem

Leia mais

Sumário. 1 Aplicações Não-Convencionais 2 BD Orientado a Objetos e Objeto- Relacional 3 BD Temporal 4 BD Geográfico 5 BDs XML

Sumário. 1 Aplicações Não-Convencionais 2 BD Orientado a Objetos e Objeto- Relacional 3 BD Temporal 4 BD Geográfico 5 BDs XML Sumário 1 Aplicações Não-Convencionais 2 BD Orientado a Objetos e Objeto- Relacional 3 BD Temporal 4 BD Geográfico 5 BDs XML XML (extensible Markup Language) Tecnologia desenvolvida pela W3C W3C: World

Leia mais

Comunicação. capítulo

Comunicação. capítulo Comunicação capítulo 4 Camadas de protocolos: Modelo OSI Camadas de protocolos: Mensagem Protocolos de baixo nível Estas camadas implementam as funções básicas que envolvem uma rede de computadores: Física:

Leia mais

RMI e RPC. RPC significou um passo muito grande em direcção à

RMI e RPC. RPC significou um passo muito grande em direcção à Sumário RMI Conceito. Arquitectura de Implementação. Java RMI Características. Interfaces e Objectos Remotos JVM e Java RMI. Passagem de Argumentos e Serialização. Class Downloading. 1 RMI e RPC RPC significou

Leia mais

Escrever scripts de PHP com HTML

Escrever scripts de PHP com HTML Escrever scripts de PHP com HTML PHP é uma linguagem de programação de scripts para serem interpretados no lado dos servidores. Numa fase inicial (1995), PHP surgiu com o significado de Personal Home Pages

Leia mais

A linguagem C (visão histórica)

A linguagem C (visão histórica) A linguagem C (visão histórica) A linguagem C é uma linguagem de programação desenvolvida no ínício dos anos 70 por Dennis Ritchie, que trabalhava nos laboratórios Bell e que também inciou em paralelo,

Leia mais

Estruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões.

Estruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões. 1 Estruturas da linguagem C 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões. Identificadores Os identificadores seguem a duas regras: 1. Devem ser começados por letras

Leia mais

1 Copyright 1998, 1999 Francisco Reverbel

1 Copyright 1998, 1999 Francisco Reverbel 1 Copyright 1998, 1999 Francisco Reverbel General Inter-ORB Protocol (GIOP): protocolo abstrato (família de protocolos) O Internet Inter-ORB Protocol (IIOP) é uma realização concreta do GIOP Tres elementos

Leia mais

Invocação Remota. Prof. Leonardo Barreto Campos. 1/29

Invocação Remota. Prof. Leonardo Barreto Campos.   1/29 Invocação Remota Prof. Leonardo Barreto Campos 1/29 Sumário Introdução Chamada de Procedimento Remoto Invocação a Método Remoto Leitura Complementar Bibliografia 2/29 Introdução Essa aula trata como os

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Chamada Remota de Procedimento abril de 2017 RPC: motivação A B send (B, &pedido) receive (B, &resposta) como facilitar esse padrão tão comum? encapsulamento de detalhes de comunicação criação, envio e

Leia mais

Introdução a CORBA. Renato Cerqueira. Departamento de Informática, PUC-Rio

Introdução a CORBA. Renato Cerqueira. Departamento de Informática, PUC-Rio Introdução a CORBA Renato Cerqueira Departamento de Informática, PUC-Rio Ferramentas de Programação p/ SD Vários níveis de abstração Sockets (TCP/IP) Chamada de Procedimentos Remotos (RPC) Objetos Distribuídos

Leia mais

Carlos Eduardo Batista. Centro de Informática - UFPB

Carlos Eduardo Batista. Centro de Informática - UFPB Linguagem de Programação I Carlos Eduardo Batista Centro de Informática - UFPB bidu@ci.ufpb.br Complexidade dos sistemas de software Estrutura Decomposição Abstração Hierarquia Projeto de sistemas complexos

Leia mais

Documentos XML 1/20. Exemplo de documento XML:

Documentos XML 1/20. Exemplo de documento XML: 1/20 Documentos XML XML é a abreviatura de extensible Markup Language. É uma linguagem de marcas ou anotações como HTML. Mas a linguagem XML foi concebida para descrever informação enquanto que a linguagem

Leia mais

Programação para Internet I 4. XML. Nuno Miguel Gil Fonseca nuno.fonseca@estgoh.ipc.pt

Programação para Internet I 4. XML. Nuno Miguel Gil Fonseca nuno.fonseca@estgoh.ipc.pt Programação para Internet I 4. XML Nuno Miguel Gil Fonseca nuno.fonseca@estgoh.ipc.pt Standard do W3C (www.w3c.org) Formato de ficheiros de texto derivado de SGML (Standard Generalized Markup Language)

Leia mais

Comunicação entre processos COMUNICAÇÃO ENTRE PROCESSOS. Comunicação entre processos - troca de mensagens

Comunicação entre processos COMUNICAÇÃO ENTRE PROCESSOS. Comunicação entre processos - troca de mensagens Comunicação entre processos Memória Compartilhada: os processo compartilham variáveis e trocam informações através do uso dessas variáveis compartilhadas COMUNICAÇÃO ENTRE PROCESSOS P1 Sem Memória Compartilhada:

Leia mais

COMUNICAÇÃO ENTRE PROCESSOS

COMUNICAÇÃO ENTRE PROCESSOS Comunicação entre processos Memória Compartilhada: os processo compartilham variáveis e trocam informações através do uso dessas variáveis compartilhadas COMUNICAÇÃO ENTRE PROCESSOS P1 Sem Memória Compartilhada:

Leia mais

Algoritmos e Programação

Algoritmos e Programação Algoritmos e Programação Aula 3 Introdução a Linguagem C Profa. Marina Gomes marinagomes@unipampa.edu.br 1 Aula de Hoje - Criar programas simples em C utilizando a estrutura básica; - Declarar variáveis;

Leia mais

XML. Prof. Júlio Machado

XML. Prof. Júlio Machado XML Prof. Júlio Machado julio.machado@pucrs.br INTRODUÇÃO O que é XML? É a sigla de Extensible Markup Language Linguagem de especificação para descrever dados Padrão aberto e largamente usado Definido

Leia mais

Sumário. Ficheiros. Ficheiros

Sumário. Ficheiros. Ficheiros Sumário Ficheiros Motivação Operações Ficheiros de texto e binários Manipulação de ficheiros de texto Abertura Encerramento Descritores de ficheiros: stdin, stdout, stderr Escrita Leitura Outras funções

Leia mais

Processos em Sistemas Distribuídos: Comunicação entre Processos, Nomeação e Sincronização

Processos em Sistemas Distribuídos: Comunicação entre Processos, Nomeação e Sincronização Processos em Sistemas Distribuídos: Comunicação entre Processos, Nomeação e Sincronização Sistemas Distribuídos Mauro Lopes Carvalho Silva Professor EBTT DAI Departamento de Informática Campus Monte Castelo

Leia mais

Noçõ linguagem Java. Profs. Marcel Hugo e Jomi Fred Hübner. Departamento de Sistemas e Computação Universidade Regional de Blumenau - FURB

Noçõ linguagem Java. Profs. Marcel Hugo e Jomi Fred Hübner. Departamento de Sistemas e Computação Universidade Regional de Blumenau - FURB Noçõ ções básicas b da linguagem Java Profs. Marcel Hugo e Jomi Fred Hübner Departamento de Sistemas e Computação Universidade Regional de Blumenau - FURB Introduçã ção Origem Funcionamento Vantagens Linguagem

Leia mais

TE091 Programação Orientada a Objetos Engenharia Elétrica

TE091 Programação Orientada a Objetos Engenharia Elétrica TE091 Programação Orientada a Objetos Engenharia Elétrica Revisão Rápida de Programação em C Prof. Carlos Marcelo Pedroso 2015 Revisão Linguagem C Características principais Modularidade: uso de procedimentos

Leia mais

XSL - extemsible Stylesheet Language. Prof. Antonio Almeida de Barros Jr.

XSL - extemsible Stylesheet Language. Prof. Antonio Almeida de Barros Jr. XSL - extemsible Stylesheet Language Prof. Antonio Almeida de Barros Jr. Agenda Conceitos XSLT - XSL Transformations Iteração e Classificação Processamento Condicional Copiando Nodos Variáveis Estude de

Leia mais

Número: Nome: Página 1 de 7

Número: Nome: Página 1 de 7 Número: Nome: Página 1 de 7 LEIC/LETI 2017/18, Repescagem 1º Teste de Sistemas Distribuídos, 3 de julho de 2018 Responda no enunciado, usando apenas o espaço fornecido. Identifique todas as folhas. Uma

Leia mais

Grupo I [5,5v] Considere o seguinte código que ilustra uma componente programática de um sistema de RPC, neste caso do SUN-RPC.

Grupo I [5,5v] Considere o seguinte código que ilustra uma componente programática de um sistema de RPC, neste caso do SUN-RPC. Número: Nome: Página 1 de 7 LEIC/LERC 2012/13, 1º Teste de Sistemas Distribuídos, 16 de Abril de 2013 Responda no enunciado, apenas no espaço fornecido. Identifique todas as folhas. Duração: 1h30m Grupo

Leia mais

Linguagem C Introdução. Contexto Histórico Principais diferenças do Java Funções em C Compilar programas em C no Linux

Linguagem C Introdução. Contexto Histórico Principais diferenças do Java Funções em C Compilar programas em C no Linux Linguagem C Introdução Contexto Histórico Principais diferenças do Java Funções em C Compilar programas em C no Linux Porquê C em AC? A linguagem C fornece um modelo de programação próximo da máquina física

Leia mais

Introdução à Programação Aula 04. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação

Introdução à Programação Aula 04. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação Introdução à Programação Aula 04 Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação QUAL LINGUAGEM IREMOS ESTUDAR? 2 Introdução à Programação Linguagens

Leia mais

XML para transferência de dados Estrutura hierárquica do XML DTDs e XML Schema Consultas de documentos XML: XPath e XQuery Transformação de

XML para transferência de dados Estrutura hierárquica do XML DTDs e XML Schema Consultas de documentos XML: XPath e XQuery Transformação de Capítulo 9: XML XML para transferência de dados Estrutura hierárquica do XML DTDs e XML Schema Consultas de documentos XML: XPath e XQuery Transformação de documentos XML: XSLT Mapeamento entre documentos

Leia mais

Conceitos Básicos de Programação

Conceitos Básicos de Programação BCC 201 - Introdução à Programação Conceitos Básicos de Programação Guillermo Cámara-Chávez UFOP 1/53 Conceitos básicos I Variável 2/53 Conceitos básicos II Posição de memoria, identificada através de

Leia mais

www/~cagf/sdgrad Serviço de Nomes CORBA e Interoperabilidade de ORBs

www/~cagf/sdgrad Serviço de Nomes CORBA e Interoperabilidade de ORBs www/~cagf/sdgrad Serviço de Nomes CORBA e Interoperabilidade de ORBs 2002-2003 Carlos A. G. Ferraz 2 Serviço de Nomes CORBA Páginas Brancas Permite encontrar objetos através de nomes Nomes Referência de

Leia mais

OProtocolo RPC é um dos protocolos de aplicação mais utilizados, pois permite

OProtocolo RPC é um dos protocolos de aplicação mais utilizados, pois permite Laboratório de Redes. Remote Procedure Call - RPC Pedroso 9 de março de 2006 1 Introdução 2 Conceitos básicos OProtocolo RPC é um dos protocolos de aplicação mais utilizados, pois permite que sejam criadas

Leia mais

4. Estruturas Fundamentais de Programação em C

4. Estruturas Fundamentais de Programação em C 4. Estruturas Fundamentais de Programação em C 4.1. Imprimindo Mensagens e Valores no Monitor de Vídeo A biblioteca de entrada e saída (stdio.h) possui a função printf que imprime mensagens e valores diretamente

Leia mais

Entender o problema Encontrar um algoritmo para resolvê-lo. Implementar o algoritmo numa linguagem de programação

Entender o problema Encontrar um algoritmo para resolvê-lo. Implementar o algoritmo numa linguagem de programação Entender o problema Encontrar um algoritmo para resolvê-lo Implementar o algoritmo numa linguagem de programação Permitem implementar um algoritmo Expressar o algoritmo numa forma que o computador entenda

Leia mais

Linguagens de Programação

Linguagens de Programação Linguagens de Programação 128 13 129 Linguagens de Programação Uma linguagem de programação é um vocabulário e um conjunto de regras gramaticais usadas para escrever programas de computador. Esses programas

Leia mais

Vamos fazer um pequeno experimento

Vamos fazer um pequeno experimento 1 Vamos fazer um pequeno experimento Dividam-se em dois grupos: Mestre Escravo Projeto de Sistemas Distribuídos Comunicação entre Processos Prof. Msc. Marcelo Iury de Sousa Oliveira marceloiury@gmail.com

Leia mais

1/24 FICHEIROS DE TEXTO

1/24 FICHEIROS DE TEXTO 1/24 FICHEIROS DE TEXTO Hardware de entrada/saída 2/24 Hardware de entrada/saída Grande variedade de dispositivos de E/S (Input/Output) - de memória: disco interno e externo, DVD, pen, CD,... - de transmissão:

Leia mais

XML XML. Motivação. Mário Meireles Teixeira DEINF-UFMA

XML XML. Motivação. Mário Meireles Teixeira DEINF-UFMA XML Mário Meireles Teixeira DEINF-UFMA XML Motivação XML extensible Markup Language W3C: World Wide Web Consortium http://www.w3.org XML 1.0 W3C Recommendation, 10/Fev/1998 (inicial) W3C Recommendation,

Leia mais

O TESTE DE DOCUMENTOS MUTANTES PARA REALIZAR UTILIZANDO ANÁLISE DE. Orientadora: Silvia Regina Vergilio XML SCHEMA. Ledyvânia Franzotte

O TESTE DE DOCUMENTOS MUTANTES PARA REALIZAR UTILIZANDO ANÁLISE DE. Orientadora: Silvia Regina Vergilio XML SCHEMA. Ledyvânia Franzotte UTILIZANDO ANÁLISE DE MUTANTES PARA REALIZAR O TESTE DE DOCUMENTOS XML SCHEMA Ledyvânia Franzotte Orientadora: Silvia Regina Vergilio Roteiro Introdução XML e Tecnologias XML, DTD, XML Schema e JDOM Testes

Leia mais

LEIC/LETI 2014/15, 1º

LEIC/LETI 2014/15, 1º Número: Nome: Página 1 de 7 LEIC/LETI 2014/15, 1º Teste de Sistemas Distribuídos, 27 de Março de 2015 Responda no enunciado, apenas no espaço fornecido. Identifique todas as folhas. Duração: 1h30m Grupo

Leia mais

Linguagens de Programação I

Linguagens de Programação I Linguagens de Programação I Tema # 4 Operadores em C Susana M Iglesias FUNÇÕES ENTRADA-SAÍDA I/O printf(), utilizada para enviar dados ao dispositivo de saída padrão (stdout), scanf(), utilizada para ler

Leia mais

Linguagem Java Parte I. Sintaxe. Algumas características

Linguagem Java Parte I. Sintaxe. Algumas características Programação Na Web Linguagem Java Parte I Sintaxe António Gonçalves Algumas características Estruturas de controlo, operadores, expressões e tipos básicos são semelhantes ao C++/C. Não há apontadores;

Leia mais

Modelo para a representação de informações, utilizado por aplicações Web que trabalham com a tecnologia AJAX.

Modelo para a representação de informações, utilizado por aplicações Web que trabalham com a tecnologia AJAX. JSON Modelo para a representação de informações, utilizado por aplicações Web que trabalham com a tecnologia AJAX. 1. Introdução JSON (JavaScript Object Notation) é um modelo para armazenamento e transmissão

Leia mais

Web Services. Evolução

Web Services. Evolução Web Services Evolução 1997 A Sun distribui o JDK 1.1 que inclui o Remote Method Invocation (RMI) que define um modelo de computação distribuída usando objectos Java. O RMI é semelhante ao CORBA e ao DCOM

Leia mais

GRUPO: Rafael Igor Vanderlei Vieira

GRUPO: Rafael Igor Vanderlei Vieira GRUPO: Rafael Igor Vanderlei Vieira C# INTRODUÇÃO Paradigmas: Orientado a objeto; Estruturado; Imperativo; Surgimento: 2002. Criador: Anders Hejlsberg. Principais Compiladores:.NET Framework (Windows),

Leia mais

PROGRAMAÇÃO I E N T R A DA E S A Í DA D E DA D O S

PROGRAMAÇÃO I E N T R A DA E S A Í DA D E DA D O S PROGRAMAÇÃO I VA R I Á V E I S, C O N S TA N T E S, O P E R A D O R E S E N T R A DA E S A Í DA D E DA D O S Variáveis 2 Variáveis são locais onde são armazenados os valores na memória. Toda variável é

Leia mais

Programação. MEAer e LEE. Manipulação de ficheiros de texto. Bertinho Andrade da Costa. Instituto Superior Técnico. 2010/2011 1º Semestre

Programação. MEAer e LEE. Manipulação de ficheiros de texto. Bertinho Andrade da Costa. Instituto Superior Técnico. 2010/2011 1º Semestre Programação MEAer e LEE Bertinho Andrade da Costa 2010/2011 1º Semestre Instituto Superior Técnico Manipulação de ficheiros de texto Programação 2010/2011 IST-DEEC Manipulação de Ficheiros 1 Sumário Ficheiros

Leia mais

FCA - Editora de Informática xv

FCA - Editora de Informática xv Índice Geral Agradecimentos ix Prefácio xi Índice das Simulações xxv 1 - Introdução ao mundo dos computadores 1 1.1 O computador como ferramenta... 2 1.2 A importância dos computadores... 4 1.3 Processamento

Leia mais

Linguagem de Programação C

Linguagem de Programação C Linguagem de Programação C Aula 08 Diogo Pinheiro Fernandes Pedrosa Universidade Federal Rural do Semiárido Departamento de Ciências Exatas e Naturais 13 de novembro de 2009 Introdução O que é uma linguagem

Leia mais

Tipos, Literais, Operadores

Tipos, Literais, Operadores Tipos, Literais, Operadores Identificadores São palavras utilizadas para nomear variáveis, métodos e classes Na linguagem Java, o identificador sempre começa por letra, sublinhado(_) ou cifrão ($) Não

Leia mais

Tipos, Literais, Operadores

Tipos, Literais, Operadores Tipos, Literais, Operadores Identificadores São palavras utilizadas para nomear variáveis, métodos e classes Na linguagem Java, o identificador sempre começa por letra, sublinhado(_) ou cifrão ($) Não

Leia mais

Instituto Superior de Engenharia de Lisboa

Instituto Superior de Engenharia de Lisboa Instituto Superior de Engenharia de Lisboa Introdução à Programação (PG) Docente: Pedro Viçoso Fazenda (pfazenda@cedet.isel.ipl.pt) Professor Responsável: Pedro Alexandre Pereira (palex@cc.isel.ipl.pt)

Leia mais

Serviço de Nomes CORBA. Serviço de Nomes CORBA e Interoperabilidade de ORBs. Serviço de Nomes CORBA. Serviço de Nomes CORBA. Serviço de Nomes CORBA

Serviço de Nomes CORBA. Serviço de Nomes CORBA e Interoperabilidade de ORBs. Serviço de Nomes CORBA. Serviço de Nomes CORBA. Serviço de Nomes CORBA www/~cagf/sdgrad Páginas Brancas e Interoperabilidade de s Permite encontrar objetos através de nomes Nomes Referência de Objeto Essa associação é denominada name binding Um name context é o espaço onde

Leia mais

#include <stdio.h> Void main() { printf( Cheguei!\n"); } INTRODUÇÃO A LINGUAGEM C

#include <stdio.h> Void main() { printf( Cheguei!\n); } INTRODUÇÃO A LINGUAGEM C #include Void main() { printf( Cheguei!\n"); } INTRODUÇÃO A LINGUAGEM C ANTES DO C ERA A LINGUAGEM B B foi essencialmente uma simplificação da linguagem BCPL. B só tinha um tipo de dado, que

Leia mais