ПО промежуточного слоя
Распределенным системам часто приходится работать в гетерогенных средах, когда в разных узлах установлено различное оборудование и операционные системы. Например, когда клиенту на ПК под управлением Windows нужно общаться с сервером под управлением системы UNIX. ПО промежуточного слоя — это слой программного обеспечения, располагаемый поверх ОС с целью создания однородной платформы, на которой… Читать ещё >
ПО промежуточного слоя (реферат, курсовая, диплом, контрольная)
Распределенным системам часто приходится работать в гетерогенных средах, когда в разных узлах установлено различное оборудование и операционные системы. Например, когда клиенту на ПК под управлением Windows нужно общаться с сервером под управлением системы UNIX. ПО промежуточного слоя — это слой программного обеспечения, располагаемый поверх ОС с целью создания однородной платформы, на которой могут функционировать распределенные приложения. Одной из ранних форм ПО промежуточного слоя был механизм вызова удаленных процедур RPC. Другие примеры — это система DCE (Distributed Computing Environment — среда распределенных вычислений), основанная на RPC, технология вызова удаленных методов (RMI) в языке Java, а также технологии СОМ и CORBA.
Предоставляя единообразный метод взаимодействия объектов, технологии ПО промежуточного слоя, такие как CORBA, СОМ и Java Beans, поощряют повторное использование компонентов, поэтому их часто называют компонентными технологиями.
Платформы для распределенных вычислений. Изначально платформы для распределенных вычислений базировались на модели клиент-сервер. Но в последнее время все большую популярность завоевывает объектная модель [14]. Коммуникации в модели клиент-сервер часто основаны на вызове удаленных процедур. При таком подходе процедуры находятся в адресном пространстве сервера и дистанционно запрашиваются клиентами. Сервер получает от клиента запрос, активизирует нужную процедуру и возвращает ответ.
В объектной модели объекты получают глобальные имена и могут вызываться непосредственно на сервере. Существует два подхода к распределенным вычислениям: модель распределенных объектов и модель мобильного кода [14]. В первом случае объекты размещаются на сервере и вызываются дистанционно, как в Java RMI и CORBA. Во втором случае требуемые объекты мигрируют с сервера на клиент — ярким примером такого метода служат Java-апплеты.
Вызовы удаленных процедур. Некоторые распределенные системы поддерживают механизм вызова удаленных процедур (RPC). Клиент в одном узле запрашивает удаленную процедуру сервера, находящегося в другом узле. Вызов удаленной процедуры аналогичен вызову локальной процедуры, поэтому тот факт, что сервер находится далеко, скрыт от клиента. Процедура, необходимая клиенту, часто называется клиентской заглушкой (Client Stub). Она принимает запрос и произвольные параметры, упаковывает их в сообщение (данный процесс называется маршалингом) и отправляет сообщение серверу.
Удаленная серверная заглушка (Server Stub) распаковывает сообщение (это действие носит имя демаршалинга) и вызывает нужную процедуру, передавая ей параметры. Когда серверная процедура заканчивает обработку запроса, она возвращает результаты серверной заглушке, которая упаковывает их в ответное сообщение и отправляет клиентской заглушке. Клиентская заглушка извлекает результаты из сообщения и возвращает их клиенту в виде выходных параметров.
Таким образом, роль клиентской и серверной заглушек сводится к тому, чтобы представить вызовы удаленных процедур так, как если бы они были локальными. На рис. 7.15а изображен объект, обращающийся к локальной процедуре другого объекта. На рис. 7.15б представлено распределенное решение той же задачи, когда объект на клиентском узле вызывает удаленную процедуру, принадлежащую объекту на удаленном серверном узле. Локально вызывается клиентская заглушка, которая упаковывает имя и параметры процедуры в сообщение, отправляемое по сети. Интерфейсный уровень удаленного узла получает сообщение и передает его серверной заглушке, которая распаковывает сообщение и вызывает указанную процедуру серверного объекта. После завершения процедуры серверная заглушка упаковывает ответ и посылает его по сети. Затем клиентская заглушка распаковывает сообщение и передает его клиентскому объекту.
Рис. 16. Вызов удаленных методов (RMI)
Вызов удаленных методов в языке Java. Среда программирования на языке Java (она называется Java Development Kit — JDK) поддерживает технологию ПО промежуточного слоя RMI (Remote Method Invocation — вызов удаленных методов), которая позволяет распределенным Java-объектам общаться друг с другом. В этом случае вместо отправки сообщения некоторой процедуре (как в RPC) клиентский объект посылает сообщение другому объекту и вызывает метод этого объекта (процедуру или функцию).
Роль клиентской заглушки из RPC играет клиентский заместитель (Client proxy) — рис. 7.16. Заместитель предоставляет клиентскому объекту тот же интерфейс, что и серверный объект, и скрывает от клиента все детали коммуникации. Соответственно серверный заместитель выполняет функцию серверной заглушки, пряча детали коммуникации от серверного объекта. Серверный заместитель вызывает метод объекта. Если серверного объекта не существует, заместитель создает его.
Разные серверные объекты могут предоставлять один и тот же интерфейс, а значит, и обслуживать данный запрос клиента. Серверный объект, который будет обрабатывать запрос, выбирается во время выполнения.