Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
KNit-09_zach_Otvety.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
138 Кб
Скачать
☆

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

Рассмотрим, каким образом одна часть программного обеспечения должна получать доступ к сервисам, предоставляемым другой частью. На сегодняшний день ответ зависит от того, что представляют собой эти части (см. рис. 2.4). В отсутствие СОМ для доступа к сервисам, предоставляемым библиотеками, локальными процессами, операционной системой или удаленными процессами применяются разные механизмы.

Приложения, например, скомпонованные с библиотекой, могут пользоваться ее сервисами, вызывая функции из этой библиотеки. Приложение также может использовать сервисы другого приложения, являющегося совершенно отдельным процессом. В этом случае два таких локальных процесса взаимодействуют посредством некоего механизма связи, который обычно требует определения протокола между этими приложениями (набор сообщений, позволяющий одному приложению выдавать запросы, а другому соответствующим образом отвечать на них). Еще пример - приложение, использующее сервисы операционной системы. Здесь приложение обычно выполняет системные вызовы, обрабатываемые операционной системой. Наконец, приложению могут понадобиться сервисы, предоставляемые программным обеспечением, выполняемым на другой машине, доступ к которой осуществляется по сети. Получить доступ к таким сервисам можно множеством способов, таких как обмен сообщениями с удаленным приложением или вызовы удаленных процедур.

В принципе проблема одна: одна часть программного обеспечения должен получить доступ к сервисам, предоставляемым другой частью. Но в каждом отдельном случае механизм доступа разный: вызовы локальных функций, передача сообщения средствами связи между процессами, системные вызовы (которые с точки зрения программиста выглядят практически так же, как и вызовы функций) или какая-то разновидность сетевых коммуникаций.

Разнообразие механизмов доступа существенно усложняет процесс интеграции приложений. Более целесообразно определить один общий способ доступа ко всем видам программных сервисов независимо от способа их реализации. Этим и занимается СОМ. Она определяет стандартный механизм, с помощью которого одна часть программного обеспечения предоставляет свои сервисы другой и который работает во всех описанных выше случаях. Общая архитектура сервисов в библиотеках, приложениях, системном и сетевом программном обеспечении позволяет СОМ изменить подход к созданию программ.

33//////////////////////////////////////////////////////////////////////////////////////////////////33/////////////////////////////////////////////////////////////////////////////////////////////////////33

Доступ к сервисам приложений с использованием com.

В СОМ приложение обращается к сервисам объекта (независимо от того, где последний расположен), вызывая методы некоторого интерфейса.

Любой СОМ-объект - это экземпляр определенного класса. Объекты одного класса могут, например, реализовывать сервисы корректировки орфографии и словаря синонимов, тогда как объекты другого класса - представлять банковские счета. Обычно знать класс объекта необходимо для запуска экземпляра этого объекта, выполняемого с помощью библиотеки СОМ. Эта библиотека присутствует на любой системе, поддерживающей СОМ, и имеет доступ к справочнику всех доступных на данной машине классов СОМ-объектов. Клиент может, например, вызвать функцию библиотеки СОМ, передав ей класс нужного ему СОМ-объекта и задав один из поддерживаемых объектом интерфейсов, указатель которого нужен клиенту в первую очередь. Эти сервисы реализованы библиотекой СОМ в виде обычных вызовов функций, а не через методы интерфейса СОМ. Затем библиотека СОМ запускает сервер, реализующий объекты данного класса. Кроме того, библиотека возвращает клиенту указатель требуемого интерфейса вновь созданного экземпляра объекта. Далее клиент может запросить указатели на другие необходимые ему интерфейсы непосредственно у самого объекта.

Получив указатель на нужный ему интерфейс выполняющегося объекта, клиент может использовать сервисы объекта, просто вызывая методы этого интерфейса. С точки зрения программиста, вызов метода аналогичен вызову локальной процедуры или функции. Но на самом деле код, выполняющийся по вызову метода, может быть частью или библиотеки, или отдельного процесса, или операционной системы и даже располагаться вообще на другом компьютере. Благодаря СОМ, клиентам нет нужды учитывать данные отличия - доступ ко всему осуществляется единообразно. Для доступа к сервисам, предоставляемым любыми типами программного обеспечения, используется одна общая модель (см. рис. 2.5).

Для вызова методов СОМ-объекта клиент должен обладать одним или несколькими указателями на интерфейсы данного объекта. Объект и его методы могут быть реализованы как в том же процессе, что и клиент, так и в отдельном процессе. Однако независимо от того, где реализован объект, вызов методов клиентом осуществляется одинаково.

Иногда этого можно достигнуть прямым вызовом метода клиентом. Иногда же для связи и передачи параметров за пределы текущей задачи приходится применять так называемый маршалинг (marshalling) или выстраивание.

Маршалингом называется процесс упаковки параметров вызова в стандартный формат для пересылки. Необходимость стандартного формата обусловлена тем, что разные процессы, выполняемые на одной машине могут быть реализованы на разных языках программирования, и иметь разный формат представления одной и той же информации, например, вещественных чисел и т. п. Обратная операция распаковки из стандартного формата в форму, приемлемую для принимающего процесса называется демаршалингом.

34//////////////////////////////////////////////////////////////////////////////////////////////////////////////34///////////////////////////////////////////////////////////////////////////////////////34

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]