Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Бесплатный конструктор сайтов и Landing Page

Хостинг с DDoS защитой от 2.5$ + Бесплатный SSL и Домен

SSD VPS в Нидерландах под различные задачи от 2.6$

✅ Дешевый VPS-хостинг на AMD EPYC: 1vCore, 3GB DDR4, 15GB NVMe всего за €3,50!

🔥 Anti-DDoS защита 12 Тбит/с!

VPS в России, Европе и США

Бесплатная поддержка и администрирование

Оплата российскими и международными картами

🔥 VPS до 5.7 ГГц под любые задачи с AntiDDoS в 7 локациях

💸 Гифткод CITFORUM (250р на баланс) и попробуйте уже сейчас!

🛒 Скидка 15% на первый платеж (в течение 24ч)

2007 г.

Влияние исследований на технологию промежуточного программного обеспечения

Вольфганг Эммерих, Микио Аояма, Джо Свентек
Перевод: Сергей Кузнецов

Назад Содержание Вперёд

8. Удаленные вызовы процедур

Для характеристики важности удаленных вызовов процедур мы не можем использовать в качестве показателя объем рынка, поскольку для этих систем отсутствует отдельный рынок. Примитивы удаленных вызовов процедур встроены во все основные операционные системы. В каждой системе Windows NT, Windows 2000, Windows XP, в каждой системе Unix, включая Linux, и во всех компьютерах Apple Macintosh с Mac OS X регулярно используются удаленные вызовы процедур для коммуникаций с другими компьютерами. Примитивы удаленных вызовов процедур используются в самих современных операционных системах для выполнения самых основных функций. Примерами использования RPC являются управление службой доменных имен (Domain Name Service) [97], поддерживающей логические доменные имена Internet, и управление службой DHCP (Dynamic Host Configuration Protocol), которая динамически назначает IP-адреса. Тем самым, мы можем постулировать, что сеть Internet в своем современном виде не могла бы существовать без удаленных вызовов процедур.

Предлагалось большое число механизмов удаленных вызовов процедур. В их число входят Xerox Courier [152], Xerox Cedar [21], Apollo NCA [45], Sun ONC/RPC [139, 140], Cambridge Mayflower RPC [9], MIT Athena RPCs [136], Stanford Modula/V RPCs [31, 1], ANSAware [7] и Rajdoot RPCs [112]. Всесторонний обзор, в котором представляются и сравниваются эти подходы, приводится в [143]. Оглядываясь назад, мы можем сказать, что имеются три направления развития удаленных вызовов процедур, каждое из которых оказало существенное воздействие. Общая картина соответствующих трасс воздействий представлена на рис. 15.


Рис. 15. Трассы воздействий для систем удаленных вызовов процедур

Первым направлением является система ANSAWare, которая, как описывалось выше, воздействовала на стандарт ODP и архитектуру CORBA. В справочном руководстве по архитектуре ANSA [7] утверждается, что «протокол удаленного вызова операций очень похож на вызовы удаленных процедур», и приводится явная ссылка на механизм RPC компании Xerox [21]. В состав ANSAware входит язык определения интерфейсов, компилятор этого языка, генерирующий стабы, которые позволяют справиться с неоднородностью данных, и в этой системе реализуются представление и маршалинг способом, очень похожим на тот, который использовался в Xerox RPC.

Второе направление составляет механизм RPC, определенный в составе Open Network Computing (ONC) компании Sun [139, 140]. Продукт ONC оказался очень влиятельным, поскольку его механизм RPC встроен в ОС Linux, Mac OS X, Solaris и различные варианты BSD Unix. Доказательством этого влияния является тот факт, что в страницах руководства по RPC этих вариантов Unix имеются явные ссылки на соответствующие документы RFC (Requests for Comments) IETF, в которых специфицируется ONC RPC. Во входящем в их число документе IETF RFC 1050 [140] имеется ссылка на статью Эндрю Биррелла и Брюса Нельсона [21] в сопровождении следующей фразы: «В этом документе специфицируется протокол передачи сообщений, используемый в пакете RPC компании Sun. [..] Здесь не делается попытка обосновать RPC. В качестве отличного введения в RPC и обоснования этого механизма рекомендуется статья Биррелла и Нельсона». Таким образом, этот IETF RFC явно ссылается на технический отчет XEROX, на основе которого была написана статья [21], в связи с введением в механизм RPC и обоснованием его использования.

Третьим направлением является реализация NCA RPC, оказавшая сильное воздействие на спецификацию OSF/DCE (Distributed Computing Environment) RPC и реализацию RPC компании Microsoft. На странице «What is RPC» сайта TechNet компании Microsoft [144] приводится список продуктов и технологий Microsoft, зависящих от реализации RPC в Microsoft. Этот список включает DCOM, COM+, интерфейсы управления для служб DHCP и DNS, Distributed Link Transaction Coordinator и многое другое. Взаимосвязь между Microsoft RPC и DCOM была подтверждена Полом Личем (Paul Leach), который в своем интервью сказал, что «DCOM – это всего лишь небольшое расширение MS RPC». Однако реализация Microsoft RPC происходит от спецификации OSF/DCE. Подробный отчет о связи Microsoft RPC и DCE/RPC приводится в главе 7 материала [127]. Этот источник можно считать авторитетным, поскольку Вод Розенберри (Ward Rosenberry) также являлся и редактором спецификаций OSF/DCE.

В OSF/DCE специфицируется ряд технологий, и спецификация удаленных вызовов процедур содержится в [111]. Спецификации DCE были разработаны организацией OSF, являвшейся предшественницей OpenGroup в поддержке процесса публичной стандартизации. DCE включает ряд базовых технологий, требуемых для построения безопасных распределенных систем. В число этих технологий входит средство удаленного вызова процедур, распределенная файловая система, распределенная служба времени, службы каталогов и стандартная библиотека поддержки потоков управления (thread). К сожалению, в самих документах DCE не содержатся ссылки, показывающие происхождение используемых технологий. Однако в нескольких источниках утверждается, что механизм DCE/RPC происходит от архитектуры NCA (Network Computing Architecture) компании Apollo, которая была внедрена в HP-UX после слияния Apollo с Hewlett Packard:

  • В статье [78] про DCE говорится, что «в спецификациях NCA определяются протоколы, управляющие взаимодействием клиентов и серверов; формат пакетов, в которых данные RPC пересылаются по сети; и язык определения интерфейсов, используемый для спецификации интерфейсов RPC. DCE RPC основывается на второй версии NCA».

  • В глоссарии DCE [110] содержится следующее определение: «Network Computing Architecture (NCA): архитектура программных приложений, распределенных в неоднородном наборе сетей, компьютеров и сред программирования. В NCA предписывается использование архитектуры DCE RPC».

Механизм NCA/RPC был впервые описан в [45]. В этой статье имеется явная ссылка на Cedar [21] и, тем самым, признается происхождение концепции удаленных вызовов процедур. В данном нам интервью один из первых архитекторов NCA Пол Лич подтвердил, что «подобно ANSAware, NCA включает язык определения интерфейсов и компилятор, генерирующий стабы, которые позволяют справиться с неоднородностью; представление и маршалинг в этой архитектуре реализуются во многом тем же способом, как тот, который был предложен Бирреллом и Нельсоном в 1984 г.». В статье про NCA также говорится, что в NCA/RPC используются заимствованные понятия объектно-ориентированного подхода, и приводится явная ссылка на [57]. Отмечается тщательное проведение различия между интерфейсами и реализацией. Кроме того, в статье утверждается, что объектные ссылки, передаваемые в качестве первого параметра при каждом удаленном вызове процедуры, схожи с понятиеми self в языке Smalltalk и this в языке C++, и по этому поводу в статье имеется ссылка на [138]. Далее, в NCA/RPC задается язык определения интерфейсов, в котором имеется много понятий, все еще используемых в IDL OSF/RPC и IDL компании Microsoft. Например, из NCA/RPC происходят UUID (universally unique identifier), с использованием которых уникально идентифицируются интерфейсы в IDL OSF/RPC и Microsoft. Использование уникальных идентификаторов в распределенном компьютинге впервые было предложено в [80].

Поскольку все три трассы воздействий RPC приводят к [21], мы можем с уверенностью заключить, что эта основополагающая статья широко признана, как первое авторитетное описание удаленных вызовов процедур. Она была написана в то время, когда Эндрю Биррелл и Брюс Нельсон являлись сотрудниками Xerox Palo Alto Research Centre (PARC). В статье описывается система удаленных вызовов процедур Cedar. Эта система представляла собой среду программных разработок, разработанную в Xerox, и удаленные вызовы процедур использовались для распределенных коммуникаций инструментальных средств в этой среде. Интересно заметить, что Биррелл и Нельсон говорят, что именно конкретная цель создания среды разработки программ заставила их ввести в систему RPC аспекты, плохо понимавшиеся до этого. Основным достижением статьи Биррелла и Нельсона является то, что в ней впервые были введены ключевые архитектурные абстракции, требуемые в механизме RPC: понятие стабов, осуществляющих прямой и обратный маршалинг параметров; то, что эти стабы могут автоматически порождаться на основе некоторого вида определения интерфейса; особая семантика надежности для удаленных вызовов процедур; управление адресными параметрами при выполнении удаленных вызовов процедур. В статье также рассказывалось об экспериментальной оценке системы Cedar RPC и полученных данных о производительности.

Биррелл и Нельсон признают, что идеи RPC появились намного раньше. До прихода на работу в PARC Брюс Нельсон работал над диссертацией на соискание степени PhD по теме удаленных вызовов процедур на факультете компьютерных наук в Carnegie Mellon University [102]. В [21] утверждается, что на механизм Xerox Cedar RPC оказала влияние «работа, выполненная в MIT», и приводится ссылка на статью Барбары Лисков (Barbara Liskov) о принципах распределенного компьютинга [86]. В этой статье Лисков подчеркивает важность модульности распределенных систем. Для достижения этого она предлагает ряд расширений языка CLU для поддержки распределенных систем [89]. Как мы видим сегодня, понятие «защитников» (guardian), которое Лисков предложила в этой статье в качестве расширения CLU, оказало не слишком большое воздействие, но ее доводы в пользу модульности и разделения интерфейсов и реализации распределенных систем имели очень большое влияние и привели к включению языка определения интерфейсов во все механизмы RPC.

В [21] Эндрю Биррелл и Брюс Нельсон описывают важность понятия интерфейса. Им первым пришла в голову идея на основе определения интерфейса порождать клиентский и серверный стабы, используемые в их архитектуре. Этот метод применяется теперь во всех реализациях RPC, он используется в COM и CORBA.

Для определения интерфейсов в механизме Cedar RPC использовался язык Mesa. Предварительное описание Mesa приводится в [55]. В [79] этот язык описывается более подробно. Отмечается, что Mesa является языком соединения модулей в соответствии с идеями [43, 44], и что он основывается на принципах сокрытия информации, введенных в [113].

Назад Содержание Вперёд

Скидка до 20% на услуги дата-центра. Аренда серверной стойки. Colocation от 1U!

Миграция в облако #SotelCloud. Виртуальный сервер в облаке. Выбрать конфигурацию на сайте!

Виртуальная АТС для вашего бизнеса. Приветственные бонусы для новых клиентов!

Виртуальные VPS серверы в РФ и ЕС

Dedicated серверы в РФ и ЕС

По промокоду CITFORUM скидка 30% на заказ VPS\VDS

VPS/VDS серверы. 30 локаций на выбор

Серверы VPS/VDS с большим диском

Хорошие условия для реселлеров

4VPS.SU - VPS в 17-ти странах

2Gbit/s безлимит

Современное железо!

Новости мира IT:

Архив новостей

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 7861149
Пресс-релизы — pr@citforum.ru
Обратная связь
Информация для авторов
Rambler's Top100 TopList This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2019 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...