Удалённый вызов процедур: различия между версиями

[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
Метки: с мобильного устройства через мобильное приложение
Нет описания правки
Строка 1:
'''Удалённый вызов процедур''', реже '''Вызов удалённых процедур''' (от {{lang-en|Remote Procedure Call, RPC}}) — класс технологий, позволяющих [[Компьютерная программа|компьютерным программам]] вызывать [[Функция (программирование)|функции]] или [[Подпрограмма|процедуры]] в другом адресном пространстве (как правило, на удалённых компьютерах). Обычно реализация RPC-технологии включает в себя два компонента: сетевой протокол для обмена в режиме клиент-сервер и язык [[Сериализация|сериализации]] объектов (или структур, для необъектных RPC). Различные реализации RPC имеют очень отличающуюся друг от друга архитектуру и разнятся в своих возможностях: одни реализуют архитектуру [[Сервис-ориентированная архитектура|SOA]], другие - — [[CORBA]] или [[DCOM]]. На транспортном уровне RPC используют в основном протоколы [[TCP]] и [[UDP]], однако, некоторые построены на основе [[HTTP]] (что нарушает архитектуру [[Сетевая модель OSI|ISO/OSI]], так как [[HTTP]] - — изначально не транспортный протокол).
 
== Реализации ==
Существует множество технологий, обеспечивающих RPC:
* [[DCE/RPC]]  — Distributed Computing Environment / Remote Procedure Calls (бинарный протокол на базе различных транспортных протоколов, в том числе TCP/IP и Named Pipes из протокола SMB/CIFS)
* [[DCOM]]  — Distributed Component Object Model, известный как [[MSRPC]] Microsoft Remote Procedure Call или «Network OLE» (объектно-ориентированное расширение DCE RPC, позволяющее передавать ссылки на объекты и вызывать методы объектов через таковые ссылки)
* [[Internet Communications Engine|ZeroC ICE]]
* [[JSON-RPC]]— JavaScript Object Notation Remote Procedure Calls (текстовый протокол на базе HTTP) см. спецификацию: [http://www.ietf.org/rfc/rfc4627.txt RFC-4627]
* [[.NET Remoting]] (бинарный протокол на базе TCP, UDP, HTTP)
* [[RMI|Java RMI]] — Java Remote Method Invocation — см. спецификацию: http://java.sun.com/j2se/1.5.0/docs/guide/rmi/index.html
* [[SOAP]]  — Simple Object Access Protocol (текстовый протокол на базе HTTP) см. спецификацию: [http://www.ietf.org/rfc/rfc4227.txt RFC-4227]
* [[Sun RPC]] (бинарный протокол на базе TCP и UDP и [[External Data Representation|XDR]]) [http://www.ietf.org/rfc/rfc1831.txt RFC-1831] второе название - — [[ONC RPC]] [http://www.ietf.org/rfc/rfc1833.txt RFC-1833]
* [[XML RPC]] (текстовый протокол на базе HTTP) см. спецификацию: [http://www.ietf.org/rfc/rfc3529.txt RFC-3529]
* [http://ru.routix.net/rpc/ Routix.RPC]
 
== Принцип ==
 
Идея вызова удалённых процедур состоит в расширении хорошо известного и понятного механизма передачи управления и данных внутри программы, выполняющейся на одной машине, на передачу управления и данных через сеть. Средства удалённого вызова процедур предназначены для облегчения организации распределённых вычислений и создания распределенных клиент-серверных информационных систем. Наибольшая эффективность использования RPC достигается в тех приложениях, в которых существует интерактивная связь между удалёнными компонентами с небольшим временем ответов и относительно малым количеством передаваемых данных. Такие приложения называются RPC-ориентированными.
 
Строка 31 ⟶ 30 :
== Подсистемы ==
* Транспортная подсистема
: — управление исходящими и входящими соединениями.
: — поддержка понятия «граница сообщения» для транспортных протоколов, не поддерживающих его непосредственно (TCP).
: — поддержка гарантированной доставки для транспортных протоколов, не поддерживающих её непосредственно (UDP).
* Пул потоков (только для вызываемой стороны). Предоставляет контекст выполнения для вызванного по сети кода.
* [[Маршалинг]] (аналог «[[Сериализация|сериализации]]»). Упаковка параметров вызовов в поток байт стандартным образом, не зависящим от архитектуры (в частности, от порядка байт в слове). В частности, ему могут подвергаться массивы, строки и структуры, на которые указывают параметры-указатели.
Строка 43 ⟶ 42 :
* [[Network File System]]
* [[REST]]
* [https://web.archive.org/web/20120125155258/https://www.jmasters.info:8443/jres/ JRES - — Java Remote Execution Service] is a RPC protocol that uses SSL style encode mechanism to encode its calls and pure HTTP as a transport mechanism.
 
== Ссылки ==