Удаленные модули данных. Удаленный модуль данных для сервера Автоматизации.
Создадим, например, удаленный модуль данных simpleRDM. В мастере создания модуля данных в качестве способа создания выберем Single Instance, a Free – как модель обработки запросов.
Листинг 21.1. Исходный код нового удаленного модуля данных и его фабрики класса.
type
TSimpleRDM = class(TRemoteDataModuie, ISimpleRDM)
private
(Private declarations }
protected
class procedure UpdateRegistry(Register: Boolean;
const Classic,
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, Classic, 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.
Обратите внимание, что параметры модуля данных, заданные при создании, использованы в фабрике класса TComponentFactory в секции initialization.
Примечание
Фабрика класса TComponentFactory обеспечивает создание экземпляров компонентов Delphi, поддерживающих использование интерфейсов.
Метод класса UpdateRegistry создается автоматически и обеспечивает регистрацию и аннулирование регистрации сервера Автоматизации. Если параметр Register имеет значение True, выполняется регистрация, иначе – отмена регистрации.
Разработчик не должен использовать этот метод, т. к. его вызов осуществляется автоматически.
Одновременно с модулем данных создается и его интерфейс – потомок интерфейса IAppServer. Его исходный код содержится в библиотеке типов проекта сервера приложения. Для удаленного модуля данных simpleRDM созданный интерфейс isimpleRDM представлен в листинге 21.2. Для удобства из листинга удалены автоматически добавляемые комментарии.
