1/52
Looks like no tags are added yet.
Name | Mastery | Learn | Test | Matching | Spaced | Call with Kai |
|---|
No analytics yet
Send a link to your students to track their progress
Quais são os problemas dos sockets?
A comunicação via sockets é de baixo nivel e exige que o programador trate de: definição de protocolos
serialização e desserialização
tratamento de erros
endereçamento e portas
representação de dados heterogéneos. REPETITIVO, ERROS, POUCO PRODUTIVO
Qual foi a solução encontrada?
O Middleware
O que é o Middleware?
Uma camada de software que abstrai detalhes de comunicação entre processos distribuídos, evitando que programadores lidem diretamente com sockets, protocolos e serialização.
Porque é que o MiddleWare é necessário?
Para evitar repetição de código genérico, reduzir erros, simplificar o desenvolvimento e aumentar produtividade em sistemas distribuídos.
Sistematiza tarefas como marshaling/unmarshaling, define uma representação externa de dados, define um protocolo de pedido-resposta
Quais as vantagens do Middleware?
Facilita desenvolvimento de aplicações distribuidas; Desenvolvilmento mais rápido; Menos propicio a erros; Complexidade das aplicações reduzida.
Quais as desvantagens?
Menos flexível (porque temos de aceitar o modelo importo), mais overhead (+ camadas), maior consumo de recursos devido a mais componentes ativos, mais custos de processamento de dados
Qual é o objetivo do RPC?
Permitir invocar procedimentos remotos como se fossem locais, permite que um cliente invoque processamentos num espaço de endereçamento distinto, na mesma máquina ou máquinas diferentes.
Quais foram os desafios tratados pelo RPC?
Como tornar a invocação remota transparente. (o programador não perceve que o procedimento é remoto)
A especificação das invocações suportadas por serviços (IDL)
Como trocar mensagens entre máquinas distintas que podem ter os seus dados representados de formas diferentes? (Representação externa de dados)
Como localizar o serviço? (binding)
Como lidar com erros (através de politicas)
Como é definida a interface num RPC?
Através de uma IDL, que é uma linguagem de definição de interface que descreve métodos, parâmetros e tipos usados no serviço.
Exemplos de IDL
COBRA IDL, SUN XDR…
Porque é que RPC usa apenas passagem por valor?
Porque apontadores locais não têm significado em espaços de endereçamento distintos. Também pode ser designada por cópia
Como são feitas as chamadas em RPC?
O middleware deve esconder a heterogeneidade dos vários sistemas que estão a comunicar, e a comunicação é através da representação externa
Como funciona a transparência de localização?
Através de binding, que é o processo de associar o cliente ao servidor. Pode ser estático (em compilação) ou dinâmico (via serviço de registo).
Qual tipo de binding é mais desejável?
O dinâmico, porque permite que os servidores registem os serviços que exportem e permite que os clientes procurem o serviço pelo nome
O que faz o Serviço de Registo RPC? E quais as vantagens?
Regista serviços, remove serviços e devolve porta/endereço de serviços registados (LookUp). Assim os servidores podem mudar de máquina, sem quebrar clientes
Explica como é feita a remote procedure call?
Aqui, o cliente e o servidor funcionam como dois processos separados, não é preciso que eles estejam na mesma máquina. Eles comunicam através de STUBS, o cliente tem um stub e o servidor outro.
O stub cliente prepara os argumentos e converte para XDR, depois cria uma mensagem de pedido, e entrega ao network para transportar.
Na rede, a mensagem entra no mundo distribuido e é enviada.
Chega ao Server Stub, onde é unmarshalized e é aqui que é invocado o processo real.
A mensagem chega finalmente ao Servidor
RPC gera código automático a partir de que?
A partir da linguagem de definição definida na imterface (IDL) para descrever serviços
O que distingue RMI de RPC?
RMI é orientado a objetos e permite invocar métodos remotos de objetos, não apenas procedimentos.
Como funciona o cliente-servidor em RMI?
Os servidores geram objetos remotos e os clientes invocam métodos dos objetos fazendo uma invocação remota.
Como é a interface remota de RMI?
Uma interface remota, declara as assinaturas dos métodos remotos, declara os métodos que podem ser invocados remotamente, define: nome, parâmetros,tipos…
Objetos em outros espaços de endereçamento apenas podem invocar métodos declarados na interface remota do objeto;
Objetos mo mesmo espaço de endereçamento podem invocar todos os métodos disponibilizados pelo objeto.
Há serialização de dados em RMI?
Sim, os argumentos de métodos remotos têm de ser serializados
Passagem de parâmetros
Aqui, os objetos que têm uma referencia remota e podem ser passados por referência, o que vai viajar pela rede são as referencias
Em que se baseia a referência remota?
Invocar um objeto implica ter uma referência para esse objeto, as referências remotas são REFERÊNCIAS para objetos remotos e permitem a invocação de método remotos, são referencaias para um serviço disponivel na rede
RMI - serviço de nomes
qualquer objeto remoto necessita de ter uma referência remota que permita a outros objetos fazer chegar as suas invocações ao local certo, e os serviços de nomes podem ajudar a encontrar a referência de um determinado objeto a partir do nome do seu serviço
Para que serve o RMI Registry?
Serviço de nomes que associa nomes a objetos remotos, permitindo lookup por clientes.
JAVA RMI?
Permite a um objeto numa java virtual machine invocar ps métodos de um objeto numa putra JVM de forma quase transparente para o programador
Como funciona o RMI?
Imaginemos que temos duas JVM, e temos dois objetos A e B, no objeto A encontra-se o cliente e no objeto B o servidor. O cliente pretende invocar um método num objeto remoto B.
Como o vai fazer?
Em cliente, vamos ter um proxy/stub de B que tem exatamente a mesma interface que o objeto real e finge ser esse objeto remoto, este proxy vai encaminhar o pedido do cliente numa mensagem para o objeto remoto de B artravés do módulo das comunicações.
Do lado do servidor temos o Skeleton que é responsável por desemoenhar o papel de um cliente que invoca os métodos no objeto remoto, quando chega um pedido de invocação de um cliente é necessário: interpretar os dados e construir as respetivas estrutt de dados (unmarsh), interpretar o mºetodo na verdadeira implem do obj remoto, depois serializa o resultado e devolvê-lo na mesnag para o cliente (marsh)
Os módulos de comunicação de ambos os lados cooperam na execução do protocolo pedido-resposta que suporta a invocação de métodos remotos, o tipo de protocolo determina o tipo de semântica de invocação
Módulo de transferências remotas é responsável por gerir a tradução entre referências locais para (obj proxys ou skelet) e referências remotas e tambem criar refer remotas, permite acima de tudo ao modulo de comunicações saber para onde encaminhar uma invocação remota ou entregar uma resposta.
Quando é que é criado um novo proxy?
sempre que o serviço devolve uma referência a um objeto remoto é criado um novo proxy, o proxy é destruido quando o cliente deixa de o usar
Como funciona a geração automática de código ?
Um interface remoto JAVA extende o interface java.rmi.remote, a partir da definição do interface remoto são gerados automat quase todos os componentes que suportam a comunicação RMI entre o cliente e o server.
O programador apenas tem de desenvolv o programa cliente e o prog servidor
Quando surge a necessidade de um carregamento dinâmico de código?
Caso não tenha classe, a classe tem de ser carregada a partir de URL
Caso a invocação de um método remoto num objeto do qual conhecemos a interface, mas não temos nenhuma implantação
Como é que o java faz esse carregamento?
A partir de um URL, usando codebase que identifica o endereço onde o bytecode de uma detrminada classe pode ser obtido
interfaces remotas
define os métofos que podem ser invocados remotamente através do RMI, todos os mºetodos devem lançar RemoteException para forçar o programador a tratar erris que n existem em chaamadas locais
O que é web service?
conjunto de operações que podem ser usadas por aplicações cliente usando protocolos da net
Como é a representação externa de dados em RPC Web Services?
As mensagens são representadas em XML
O que é SOAP?
Protocolo baseado em XML para pedidos e respostas estruturadas.
O que é WSDL?
Linguagem XML que descreve a interface do Web Service: operações, parâmetros, tipos, binding e endpoint.
O que é UDDI?
Diretoria/discovery service que permite publicar e descobrir Web Services dinamicamente.
Exemplo de invocação de web services?
O cliente questiona onde pode encontrar certo serviço (UDDI) e o server responde a localização desse serviço.
Depois, o cliente pergunta como é que exatamente deve fazer para o usar, o server responde com o WSDL.
Depois de saber, usa SOAP para os pedidos
Existe transparência direta nos Web Services?
Não, mas existem várias biblitoecas que permitem integrar o suporte a web services diretamente no ambiente de programação
Com base na descrição WSDL é gerado automaticamente um código necessário para interagir com esse serviço
Principais desvantagens de SOAP Web Services
Ineficientes, XML pesado, pobre escalabilidade, complexidade alta, HTTP usado apenas como transporte, difícil cache
Qual é a grande vantagem dos SOAP Web Services?
Interoperabilidade entre diferentes linguagens e plataformas.
Interoperabilidade entre diferentes linguagens e plataformas.
O que é REST?
Modelo arquitetural para sistemas distribuídos baseado na Web e nas capacidades do HTTP.
O que é uma API RESTful?
API que segue os princípios de REST: recursos, métodos HTTP, stateless, cache, interface uniforme, etc.
Modelo Cliente Servidor
Servidores lidam com lógica e persistência
Clientes lidam com a interface e experiência do utilizador
Stateless
Cada pedido contém toda a informação necessária; servidor não guarda estado.
Cacheable
Respostas devem indicar se podem ser cacheadas; aumenta eficiência e escalabilidade
Interface Uniforme
Recursos identificados por URI
Manipulados via métodos HTTP
Representações autodescritivas
Hypermedia (HATEOAS)
Sistema por Camadas
Cliente só conhece a camada com que comunica; oculta serviços internos (API gateways, microserviços).
O que é um recurso em REST?
Qualquer entidade com significado que possa ser identificada via URI e que tenha representações.
O que é uma representação em REST?
Estado serializado de um recurso (ex.: JSON, XML, HTML).
Porque é que REST é altamente escalável?
Porque é stateless, suportado por cache e baseado numa interface uniforme que simplifica o sistema.
Diferenças em REST e RPC na invocação de métodos remotos
RPC: Referência ao serviço + nome do método + parâmetros.
REST: referência é o URL do recurso + métodos standard do HTTP + parâmetros estão no URL ou no corpo da mensagem HTTP
Conectividade
O estado da aplicação é exposto por meio de um URI, as aplicações cliente devem seguir os links como forma de navegação no estado da aplicação