Удаленные модули данных. Удаленный модуль данных для сервера Автоматизации.
Создадим, например, удаленный модуль данных 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. Для удобства из листинга удалены автоматически добавляемые комментарии.