E1Distributed operating system project
ГлавнаяАрхитектура Е1ДокументыКоманда
Rus
Eng
Архитек...Разработка ПО
Архитектура E1
Концепциии E1
Распределенный объект
Обзор архитектуры
Домены защиты
Междоменные вызовы
Потоки
Компонентные сервисы
Репликация
Разработка ПО
Разработка программного обеспечения для Е1

Программное обеспечение Е1 состоит из распределенных реплицированных объектов. В данном разделе представлен взгляд на Е1 со стороны разработчика объектов. Мы в общих чертах рассмотрим методологию создания распределенных объектов, а также необходимые для этого инструменты.

Распределенный объект состоит из объектов семантики и объектов репликации, разрабатываемых, как правило, различными сторонами. В большинстве случаев, разработчик объекта имплементирует объект семантики и указывает одну или несколько стандартных стратегий репликации, которые могут для него использоваться. Реже стратегия репликации разрабатывается специально для конкретного объекта семантики.

Е1 поддерживает компонентную модель разработки ПО. Для этого в состав ОС включены сервисы, расширяющие модель распределенных объектов до компонентной модели: Реестр Объектов, Сервер Контроля Доступа, Сервер Глобального Именования, система сборки мусора. Частью компонентной модели Е1 является также язык описания интерфейсов (IDL), делающий возможной бинарную интероперабельность компонентов, написанных на различных языках программирования.

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

  • описание структур данных, используемых в качестве параметров или возвращаемых значений методами объекта;
  • уникальный идентификатор класса объекта, а также идентификаторы его интерфейсов;
  • описание методов каждого интерфейса: имя метода, типы аргументов и возвращаемых значений, направление передачи аргументов, а также дополнительная метаинформация, которая может использоваться при компиляции объекта репликации. Например, для метода может быть указан один из атрибутов: [read],[modify].

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

Цикл разработки распределенного объекта

Цикл разработки распределенного объекта

Распределенные объекты могут разрабатываться не только при помощи языка С++, но и любых других языков программирования, для которых может быть построено отображение в объектную модель Е1 и реализованы соответствующие компиляторы. Как и в других компонентных системах, для разработки объектов Е1 могут применяться компонентно-ориентированные языки программирования. Эти языки лучше, чем С++, адаптированы для разработки компонентного ПО.

Copyright E1 Team 2003
mail:team@E1OS.org