Программирование в Delphi 7

Рис21.1. МастерсозданияудаленногомодуляданныхТРегтю1е0а1аМоаше

Строка CoClass Name должна содержать имя нового модуля данных, которое будет также использовано для именования нового класса, создаваемого для поддержки нового модуля данных.

Список Instancing позволяет задать способ создания модуля данных.

П Internal - модуль данных обеспечивает функционирование лишь внутреннего сервера Автоматизации.

• Single Instance - для каждого клиентского соединения создается собственный экземпляр удаленного сервера Автоматизации в собственном процессе.

□ Multiple Instance - для каждого клиентского соединения создается собственный экземпляр удаленного сервера Автоматизации в одном общем процессе.

Список Threading Model задает механизм обработки запросов клиентов.

□ Single - поток запросов клиентов обрабатывается строго последовательно.

□ Apartment - модуль данных одновременно обрабатывает один запрос. Однако если DLL для выполнения запросов создает экземпляры СОМ объектов, то для запросов могут создаваться отдельные нити, в которых обработка ведется параллельно.

□ Free - модуль данных может создавать нити для параллельного выполнения запросов.

О Both - аналогична модели Free, за исключением того, что все ответы клиентам возвращаются строго один за другим.

□ Neutral - запросы клиентов могут направляться модулям данных в нескольких нитях одновременно. Используется только для технологии СОМ+.

При создании нового удаленного модуля данных создается специальный класс - наследник класса TRemoteDataModule. И фабрика класса на основе Класса TComponentFactory

( ш Примечание )

Класс TComponentFactory представляет собой фабрику класса для компонентов Delphi, инкапсулирующих интерфейсы. Поддерживает интерфейс IClassFactory.

Создадим, например, удаленный модуль данных simpleRDM. В мастере создания модуля данных в качестве способа создания выберем Single Instance, а Free - как модель обработки запросов.

Листинг21.1. Исходный код нового удаленного модуляданных и его фабрики класса

type

TSimpleRDM = class(TRemoteDataModule, ISimpleRDM)

private

{ Private declarations } protected

class procedure UpdateRegistry(Register: Boolean; const ClassID,

ProgID: string); override; public

{ Public declarations } end;

implementation

{$R *.DFM}

class procedure TSimpleRDM.UpdateRegistry(Register: Boolean;
const ClassID, ProgID: string);

begin if Register then

begin
inherited UpdateRegistry (Register, ClassH), ProgID);
EnableSocketTransport(ClassID);
EnableWebTransport(ClassID) ;
end else begin
DisableSocketTransport(ClassID);
DisableWebTransport(ClassID) ;
inherited UpdateRegistry (Register, ClassID, ProgID);
end;
end;

initialization

TComponentFactory.Create(ComServer, TSimpleRDM, Class_SimpleRDM, ciMultilnstance, tmApartment);

end.

Обратите внимание, что параметры модуля данных, заданные при создании, И(ЛСЯЬЗОВань1 В фабрике класса TComponentFactory В секции initialization.

( Примечание )

Фабрика класса TComponentFactory обеспечивает создание экземпляров компонентов Delphi, поддерживающихиспользование интерфейсов.


⇐ Предыдущая страница| |Следующая страница ⇒

Программирование в Delphi 7



Новости за месяц

  • Декабрь
    2017
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс