Метод класса UpdateRegistry создается автоматически и обеспечивает регистрацию и аннулирование регистрации сервера Автоматизации. Если параметр Register имеет значение True, выполняется регистрация, иначе - отмена регистрации.
Разработчик не должен использовать этот метод, т. к. его вызов осуществляется автоматически.
Одновременно с модулем данных создается и его интерфейс - потомок интерфейса iAppServer. Его исходный код содержится в библиотеке ТИПОВ проекта сервера приложения. Для удаленного модуля данных simpleRDM созданный интерфейс isimpleRDM представлен в листинге 21.2. Для удобства из листинга удалены автоматически добавляемые комментарии.
Листинг 21.2. Вновьсозданная библиотека типов для сервера.приложения р ! ; с исходным кодом интерфейса удалённого модуля данных к ■ '. - .: Т.!
^;.....|____^,.„т.,..„т+.,^„.т,т_____.........................................-.......'••..................................................._,__
ЫВЮ_5л.тр1еАррЗпгг: ТСЦЮ = ' { 93577575-0Г4Г-43В5-9ЕВЕ-А5745128О9А4 } ' ;
1Ю_1.51тр^0М: ТСиЮ = '(Е2СВЕВСВ-1950-4054-В823-62906306Е840}';
С1А53_51тр1еРОМ: ТСит = '{ОВ6А6463-5Г61-485Г-8Г23-ЕС6622091908}';
type
iSimpleRDM = interface;
ISimpleRDMDisp = dispinterface;
SimpleRDM = ISiirpleRDM;
ISiirpleRDM = interface (IAppServer)
['{E2CBEBCB-1950-4054-B823-62906306E840}*] end;
ISiirpleRDMDisp = dispinterface
['{E2CBEBCB-1950-4054-E823-62906306E840}']
function AS^ApplyUpdates(const ProviderName: WideString;
Delta: OleVariant;
MaxErrors: Integer;
out ErrorCount: Integer;
var CwnerData: OleVariant) : OleVariant;
dispid 20000000;
function ASj3etRecords (const PYovicterName: WideString;
Count: Integer;
out RecsOut: Integer;
Options: Integer;
const CommandText: WideString;
var Params;
OleVariant;
var CwnerData: OleVariant) : OleVariant;
dispid 20000001;
function AS__DataRequest (const ProviderNaire: WideString;
Data: OleVariant) : OleVariant;
dispid 20000002;
function AS_GetProviderNames: OleVariant;
dispid 20000003;
function AS_Get Pa rams (const ProviderNaire: WideString;
var CwnerData: OleVariant): OleVariant;
dispid 20000004;
function AS_RowRequest (const ProviderNaire: WideString;
Row: OleVariant;
RequestType: Integer;
var CwnerData: OleVariant) : OleVariant;
dispid 20000005;
procedure AS_Execute (const ProviderNaire: WideString; const
CornrandText: WideString;
var Params: OleVariant;
var CwnerData: OleVariant);
dispid 20000006;
end;
CoSimpleRDM = class
class function Create: ISirrpleRDM;
class function createRemote (const MachineNaire: string): ISirrpleRDM;
end;
inplarentaticn
uses ComOb j ;
Class function CoSimpleRDM.Create: ISiirpleRDM;
begin
Result := CreateComObject(CLASS_SimpleRDM) as ISiirpleRDM;
end;
class function CoSimpleRDM.CreateRemote (const MachineNaire: string) : ISiirpleRDM;
begin Result := CreateRemoteComObject(MachineName, CLASS_SimpleRDM)
as ISimpleRDM;
end; end.
Обратите внимание, что интерфейс isimpieRDM является потомком интерфейса iAppServer, рассмотренного выше.
Так как удаленный модуль данных реализует сервер Автоматизации, дополнительно к основному дуальному интерфейсу isimpieRDM автоматически создан интерфейс диспетчеризации iSimpleRDMDisp. При этом для интерфейса диспетчеризации созданы методы, соответствующие методам интерфейса IAppServer.