{"id":478705,"date":"2023-08-09T09:37:11","date_gmt":"2023-08-09T09:37:11","guid":{"rendered":""},"modified":"2023-09-05T11:17:26","modified_gmt":"2023-09-05T11:17:26","slug":"remote-procedure-call","status":"publish","type":"wiki","link":"https:\/\/oneproxy.pro\/pt\/wiki\/remote-procedure-call\/","title":{"rendered":"Chamada de procedimento remoto"},"content":{"rendered":"<p>Breve informa\u00e7\u00e3o sobre Chamada de Procedimento Remoto<\/p>\n<p>Chamada de procedimento remoto (RPC) \u00e9 um protocolo poderoso que permite que um programa fa\u00e7a com que um procedimento (sub-rotina) seja executado em outro espa\u00e7o de endere\u00e7o (geralmente em outra m\u00e1quina f\u00edsica). Os RPCs s\u00e3o um elemento crucial na computa\u00e7\u00e3o distribu\u00edda e nos modelos cliente-servidor, permitindo a comunica\u00e7\u00e3o entre diferentes sistemas, independentemente dos protocolos de rede ou sistemas operacionais subjacentes. Ele abstrai a complexidade subjacente e permite que os desenvolvedores invoquem m\u00e9todos como se fossem locais em seu sistema.<\/p>\n<h2>A hist\u00f3ria da origem da chamada de procedimento remoto e sua primeira men\u00e7\u00e3o<\/h2>\n<p>As origens do RPC remontam ao in\u00edcio da d\u00e9cada de 1970, quando o trabalho de Bruce Jay Nelson lan\u00e7ou as bases para esta tecnologia. O trabalho de Nelson culminou em um doutorado. disserta\u00e7\u00e3o intitulada \u201cRemote Procedure Call\u201d em 1981, que detalhou o conceito de permitir chamadas de procedimento entre diferentes programas de computador.<\/p>\n<p>A implementa\u00e7\u00e3o do conceito ganhou for\u00e7a na d\u00e9cada de 1980 com o desenvolvimento do Network File System (NFS) pela Sun Microsystems, que utilizava fortemente o RPC para facilitar o gerenciamento distribu\u00eddo de arquivos.<\/p>\n<h2>Informa\u00e7\u00f5es detalhadas sobre chamada de procedimento remoto: expandindo o t\u00f3pico<\/h2>\n<p>Chamadas de procedimento remoto s\u00e3o essencialmente solicita\u00e7\u00f5es de um programa para outro executadas em uma rede. O princ\u00edpio por tr\u00e1s do RPC \u00e9 bastante simples, mas sua implementa\u00e7\u00e3o pode variar dependendo dos sistemas, linguagens e protocolos envolvidos.<\/p>\n<ul>\n<li><strong>RPCs s\u00edncronos:<\/strong> \u00c9 a forma tradicional em que o cliente envia uma solicita\u00e7\u00e3o ao servidor e fica bloqueado, aguardando resposta.<\/li>\n<li><strong>RPCs ass\u00edncronos:<\/strong> Esta variante permite ao cliente enviar uma solicita\u00e7\u00e3o e continuar seu processamento sem esperar pela resposta do servidor.<\/li>\n<\/ul>\n<p>O RPC utiliza stubs, que s\u00e3o peda\u00e7os de c\u00f3digo que traduzem os par\u00e2metros usados durante as chamadas remotas, ajudando o processo a se tornar mais independente de linguagem.<\/p>\n<h2>A estrutura interna da chamada de procedimento remoto: como funciona o RPC<\/h2>\n<p>A estrutura interna do RPC consiste nos seguintes componentes principais:<\/p>\n<ol>\n<li><strong>Esbo\u00e7o do cliente:<\/strong> Respons\u00e1vel por empacotar os par\u00e2metros e envi\u00e1-los ao servidor.<\/li>\n<li><strong>Esbo\u00e7o do servidor:<\/strong> Respons\u00e1vel por descompactar par\u00e2metros e chamar o procedimento real do servidor.<\/li>\n<li><strong>Protocolos de Transporte:<\/strong> Facilita a comunica\u00e7\u00e3o entre o cliente e o servidor.<\/li>\n<\/ol>\n<h3>Etapas de trabalho:<\/h3>\n<ol>\n<li>O cliente invoca um procedimento no stub do cliente.<\/li>\n<li>O stub do cliente empacota os par\u00e2metros e os envia ao servidor.<\/li>\n<li>O stub do servidor descompacta os par\u00e2metros e chama o procedimento apropriado no servidor.<\/li>\n<li>O servidor envia os resultados de volta ao stub do cliente.<\/li>\n<li>O stub do cliente descompacta os resultados e os retorna ao cliente.<\/li>\n<\/ol>\n<h2>An\u00e1lise dos principais recursos da chamada de procedimento remoto<\/h2>\n<p>Alguns dos principais recursos do RPC incluem:<\/p>\n<ul>\n<li><strong>Neutralidade da linguagem:<\/strong> Permite a comunica\u00e7\u00e3o entre aplica\u00e7\u00f5es escritas em diferentes linguagens de programa\u00e7\u00e3o.<\/li>\n<li><strong>Independ\u00eancia da plataforma:<\/strong> Permite a intera\u00e7\u00e3o entre v\u00e1rios sistemas operacionais e hardware.<\/li>\n<li><strong>Versatilidade do protocolo:<\/strong> Suporta diferentes protocolos de transporte como HTTP, DCOM, CORBA ou Java RMI.<\/li>\n<li><strong>F\u00e1cil de usar:<\/strong> Simplifica o desenvolvimento de aplicativos distribu\u00eddos.<\/li>\n<\/ul>\n<h2>Tipos de chamada de procedimento remoto: usando tabelas e listas<\/h2>\n<table>\n<thead>\n<tr>\n<th>Tipo<\/th>\n<th>Descri\u00e7\u00e3o<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>XML-RPC<\/td>\n<td>Usa XML para codificar chamadas e HTTP como mecanismo de transporte.<\/td>\n<\/tr>\n<tr>\n<td>JSON-RPC<\/td>\n<td>Utiliza JSON para codifica\u00e7\u00e3o de chamadas. \u00c9 agn\u00f3stico em termos de transporte.<\/td>\n<\/tr>\n<tr>\n<td>SAB\u00c3O<\/td>\n<td>Um protocolo que define um conjunto de regras para estruturar mensagens e depende de XML.<\/td>\n<\/tr>\n<tr>\n<td>gRPC<\/td>\n<td>Desenvolvido pelo Google, o gRPC utiliza HTTP\/2 e buffers de protocolo, oferecendo suporte a solicita\u00e7\u00f5es de streaming.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Maneiras de usar chamada de procedimento remoto, problemas e suas solu\u00e7\u00f5es relacionadas ao uso<\/h2>\n<p>As formas de usar RPC incluem computa\u00e7\u00e3o distribu\u00edda, servi\u00e7os online, aplicativos baseados em nuvem e muito mais. No entanto, eles v\u00eam com certos desafios e solu\u00e7\u00f5es:<\/p>\n<ul>\n<li><strong>Problema: Preocupa\u00e7\u00f5es de Seguran\u00e7a<\/strong>\n<ul>\n<li><em>Solu\u00e7\u00e3o:<\/em> Implementar mecanismos fortes de autentica\u00e7\u00e3o e criptografia.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Problema: Lat\u00eancia da Rede<\/strong>\n<ul>\n<li><em>Solu\u00e7\u00e3o:<\/em> Utilizando m\u00e9todos de serializa\u00e7\u00e3o eficientes e protocolos de transporte otimizados.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Problema: compatibilidade de vers\u00e3o<\/strong>\n<ul>\n<li><em>Solu\u00e7\u00e3o:<\/em> Implementando controle de vers\u00e3o cuidadoso e compatibilidade com vers\u00f5es anteriores.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h2>Principais caracter\u00edsticas e outras compara\u00e7\u00f5es com termos semelhantes: tabelas e listas<\/h2>\n<table>\n<thead>\n<tr>\n<th>Caracter\u00edstica<\/th>\n<th>RPC<\/th>\n<th>API REST<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Protocolo<\/td>\n<td>V\u00e1rios<\/td>\n<td>HTTP\/HTTPS<\/td>\n<\/tr>\n<tr>\n<td>Estado<\/td>\n<td>Geralmente com estado<\/td>\n<td>Ap\u00e1trida<\/td>\n<\/tr>\n<tr>\n<td>Formatar<\/td>\n<td>M\u00faltiplo (XML, JSON)<\/td>\n<td>Geralmente JSON<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Perspectivas e Tecnologias do Futuro Relacionadas \u00e0 Chamada de Procedimento Remoto<\/h2>\n<p>O futuro do RPC parece promissor com avan\u00e7os em tecnologias como gRPC, aplicativos IoT e integra\u00e7\u00e3o com solu\u00e7\u00f5es baseadas em nuvem. O desenvolvimento cont\u00ednuo de protocolos de seguran\u00e7a, t\u00e9cnicas de serializa\u00e7\u00e3o e suporte para mais linguagens de programa\u00e7\u00e3o provavelmente levar\u00e1 a uma ado\u00e7\u00e3o mais ampla e a novas aplica\u00e7\u00f5es de RPC.<\/p>\n<h2>Como os servidores proxy podem ser usados ou associados \u00e0 chamada de procedimento remoto<\/h2>\n<p>Servidores proxy como o OneProxy podem desempenhar um papel vital no RPC, fornecendo seguran\u00e7a adicional, balanceamento de carga e cache. Eles podem filtrar solicita\u00e7\u00f5es e respostas, garantindo que apenas as chamadas autorizadas sejam processadas. Em implanta\u00e7\u00f5es em larga escala, os servidores proxy podem distribuir a carga entre v\u00e1rios servidores, melhorando o desempenho e a confiabilidade.<\/p>\n<h2>Links Relacionados<\/h2>\n<ul>\n<li><a href=\"https:\/\/example.com\/nelson-dissertation\" target=\"_new\" rel=\"noopener nofollow\">Disserta\u00e7\u00e3o de Nelson sobre Chamada de Procedimento Remoto<\/a><\/li>\n<li><a href=\"https:\/\/grpc.io\/\" target=\"_new\" rel=\"noopener nofollow\">Documenta\u00e7\u00e3o oficial do gRPC<\/a><\/li>\n<li><a href=\"https:\/\/oneproxy.pro\/pt\/\" target=\"_new\" rel=\"noopener\">Servi\u00e7os OneProxy<\/a><\/li>\n<\/ul>\n<hr>\n<p><em>Observa\u00e7\u00e3o: verifique todos os links e consulte o OneProxy para obter detalhes espec\u00edficos ou informa\u00e7\u00f5es propriet\u00e1rias a serem inclu\u00eddas no artigo.<\/em><\/p>","protected":false},"featured_media":478706,"menu_order":0,"template":"","meta":{"_acf_changed":false,"content-type":"","inline_featured_image":false,"footnotes":""},"class_list":["post-478705","wiki","type-wiki","status-publish","has-post-thumbnail","hentry"],"acf":{"faq_title":"Frequently Asked Questions about <mark>Remote Procedure Call (RPC)<\/mark>","faq_items":[{"question":"What is Remote Procedure Call (RPC)?","answer":"<p>Remote Procedure Call (RPC) is a protocol that enables one program to execute a procedure in another address space, often on another physical machine. It's widely used in distributed computing and client-server models, allowing communication across different systems without concerning the underlying network protocols or operating systems.<\/p>"},{"question":"What was the first mention of RPC, and who originated the concept?","answer":"<p>The concept of RPC was first mentioned by Bruce Jay Nelson in the early 1970s, and his Ph.D. dissertation titled \"Remote Procedure Call\" in 1981 detailed the idea.<\/p>"},{"question":"How does Remote Procedure Call work, and what are its main components?","answer":"<p>RPC works by utilizing a client stub to pack parameters and send them to the server, where a server stub unpacks them and calls the server's procedure. The main components include the client stub, server stub, and transport protocols. The client receives the results back from the server via the client stub.<\/p>"},{"question":"What are the key features of RPC?","answer":"<p>The key features of RPC include language neutrality, platform independence, protocol versatility, and ease of use, allowing communication between various programming languages, operating systems, and transport protocols.<\/p>"},{"question":"What types of RPC exist?","answer":"<p>Several types of RPC exist, including XML-RPC, JSON-RPC, SOAP, and gRPC, each utilizing different encoding methods and transport mechanisms.<\/p>"},{"question":"What problems can be encountered with RPC, and how can they be resolved?","answer":"<p>Problems with RPC may include security concerns, network latency, and version compatibility. Solutions include implementing strong authentication and encryption, using efficient serialization methods, and maintaining careful version control.<\/p>"},{"question":"How are RPC and REST API different?","answer":"<p>While RPC supports various protocols and can be stateful, REST API generally uses HTTP\/HTTPS and is stateless. RPC can utilize multiple formats like XML and JSON, while REST API usually uses JSON.<\/p>"},{"question":"How can proxy servers like OneProxy be associated with RPC?","answer":"<p>Proxy servers such as OneProxy can enhance RPC by providing additional security, load balancing, and caching. They can filter and distribute the requests and responses, improving performance and reliability.<\/p>"},{"question":"What are the future perspectives of Remote Procedure Call?","answer":"<p>The future of RPC is promising, with advancements in technologies like gRPC, IoT applications, and integration with cloud-based solutions. The development of security protocols, serialization techniques, and broader language support may lead to new applications of RPC.<\/p>"}]},"_links":{"self":[{"href":"https:\/\/oneproxy.pro\/pt\/wp-json\/wp\/v2\/wiki\/478705","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/oneproxy.pro\/pt\/wp-json\/wp\/v2\/wiki"}],"about":[{"href":"https:\/\/oneproxy.pro\/pt\/wp-json\/wp\/v2\/types\/wiki"}],"version-history":[{"count":0,"href":"https:\/\/oneproxy.pro\/pt\/wp-json\/wp\/v2\/wiki\/478705\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/oneproxy.pro\/pt\/wp-json\/wp\/v2\/media\/478706"}],"wp:attachment":[{"href":"https:\/\/oneproxy.pro\/pt\/wp-json\/wp\/v2\/media?parent=478705"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}