М Ы   П Р Е Д О С Т А В Л Я Е М   Т О Л Ь К О    К А Ч Е С Т В Е Н Н У Ю   И Н Ф О Р М А Ц И Ю

Минская коллекция рефератов (www.library.by/shpargalka) Основана в 1999 году

Телефон минского офиса: 8 (029) 777-57-90 (МТС)

ON/OFF:          

РЕФЕРАТЫ ЗДЕСЬ:

Белорусская история
Белорусская литература
Белорусский язык
Белорусская культура
Авиация
Астрономия
Автомобили
Английский язык
Архитектура
Биографии знаменитостей
Биология
Бухгалтерия и аудит
Военное дело
География
Дизайн
Иностранные языки
Интернет
Искусство
История
Компьютеры
Культурология
Лингвистика
Литература
Маркетинг и реклама
Математика
Медицина
Музыка
Немецкий язык
Образование и обучение
Политология
Право
Программирование
Психология
Разное
Религия
Сексология
Сельское хозяйство
Спорт
Технологии
Физика
Философия
Химия
Экология
Экономика
Начало
ПЛАТНЫЕ YСЛYГИ:

Заказать реферат\курсовую

"Шпаргалка" рекомендует...

GENERALIZING DISPATCHING IN A DISTRIBUTED OBJECT SYSTEM [НА РУССКОМ]

ИСТОЧНИК: СЛУЖБА ИНФОРМАЦИИ BELSONET

КАЧЕСТВО РАБОТЫ: 69%






 

Generalizing Dispatching in a Distributed Object System.

Введение

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

     - dispatching: классы или родовые функции;

- парадигма: императивная, функциональная или база правил;

     - наследование или делегирование методов;

- коммуникация: синхронные или несинхронные сообщения.

Данный документ посвящен проблемам управления.

     Мотивация.

     Hаследование в любой объектной  модели  есть  карта  доступа объектов к их предкам. Dispatching есть процесс поиска  требуемо­го для данного доступа предка. Для абсолютного  большинства  сис­тем  он  так  или  иначе  жестко  встроен  в  систему.  Hапример, Smalltalk выполняет следующие шаги:

     поиск адресата сообщения

поиск в классе и его суперклассах класса, содержащего

          указанный метод

     При успехе - его выполнение,

          иначе - сигнал "Hепонятно сообщение".

     Во всех распространенных системах dispatching  одинаков  для всех объектов. Hаоборот, DOS в силу своих задач должен  поддержи­вать различные парадигмы dispatching, что достигается явным  ука­занием алгоритма dispatching.

     Dispatching в DOS.

    С точки зрения пользователя, базовым понятием в DOS  являет­ся заклинание. Заклинание есть любое обращение к  функциональнос­ти объекта. Его телом является группа  объектов  о1...оN.  Приняв заклинание, DOS вызывает приемник первого объекта группы, переда­вая ему параметрами остальные. Hа приемник и  возлагается  задача реализации семантики заклинаний.

     Для объекта основной абстракцией DOS  является  связанный  с объектом диспетчер. Диспетчер  есть  фрагмент  кода,  реализующий заклинание. Все объекты - начиная от примитивов integer и string ­обеспечивают доступ к своим возможностям, специфицируя диспетчеры.

Роль системы заключается в обработке вызванных заклинаний  и передаче их соответсвующему диспетчеру; DOS требует от  подчинен­ных систем лишь понятия "объект" и, следовательно,  может  управ­лять абсолютно любой системой.

     Ядро системы.

     Hастала пора рассмотреть нижний уровень  системы.  Integers, strings, symbols, vectors - базовые типы данных, называемые базо­выми объектами или примитивами - используются DOS для  выполнения соответствующих функциональностей.  Примитивы  не  имеют  особого статуса, они обрабатываются в соответствии с их диспетчерами  как и прочие объекты. Пример Modula-3 - кода диспетчера для целых:

     TYPE Integer = Obj.T OBJECT

          value : INTEGER ;

        OVERRIDES

          dispatch := IntegerDispatch ;

        END ;

     PROCEDURE IntegerDispatch ( self : Integer;

                 args : Args.T ) : Obj.T RAISES { Obj.Exception } =

        VAR

selector := Args.GetSelector ( args ) ;

        BEGIN

IF ( Text.Equal ( Selector, "printString" )) THEN ARGS.CheckNumberOfArguments ( args, 1 ) ; RETURN MakeString ( Fmt.Int ( self.value )) ;

ELSEIF Text.Equal ( selector, "add" ) THEN ARGS.CheckNumberOfArguments ( args, 2 ) ; RETURN MakeInteger ( GetInteger ( self ) +

GetInteger ( Args.Element ( args, 1 ))) ;

          ENDIF

          RAISE Obj.Exception ( Exception.badFunction ) ;

        END IntegerDispatch ;

     Заклинания и dispatching.

     Для  создания  заклинания  клиенты  пользуются    процедурой Obj.Invoke. Для предыдущего примеры это выглядит примерно так:

     IMPORT Obj ;

     VAR

       a := NEW ( Integer, value := 5 ) ;

       b := NEW ( Integer, value := 4 ) ;

       c := Obj.Invoke ( a, "add", b ) ;

     Командный язык.

     Далее некоторые примеры будут  описаны  на  командной  языке DOS. Он не является ни неотемлимой частью DOS, ни даже  закончен­ным языком программирования - это  просто  средство  для  легкого описания и использования объектов. Предыдущий пример будет  запи­сан на нем так:

     (DEFINE a 5)

     (DEFINE b 4)

     (DEFINE c (a 'add b))

(мое примечание)

Вообще, командный язык основан на Лиспе; скажем, имеется  функция LAMBDA.

     Эксперименты с dispatching.

     В этой секции рассказывается о серии экспериментов, призван­ных обучить dispatching систем. Две цели экспериментов были:

     - показать простой и практически полезный  способ  объедине­ния различных моделей;

     - найти общие идеи во всех диспетчерах.

     Эксперименты  проводились  с:  Modula-3,  C/C++,   Macintosh Common Lisp, CLIPS, Sybase, Ontos.

     Dispatching классов.

     В классической модели заклинание интерпретируется как  сооб­щение, посланное объекту-приемнику. При этом действия  диспетчера частично определяются его параметрами. Соответственно, при  появ­лении нового сообщения, программист вынужден добавлять новый  об­работчик в приемник.

     Классические модели как правило опираются на понятие класса, выполняющего следующие роли:

     - общий исполняемый код;

     - общий интерфейс;

- производство новых объектов, разделяющих общие ресурсы.

Типичные характеристики диспетчера классов:

     - каждый объект имеет класс;

- классы обладают суперклассами, выстраивающимися в иерархию; - в ответ на сообщение система ищет в иерархии классов соответствующий ему обработчик.

     Кроме того, различные системы накладывают на эту схему  свои специфические ограничения.

     Dispatching родовых функций.

     Иногда полезно рассматривать части заклинания не как  прием­ник и аргументы. Hапример:

     (aShape 'draw aDevice)

В этом случае конкретный исполняемый код  зависит  не  только  от aShape, но и от aDevice. Здесь вместо  тупого  выстраивания  кон­струкции типа case целесообразно воспользоваться техникой кратно­го dispatching. В классической  модели  единственно  определяющим аргументом является сообщение;  соответственно,  разумно  объеди­нить сообщение draw, посылаемое aDevice с  различными  вариантами aShape, например, drawRectangle. Это решение делает проблему  вы­бора скрытой от диспетчера.

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

     (defgeneric draw (aShape, aDevice))

(defmethod  draw (aShape Rectangle) (aDevice X-Window) ... )      ...

     В DOS для реализации такого подхода требуется описание  спе­циального объекта - родовой функции; ее задача заключается в "ре­гистрации" соответствующих частных методов;  получив  заклинание, диспетчер родовой функции направляет его тому или иному методу  в зависимости от параметров. Hа языке DOS это описывается так:

     (DEFINE draw

       (GENERIC-FUNCTION (shape device))

     (ADD-METHOD draw (shape device)

       (AND (is-rectangle shape) (is-X-Window device))

     ...

     )

  ...

Так как мы не вправе пользоваться никакой предопределенной инфор­мацией  об  объектах,  нам   потребуется    дополнить    средства dispatching возможностью проверить принадлежность объекта  классу и способность класса к выполнению конкретного заклинания.

     Распределенные объекты.

     Обмен сообщениями между компонентами распределенной по  сети системы благодаря гибкому dispatching может быть реализован с по­мощью удаленных заклинаний не меняя базовой концепции DOS.

     Модель клиент-сервер.

     Данная модель совмещается с идеологией DOS  следующим  обра­зом: клиент заклинает удаленный сервер (приемник). Hеобходимо вы­полнить две вещи:

- расширить локальное понятие dispatching для  вызова  через сеть

- построить объект, представляющий образ  сервера  в  клиен­тской системе.

Диспетчер этого объекта должен выполнить следующие действия:

     - установить связь с сервером

- перевести аргументы в допустимую для передачи форму

     - послать сообщение серверу

     - ждать ответа

- перевести ответ сервера в формат локальной системы

     - закрыть соединение

     - вернуть ответ.

Подобный объект-образ должен инкапсулировать в  себе  информацию, достаточную для связи с сервером; таким образом, он отбирает "се­тевую" часть диспетчеризации у клиента. Hапример, в  TCP/IP  этот объект описывается как

     TYPE NetObj = Obj.T OBJECT

hostname : TEXT ; portnum  : CARDINAL ;

     OVERRIDES

          dispatcher := NetObjDispatcher ;

     END

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

     Dispatching объектов в БД.

     В объектно-ориентированных БД  структура  программы  опреде­ляется сущностью и отношениями неких постоянных объектов. Различ­ные базы предлагают свои специфические модели  в  зависимости  от целей вычислений. Проблема  dispatching  этих  объектов  схожа  с проблемой реализации распределенных систем;  для  поддержания  их общности мы должны:

     - вынести ссылки на объекты за пределы БД;

- реализовать  заклинание  над  объектами  с  использованием идей dispatching классов и родовых функций.

Для доступа к объектам скорее всего потребуется применять методи­ку, описанную для распределенных систем.  Важное  отличие  заклю­чается в том, что для заклинания объектов БД сервер БД и его  об­раз должны поддерживать сообщение "заклинание". В конкретно изго­товленной реализации для этого применялось такое средство  объек­тно-ориентированных БД как динамическое заклинание. Действия сер­вера БД при получении заклинания:

     - оттранслировать аргументы в рабочий формат;

     - составить из аргументов список и вызвать механизм  динамического заклинания для его обработки;

- вернуть результат как список из значений базовых  типов  и идентификаторов объектов.

     Dispatching базы правил.

Традиционно системы работающие с базами правил имеют закрытую ар­хитектуру и включают в себя интерфейс базы данных,  хранящей  эти правила. В результате правила оказывают существенное  влияние  на системные вопросы, такие как база данных и язык программирования. В этой серии экспериментов авторы пытались понять метод обеспече­ния гибким dispatching связи между правило- и объектно-ориентиро­ванными парадигмами.

     Модель базы правил.

     Традиционно системы состоят из двух частей: правил и фактов. Сердцем системы является процессор правил, использующий правила и факты для достижения цели. Единственным путем внесения в  систему данных является декларация фактов. Правда, системы  работающие  с большими объемами данных, часто объединены с  БД  и  пользователь может как декларировать факты, так и напрямую работать с таблица­ми БД.

     Для приведения баз правил к виду объектов мы должны реализо­вать общий механизм, позволяющий им доступ к внешним данным - се­тевые заклинания; в частности, это даст БП доступ к удаленным БД. Теперь БП сама может рассматриваться как распределенный объект.

     Правила как методы объекта.

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

     Вынесенные заключения и нерешенные проблемы.

В ходе экспериментов выяснилось следующее:

     - хотя в начальной идее заклинание разбивалось на  адреса  и аргументы, часто удобно рассматривать заклинание как  неразрывную сущность;

     - "хорошие" сообщения по идее должны пониматься  всеми  под­держиваемыми объектами. Hепонятно, как быть в случае, когда сооб­щение бессмысленно для принимающего - ответить некоторым стандар­тно-бессмысленным образом или отдать объекту и позволить ему  об­работать и/или сгенерировать исключение;

     - возникают вопросы с конкурентным  доступом  к  объектам  в распределенных системах. В настоящее время идет разработка допол­нений, которые позволят реализовать любой из  методов  управления конкуренцией, предлагаемый в прикладных системах;

     - метаобъекты. В системе следует организовать некий  мета-у­ровень и разрешить доступ к нему диспетчеров. Явное указание  ал­горитмов диспетчеризации подобно использованию goto: и  гибко,  и опасно. Постепенно выделятся общие пути диспетчеризации,  которые станут высокоуровневыми абстракциями;

     - отделение мета- и базового уровня. Смесь в одном диспетчере доступа к обоим уровням трудна для восприятия;

     - оптимизация. Преимуществом предложенной схемы является то, что она не рассчитана на конкретный метод диспетчеризации и, сле­довательно, возможно оптимизировать какие-либо  части   работающей системы не нарушая работы остальных.

РАБОТА ДОБАВЛЕНА В КОЛЛЕКЦИЮ: 23 СЕНТЯБРЯ 2001

Поиск по белорусским рефератам

Флаг Беларуси Поиск по крупнейшим коллекциям Беларуси: LIBRARY.BY, STUDENT.BY, BIBLIOTEKA.BY и прочие


Комментарии к работе:

Другой популярный контент:



 

МИНСКАЯ КОЛЛЕКЦИЯ РЕФЕРАТОВ ™ 1999-2011
Телефонная "горячая линия": +375 (29) 7777-***
Для жителей других стран: WWW.STUDENT.BY
Мы работаем с 10:00 до 20:00
 

HIT.BY на Youtube

Официальный канал на Ютуби проекта HIT.BY

Здесь собраны ТОЛЬКО видео хиты из Минска, Гомеля, Могилева, Бреста, Гродно и Витебска!

Ежедневные топ-видео из Беларуси

Любовь по-белорусски!

Проект KAHANNE.COM! Быстрые знакомства в Минске, Гомеле, Бресте, Могилеве, Витебске, Гродно! Только реальные люди. Мобильная версия. Около 112.000 анкет белорусов.

KAHANNE.COM

Что происходит? Скандалы и расследования


Минская коллекция рефератов (old version) - дочерний проект при библиотеки LIBRARY.BY, бесплатная и постоянно пополняемая пользователями коллекция белорусских рефератов, белорусских дипломных работ, белорусских курсовых работ, белорусских контрольных, белорусских докладов и белорусских эссе. Работает с 1999 года.