Понятие и назначение программного обеспечения промежуточного уровня
Для поддержки разнородных компьютеров и различных способов связи между ними распределенные системы часто реализуют в виде специального программного уровня, логически располагающего между прикладным программным обеспечением и операционными системами (ОС). Поэтому соответствующее программное обеспечение, собственно реализующее функционал распределенной системы, и называют программным обеспечением промежуточного уровня (англ. middleware). Этот логический программный уровень призван обеспечивать дополнительное абстрагирование приложений от базовых платформ и скрывать их неоднородность от пользователей и приложений, а также предоставлять подходящую модель программирования для разработчиков. При этом в ПО промежуточного уровня часто предпринимаются серьезные попытки замаскировать от разработчиков прикладного программного обеспечения распределение процессов и ресурсов по множеству компьютеров и скрыть нарушение некоторых допущений из представленных выше восьми заблуждений П. Дейча.
Рис. 1.2. Общая структура программных компонентов в распределенной системе.
ПО промежуточного уровня выполняется на нескольких компьютерах и предоставляет приложениям единый унифицированный интерфейс.
На рис. 1.2 показаны три компьютера, объединенные в сеть, и два приложения, причем "Приложение А" является распределенным среди
компьютеров 1 и 2. ПО промежуточного уровня предоставляет всем приложениям единый унифицированный интерфейс, с помощью которого могут взаимодействовать как программные компоненты одного распределенного приложения А, так и различные приложения А и В между собой.
Стоит отметить, что без использования программного обеспечения промежуточного уровня приложения по-прежнему могут взаимодействовать, используя средства сетевых операционных систем. В этом случае связь приложений или программных компонентов одного распределенного приложения можно реализовать через операции с сокетами транспортного уровня, которые позволяют процессам на разных компьютерах обмениваться сообщениями с помощью простейших примитивов send() и receive(). Общая структура взаимодействия с использованием средств сетевых операционных систем приведена на рис. 1.3.
Рис. 1.3. Общая схема взаимодействия с помощью средств сетевой операционной системы.
Однако сложности такого подхода заключаются в том, что наличие распределения становится слишком очевидным. Совершенно ясно, что уровень абстракции сокетов оказывается недостаточным для написания эффективных приложений. В этом случае разработчику необходимо реализовывать взаимодействие в явном виде, а приложению – точно знать конечную точку соединения, т.е. где выполняется другой программный компонент, с которым осуществляется взаимодействие. Кроме того, если требуется, чтобы распределенное приложение работало на различных
операционных системах, разработчику пришлось бы иметь дело с разнообразными платформами. И наконец, с точки зрения эксплуатации подобных систем, отсутствие единого представления часто приводит к тому, что и управлять независимыми компьютерами приходится исключительно независимо. В этом случае страдает простота использования.
В свою очередь, основная задача программного обеспечения промежуточного уровня заключается в обеспечении прозрачности взаимодействия путем предоставления высокоуровневых средств связи, скрывающих низкоуровневую пересылку сообщений по компьютерной сети. В этом случае интерфейс программирования транспортного уровня, предоставляемый сетевой операционной системой, полностью заменяется другими средствами. Например, различные системы ПО промежуточного уровня поддерживают такие абстракции, как удаленный вызов процедур, обращения к удаленным объектам, групповую коммуникацию среди нескольких процессов, механизмы публикации / подписки, уведомления о событиях, прозрачное обращение к реплицированным ресурсам и др.
Поддерживаемые абстракции, по сути, определяют соответствующую модель (и систему) программирования, на которой базируется программное обеспечение промежуточного уровня и которая призвана обеспечивать удобство разработки и отладки распределенных приложений. В качестве примера ранних, но до сих пор популярных моделей ПО промежуточного уровня можно привести модель удаленного вызова процедур, основанную на реализации Sun RPC (англ. Remote Procedure Call), и модель групповой коммуникации, представленную в системе ISIS. Другой распространенной моделью является объектно- ориентированное ПО промежуточного уровня, когда приложение представляется в виде распределенных объектов (англ. distributed objects), размещенных на различных сетевых компьютерах и взаимодействующих посредством вызова методов, доступных через соответствующие интерфейсы. В этом случае вызывающий процесс может оказаться неосведомленным о том, что обращается к удаленному объекту, и о том, что при этом имеет место факт сетевого обмена. Примерами такого ПО промежуточного уровня являются архитектура CORBA (англ. Common Object Request Broker Architecture), созданная Object Management Group, модель удаленного обращения к методам в Java RMI (англ. Remote Method Invocation) и модель распределенных объектных компонентов DCOM (англ. Distributed COM) компании Microsoft, реализованная поверх различных операционных систем Windows.
Стоить отметить, что использование ПО промежуточного уровня не означает, что приложение не может напрямую обратиться к интерфейсам базовой операционной системы, однако такой подход не приветствуется, и в задачи распределенной системы входит предоставление более или менее
полного набора служб, позволяющего избежать подобного стремления. Например, архитектура CORBA включает в себя службы именования, безопасности, службы событий и уведомлений, службы транзакций службы сохранности и другие службы. Очевидно, в этом случае, реализуемые сервисы тесно связаны с моделью программирования, предоставляемой программным обеспечением промежуточного уровня.
Современные распределенные системы промежуточного уровня обычно создаются для работы на нескольких платформах. При этом прикладные приложения разрабатываются для конкретной системы промежуточного уровня и уже не зависят от платформы (операционной системы). Однако, к сожалению, эта независимость часто подменяется жесткой зависимостью от конкретного ПО промежуточного уровня, т.к. во многих случаях последнее значительно менее открыто, чем утверждается. Тем не менее, инструментарий, предоставляемый распределенными системами промежуточного уровня, оказывается настолько богатым, что целесообразность их применения очень часто не вызывает сомнения.
Таким образом, основная разница между сетевыми операционными системами и распределенными системами промежуточного уровня состоит в том, что в последних делается серьезная попытка максимально скрыть от пользователей и разработчиков прикладного программного обеспечения ее распределенную природу, т.е. добиться представления единой централизованной компьютерной системы.
Do'stlaringiz bilan baham: |