Совокупность программ организации распределенных вычислений составляет программное обеспечение промежуточного слоя (Middleware). Одно из направлений организации распределенных вычислений в сетях Internet-Intranet основано на создании и использовании программных средств, которые могут работать в различных аппаратно-программных средах. Для совокупности таких средств используют также название многоплатформенная распределенная среда — МРС (crossware).
К технологиям распределенных вычислений относятся технологии мониторов транзакций, MOM (Message-Oriented Middleware), RPC (Remote Procedure Call), CORBA (или ORB - Object Request Broker), DCOM (Distributed Common Object Model), DCE (Distributed Computing Environment), SOAP (Simple Object Access Protocol).
В сравнительно простой объектной технологии MOM связь с серверами асинхронная, используются системные вызовы "послать" и "получить", осуществляющие обмен сообщениями. В отличие от электронной почты здесь обеспечивается связь не между людьми, а между приложениями, при этом часто в реальном масштабе времени. Однако могут быть варианты MOM с очередями, тогда режим on-line необязателен и при передаче не требуется подтверждений.
Широко распространена процедурная блокирующая синхронная технология RPC, предложенная фирмой Sun Microsystems. Вызов удаленных программ подобен вызову функций в языке C. При пересылках на основе транспортных протоколов TCP или UDP данные представляются в едином формате обмена XDR. Синхронность и блокирование означают, что клиент, обратившись к серверу, для продолжения работы ждет ответа от сервера.
При вызове удаленной процедуры, программы RPC производят преобразование форматов данных клиента в промежуточные машинно-независимые форматы, и затем преобразование в форматы данных сервера. При передаче ответных параметров производятся обратные преобразования. Таким образом, если система реализована на основе стандартного пакета RPC, она может быть легко перенесена в любую открытую среду.
Для систем распределенных вычислений разработаны специальные языки обмена данными, для RPC это язык IDL (Interface Definition Language), который дает пользователю возможность оперировать различными объектами безотносительно к их расположению в сети. На этом языке можно записывать обращения к серверам приложений.
Удаленная программа в технологии RPC характеризуется следующими атрибутами: имя узла, номер программы (часто это совокупность программ определенного назначения), версия программы (версия — это копия программы, копии создаются для использования в многопользовательском режиме), имя процедуры в программе.
Процедуры, которые пользователь собирается применять, должны быть зарегистрированы в узле-клиенте, т.е. указаны имена узла, программы, процедуры.
Обращение к удаленной программе в соответствии с механизмом RPC начинается с обращения к демону Postmapper, находящемуся в узле-клиенте. В запросе указываются процедура, аргумент, память под результат. Аргумент должен быть единственный, поэтому если аргументов много, то программист должен создать агрегат данных. Демон находит регистрационные данные и с помощью средств транспортного уровня устанавливает соединение и, используя специальные программные модули - стабы, передает запрос серверу (рис. 1). В сервере имеется диспетчер, который находит исполнителя запроса. В ответе сервера содержатся результаты выполнения процедуры.
Рис. 1. Передача данных по технологии RPC
RPC входит во многие системы сетевого ПО. RPC базируется на сетевой файловой системе NFS (для Unix-платформ) и информационной службе NIS — базе данных о конфигурациях всех машин в сети.
В настоящее время все большее применение находят объектные технологии распределенных вычислений, называемые также компонентно-ориентированными технологиями.
В архитектуре компонентно-ориентированных систем имеются следующие части:
- прикладная программа (клиент), создаваемая для решения очередной задачи;
- множество программных компонентов, составляющих серверную часть и распределенных по узлам вычислительной сети;
- программа-брокер (менеджер или посредник), служащая для установления связи между взаимодействующими компонентами и для согласования их интерфейсных данных.
В отличие от RPC, обращения из прикладной программы происходят не сразу к компоненту, а через посредство брокера. Запрос клиента направляется к брокеру. В брокере имеется предварительно сформированный каталог (репозитарий) интерфейсов функций с указанием компонентов-исполнителей. Брокер перенаправляет запрос соответствующему компоненту, после исполнения которого полученные результаты возвращаются клиенту.
Каждый компонент состоит из программного модуля, реализующего некоторые полезные функции, и интерфейса (оболочки). В спецификации интерфейса могут быть указаны характеристики модуля, реализуемые функции (методы) и связанные с модулем события (например, реакции на нажатие клавиш).
Одной из объектных сетевых технологий является технология, основанная на спецификациях CORBA (Common Object Request Broker Architecture), разработанных в начале 90-х годов и поддерживаемых ассоциацией ведущих производителей компьютерной техники OMG (Object Management Group).
К компонентно-ориентированным сетевым технологиям относятся также DCOM фирмы Microsoft, ориентированная на операционные системы Windows, и Enterprise JavaBeans (EJB) — технология, ориентированная на язык программирования Java.
Технология DCE реализуется в среде DCE, объединяющей узлы и сети, которые территориально могут быть разнесены на большие расстояния. Среда DCE представляет собой совокупность ячеек, узлы и сети распределены по ячейкам в соответствии с их функциональными связями. В каждой ячейке имеется большой объем разделяемых узлами данных. В ячейке выделяются главный сервер данных и несколько дополнительных серверов с копиями содержимого главного сервера для обеспечения быстрого доступа к данным. При этом доступ к дополнительным серверам разрешен только для чтения. Обновление данных происходит в главном сервере. Ячейка может занимать значительную территорию, главный сервер обычно размещается вблизи от центра ячейки, дополнительные серверы — по периферии.
В структуре DCE можно выделить следующие части. Для управления данными используется распределенная файловая система DFS (Distributed File Service). Служба директорий используется для определения адресов узлов, в частности, включает службу Domain Name Service (DNS), применяемую в Internet. Служба безопасности предназначена для аутентификации и авторизации пользователей, шифрования и дешифрования передаваемых данных. Синхронизация работы узлов в сети возлагается на службу времени. Имеется также служба обеспечения множественного доступа к серверам (Threads Service). Технология DCE может использоваться совместно с другими технологиям распределенных вычислений, например, с технологиями RPC или ORB. Так, для обмена данными в DCE от организации OSF (Open Software Foundation) используется механизм RPC. Определение нужного сервера в DCE либо происходит автоматически через ORB, либо возлагается на программиста, как в RPC.
Для корпоративных систем больших предприятий характерно использование многих программ и программных систем, относящихся к различным аппаратно-программным платформам. В такой гетерогенной среде организация распределенных вычислений обычно вызывает определенные затруднения. Кроме того, связь по технологиям RPC или CORBA происходит только по инициативе клиента. Наличие выделяемых для DCOM или CORBA отдельных портов затрудняет решение проблемы защищенности сети от несанкционированных воздействий. Решение возникающих проблем видится в использовании сервис-ориентированных архитектур распределенных систем.