Один сервер приложения может содержать несколько удаленных модулей данных, которые, например, выполняют различные функции или обращаются к разным серверам БД. В этом случае процесс разработки серверной части не претерпевает изменений. При выборе имени сервера в компоненте удаленного соединения на стороне клиента (см. гл. 22)
будут доступны имена всех удаленных модулей данных, включенных в состав сервера приложения.
Однако тогда для каждого модуля понадобится собственный компонент соединения. Если это нежелательно, можно использовать компонент
TSharedConnection, но в этом случае в интерфейсы удаленных модулей данных необходимо внести изменения.
Для того чтобы несколько модулей данных были доступны в рамках одного удаленного соединения, необходимо выделить один главный модуль данных, а остальные сделать дочерними.
Рассмотрим, что же это означает для практики создания удаленных модулей данных. Суть идеи проста. Интерфейс главного модуля данных (разработчик назначает модуль главным, исходя из собственных соображений) должен содержать свойства, указывающие на интерфейсы всех других модулей данных, которые также необходимо использовать в рамках одного соединения на клиенте. Такие модули данных и называются дочерними.
Если такие свойства (свойство должно иметь атрибут только для чтения) существуют, все дочерние модули данных будут доступны в свойстве
ChildName Компонента TSharedConnection (см. гл. 20).
Например, если дочерний удаленный модуль данных носит название
Secondary, главный модуль данных должен содержать свойство Secondary:
ISimpleRDM = interface(lAppServer)
['{E2CBEBCB-1950-4054-B823-62906306E840}'] function Get_Secondary: Secondary;
safecall;
property Secondary: Secondary read
Get_Secondary;
end;
Реализация метода Get_secondary выглядит так:
function TSimpleRDM.Get_Secondary: Secondary;
begin
Result := FSecondaryFactory.CreateCOMObject(nil) as ISecondary;
end;
Как видите, в простейшем случае достаточно вернуть ссылку на вновь созданный дочерний интерфейс.
Полностью пример создания дочернего удаленного модуля данных рассматривается далее в этой главе.
Знаете ли Вы, как разрешается парадокс Ольберса? (Фотометрический парадокс, парадокс Ольберса - это один из парадоксов космологии, заключающийся в том, что во Вселенной, равномерно заполненной звёздами, яркость неба (в том числе ночного) должна быть примерно равна яркости солнечного диска. Это должно иметь место потому, что по любому направлению неба луч зрения рано или поздно упрется в поверхность звезды. Иными словами парадос Ольберса заключается в том, что если Вселенная бесконечна, то черного неба мы не увидим, так как излучение дальних звезд будет суммироваться с излучением ближних, и небо должно иметь среднюю температуру фотосфер звезд. При поглощении света межзвездным веществом, оно будет разогреваться до температуры звездных фотосфер и излучать также ярко, как звезды. Однако в дело вступает явление "усталости света", открытое Эдвином Хабблом, который показал, что чем дальше от нас расположена галактика, тем больше становится красным свет ее излучения, то есть фотоны как бы "устают", отдают свою энергию межзвездной среде. На очень больших расстояниях галактики видны только в радиодиапазоне, так как их свет вовсе потерял энергию идя через бескрайние просторы Вселенной. Подробнее читайте в FAQ по эфирной физике.