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