Архитектура распределенных систем программного обеспечения. Учебное пособие издано при поддержке образовательной программы Формирование
Скачать 1 Mb.
|
Объектно-ориентированный подход к распределенной обработке информацииРаспределенные объектыРис.2.13.Обобщеннаяорганизацияудаленныхобъектовсиспользованием заместителя объектов. Для распределенных систем разделение на объекты, характеризующиеся своим состоянием (данными), и интерфейсы, с помощью которых обеспечивается доступ к этим состояниям, особенно важно, поскольку позволяет помещать интерфейс на одну машину, имея сами объекты на другой. Обеспечивается такое распределенное представление информации тем, что при выполнении клиентской программой привязки к распределенному объекту (Рис.2.13), в ее адресное пространство загружается реализация интерфейса объекта, называемая заместителем (proxy). Заместитель клиента аналогичен переходнику при удаленном вызове процедуры. Он выполняет маршалинг параметров, упаковывая их в сообщениях при обращении к методам, и демаршалинг данных из ответных сообщений, содержащих результаты обращения к методам, передавая их клиенту. Сами объекты находятся на сервере. Входящий запрос на обращение к методу сначала попадает в серверный переходник, называемый скелетоном (skeleton), который преобразует его в правильное обращение к методу через интерфейс объекта. Серверный переходник также отвечает за маршалинг параметров в ответных сообщениях и их пересылку заместителю клиента. Объекты, создаваемые при компиляции и при выполненииПри программировании на объектно-ориентированном языке программист сам описывает классы (описания абстрактных типов в виде модулей, содержащих элементы данных и операции над этими данными) и вводит объекты – экземпляры классов. Работа с такими объектами в распределенной системе не представляет особых сложностей. Например, в языке Java объект может быть полностью описан в рамках своего класса и интерфейсов, которые этот класс реализует. Интерфейсы можно скомпилировать в переходники (клиентские и серверные), позволяющие обращаться к объектам Java, размещенным на удаленных машинах. Разработчик при этом работает только с текстом на языке Java. Объекты, создаваемые таким образом, явно зависят от языка, на котором пишется исходная программа. Однако создаваться объекты могут и во время исполнения программы. Такой подход применяется во многих распределенных системах, поскольку распределенные приложения, созданные в соответствии с ним, не зависят от конкретного языка программирования. В частности, приложение может работать с объектами, описанными на разных языках программирования. При работе с объектами времени исполнения способ реализации объекта остается открытым. Задача в том, чтобы превратить реализацию в объект, методы которого будут доступны с удаленной машины. Часто для этого используются адаптеры объектов, которые служат оболочками реализации с задачей придать реализации видимость объекта. Обычно, чтобы упростить процесс создания оболочки, объекты определяют исключительно в понятиях интерфейсов, которые они реализуют. Сохранные объектыОдно из важнейших свойств объекта – это его сохранность. Сохранный объект – это объект, продолжающий существовать, не находясь в адресном пространстве своего текущего сервера, то есть независящий от сервера. Практически это означает, что сервер, работающий с объектом, сохраняет его во вспомогательном запоминающем устройстве. Сервер может прекратить свою работу, но, возобновив ее, может прочитать состояние сохранного объекта и вновь приступить к обработке запросов на обращение к нему. Объекты, не обладающие этим свойством, существуют, только пока сервер ими управляет. |