И.А. Волкова, И.Г. Головин, Л.Е. Карпов - Системы программирования (1114897), страница 30
Текст из файла (страница 30)
Примером системы, позволявшей создавать прикладные системы типаклиент/сервер на вызовах удаленных процедур, является система DCE (DistributedComputing Environment), предложенная группой Open Software Foundation (OpenGroup). Процесс подготовки программ на языке Си к работе выглядит в системе DCEтак:Генерация ключаФайл определения IDLКомпилятор IDLФайл-заголовок клиента/сервера (*.h)Код клиента/сервераКод переходника клиента/сервераКомпилятор СиКомпилятор СиМодуль клиента/сервераМодуль переходника клиента/сервераБиблиотекаКомпоновкаПрограмма клиента/сервера105В состав DCE входит много компонентов: языки, библиотеки, службы.Созданные клиенты и серверы могут оказаться самыми разными.
В основе их всех –язык IDL, в котором функции описываются образом, похожим на прототипы функций вязыке Си, а в файлах имеются определения типов и констант для маршалингапараметров и демаршалинга результатов.Первым шагом в подготовке программ клиента и сервера всегда является запусксистемной программы, которая создает прототип файла на языке IDL, содержащийуникальный ключ (идентификатор интерфейса), гарантированно не содержавшийся нив одном интерфейсе, созданном ранее, определения типов, констант, типов параметрови результатов функций. Этот прототип редактируется, в него вносятся именаудаленных процедур и их параметров, затем выполняется компиляция с IDL.
Этакомпиляция формирует три файла:•••файл-заголовок (например, "interface.h")файл клиентского переходникафайл серверного переходникаВ файл-заголовок из исходного описания на IDL передаются уникальныйидентификатор интерфейса, определения типов, констант и описания функций(прототипы). Клиентский переходник содержит те процедуры, которые будетнепосредственно вызывать клиентская программа. Эти процедуры непосредственноотвечают за подбор параметров и их упаковку в исходящие сообщения споследующими обращениями к системе для их отправки. Переходник также занимаетсяраспаковкой ответов, приходящих от сервера, и передачей значений, содержащихся вэтих ответах, клиенту. Серверный переходник организован также, но по отношению ксерверу.Следующий шаг – написание реальных программ клиента и сервера.
После ихкомпиляции и компоновки (с библиотечными добавками) формируются обеисполняемые программы – клиентская и серверная.В целом, DCE – это попытка стандартизовать понятие удаленного вызовапроцедуры. Впоследствии, когда широко распространились принципы и приемыобъектно-ориентированного программирования, система DCE также была расширена идополнена объектно-ориентированными языками.5.2. Технологии COM/DCOMТехнология COM (Component Object Model) и ее вариант для распределенныхсистем DCOM (Distributed COM) была разработана компанией Microsoft.
DCOMявляется расширением технологии СОМ и включает в себя среду распределенныхвычислений DCE и механизм удаленного вызова процедур.Общий подход при использовании той или технологии таков: клиентскаяпрограмма использует объекты своего программного сервера так, как если бы этиобъекты являлись частью клиентской программы. Основную роль, как и во всехсистемах клиент/сервер, играет интерфейс объектов, формируемый при помощинекоторого языка IDL, в данном случае – объектно-ориентированного. Клиент знает обиспользуемых объектах только их интерфейсы. Сервер предназначен для реализацииобъектов, он представляет собой программу, содержащую, кроме всего прочего, ещеодин или несколько объектов, построенных в соответствии с моделью СОМ.106Реализации объектов создаются на основе нескольких классов, каждый из которыхпредставляет различные варианты поведения объекта.Переходкобъектно-ориентированномувзаимодействиюпривелксущественному пересмотру модели удаленного вызова процедуры и появлению моделиудаленного обращения к методу.
Эта модель основана на объектно-ориентированномрасширении понятия вызова процедуры и понятии о распределенном объекте. Методывспомогательных объектов, включаемых в состав клиентского и серверногопереходников, которые строятся для реализации удаленного обращения к методу,имеют интерфейсы в точности соответствующие интерфейсам реальных удаленныхобъектов. Их реализации позволяют скрытым от пользователей образом организоватьмаршалинг и сериализацию параметров и возвращаемых значений методов.
Как и прииспользовании "классического" удаленного вызова процедуры, при удаленномобращении к методу не только клиент не знает о том, что взаимодействует с удаленнымсервером, но и сервер не знает, что обращение к нему осуществлено со стороны.Система автоматически строит взаимодействия клиента и сервера, независимоот того, как клиент и сервер распределены по компьютерам: они могут исполняться•••на одном компьютере в рамках единого процесса, при этом взаимодействиемежду клиентом и сервером происходит при помощи интерфейса объекта ведином адресном пространстве с использованием динамических библиотек.на одной машине в рамках разных процессов, при этом между клиентом исервером возникают два промежуточных звена, а схема взаимодействиястановится похожей на сокращенную схему удаленного обращения к методу(с переходниками, маршалингом и демаршалингом, но без выхода в сеть).на различных (вообще говоря, несовместимых друг с другом аппаратно иимеющих разные операционные системы) компьютерах в рамкахинформационной сети (технология DCOM), использующих модельудаленного обращения к методу полностью, включая сериализацию иобработку сообщений.Система СОМ не является системой программирования в классическомзначении этого термина.
Это, скорее, система библиотек компонентов и правил ихиспользования. Однако система COM содержит все элементы, необходимые дляпостроения распределенной системы, в частности, компонентную модель, библиотекиклассов, которые могут быть импортированы для анализа структуры серверов СОМ,универсальный протокол обмена между клиентами и серверами и другие.ТехнологиюСОМмогутподдерживатьсамыеразличныеязыкипрограммирования. В настоящий момент наиболее широко используются Visual Basic,Си++ и Delphi. Однако разработчик системы (компания Microsoft) объявила этутехнологию устаревшей и активно продвигает другой подход – технологию .NET.Основной недостаток технологии COM, который и привел к отказу от нее, этосерьезные ограничения в организации взаимодействия между разными платформами,которые постоянно возникают в глобальных сетях.
Определенными недостатками иограничениями обладает и выбранный для систем COM язык Microsoft IDL, в которомнедостаточно развиты средства объявления типов данных, из которых строитсяпрограмма. В целом, технологию COM/DCOM обычно используют для построениянебольших распределенных систем, имеющих не очень большое число узлов.1075.3. Брокеры объектов CORBAБолее адекватно соответствующим принципам построения распределенныхсистем, чем системы "клиент-сервер", надо признать системы не двухуровневые, аимеющие, по крайней мере, еще один "промежуточный" уровень, позволяющийразделить решаемые задачи на "клиентские" и "серверные" части.
В двухуровневыхсистемах клиентские части чаще всего связаны с отображением данных в виде,адекватно соответствующем конкретной прикладной области, назначение серверныхчастей – выполнять основные прикладные программы и программы системнойподдержки. Наличие промежуточного уровня (для обозначения которого частоиспользуется англоязычный термин middleware) существенно расширяет возможностираспределенных систем. Системы "клиент-сервер" в качестве одной из самых своихсерьезных проблем имеют ограниченность возможностей сервера по связи со многимиклиентами одновременно.
Двухъярусные архитектуры не справились с требованиями,предложенными разработчиками локальных информационных сетей. Их появлениезаставило разработчиков предпринять меры по интеграции серверов, а для размещенияпрограмм, ответственных за эту интеграцию, наилучшим образом подходилпромежуточный уровень трехуровневых систем. Однако простой интеграциейпреимущества новых систем не ограничиваются.
Трехуровневые системы обладаютсвойством масштабируемости в значительно большей степени. Если системы "клиентсервер" привели к стандартизации интерфейсов прикладного слоя, то их развитиепозволило стандартизовать интерфейсы слоя управления ресурсами, а это привело квозможности интеграции в рамках одной системы самых разнородныхинформационных ресурсов. Возникли даже попытки стандартизовать глобальныесвойства и интерфейсы между разными системными платформами на основе объектноориентированного подхода.
Одним из примеров такой стандартизации являетсястандарт брокера объектов CORBA (Common Object Request Broker Architecture).Брокером объектов называют распределенные системы программного обеспечения,основанные на использовании понятия распределенного объекта и модели удаленногообращения к методам этого объекта, являющейся объектно-ориентированнымрасширением модели удаленного вызова процедуры.Стандарт CORBA – это спецификация для создания и управления объектноориентированными приложениями, распределенными в вычислительной сети. Внастоящее время выработано несколько версий стандарта CORBA, первая из которыхбыла разработана в начале 90-х годов консорциумом Open Management Group,включавшим более 800 компаний.