Распределенные системы: технология Borland Midas. Часть 3. Фертиков В.В. - 12 стр.

UptoLike

Составители: 

12
TCorbaConnection состоит в том, чтобы найти и соединиться с сервером
приложений . Поскольку они управляют соединениями сервера, можно также
использовать компоненты связи для вызова методов интерфейса сервера при-
ложений . Рассмотрим решение этих двух задач подробнее.
Перед поиском и соединением с сервером приложений необходимо уста-
новить свойства компонента связи, которые однозначно определяют сервер
приложений . Соединение открывается автоматически, когда набор данных кли-
ента обращается к серверу приложений . Компонент связи разрывает соедине-
ние с сервером приложений , если:
устанавливается значение False свойства Connected;
уничтожается компонент;
изменяется какое- либо из свойств , однозначно определяющих сервер при-
ложений (ServerName, ServerGUID, ComputerName).
Эти свойства также позволяют переключаться между серверами прило-
жений во время исполнения клиентского приложения: при их изменении ком-
понент разрушает текущее соединение и устанавливает новое. Можно исполь-
зовать вместо одного компонента связи для переключения между серверами
приложений несколько компонентов связи.
Что касается второй задачи, то приложениям в большинстве случаев нет
необходимости вызывать интерфейс IAppServer непосредственно, потому что
соответствующие запросы делаются автоматически при использовании свойств
и методов набора данных клиента. В то же время, при добавлении к интерфейсу
своих собственных методов возникает необходимость прямого вызова интер -
фейса. Для этого можно использовать свойство AppServer компонента связи.
Например (на языке Object Pascal):
MyConnection.AppServer.MyMethod(x,у);
Этот способ обеспечивает позднее связывание вызовов интерфейса свя-
зывание, которое происходит только во время исполнения, то есть в момент вы-
зова данного метода. Позднее связывание является очень гибким , но при его
использовании теряется много преимуществ , таких как проверка типов и про-
смотр непосредственно реализации метода. Кроме того , позднее связывание ра-
ботает более медленно , чем раннее, поскольку компилятор генерирует некото-
рые дополнительные вызовы интерфейса для посылки на сервер прежде, чем
будет вызван данный «полезный» метод .
Способ и возможности реализации раннего связывания зависят от выбо -
ра протоколов . Для использования раннего связывания с DCOM, библиотека
типов сервера должна быть зарегистрирована на клиентской машине. Для этого
надо использовать утилиту TRegsvr.exe, которая распространяется вместе с
Delphi. Для использования раннего связывания с CORBA надо добавить в сек -
цию uses программный модуль, у которого в имени есть расширение _tlb
(этот файл генерируется при создании библиотеки типов ).
При работе с протоколами TCP/IP или OLEnterprise нельзя использовать
раннее связывание, но поскольку удаленный модуль данных использует дуаль-
ный интерфейс, можно использовать диспинтерфейс (dispinterface) для улучше-
                                    12
TCorbaConnection – состоит в том, чтобы найти и соединиться с сервером
приложений. Поскольку они управляют соединениями сервера, можно также
использовать компоненты связи для вызова методов интерфейса сервера при-
ложений. Рассмотрим решение этих двух задач подробнее.
      Перед поиском и соединением с сервером приложений необходимо уста-
новить свойства компонента связи, которые однозначно определяют сервер
приложений. Соединение открывается автоматически, когда набор данных кли-
ента обращается к серверу приложений. Компонент связи разрывает соедине-
ние с сервером приложений, если:
• устанавливается значение False свойства Connected ;
• уничтожается компонент;
• изменяется какое-либо из свойств, однозначно определяющих сервер при-
   ложений (ServerName , ServerGUID , ComputerName ).
      Эти свойства также позволяют переключаться между серверами прило-
жений во время исполнения клиентского приложения: при их изменении ком-
понент разрушает текущее соединение и устанавливает новое. Можно исполь-
зовать вместо одного компонента связи для переключения между серверами
приложений несколько компонентов связи.
      Что касается второй задачи, то приложениям в большинстве случаев нет
необходимости вызывать интерфейс IAppServer непосредственно, потому что
соответствующие запросы делаются автоматически при использовании свойств
и методов набора данных клиента. В то же время, при добавлении к интерфейсу
своих собственных методов возникает необходимость прямого вызова интер-
фейса. Для этого можно использовать свойство AppServer компонента связи.
Например (на языке Object Pascal):
MyConnection.AppServer.MyMethod(x, у);

      Этот способ обеспечивает позднее связывание вызовов интерфейса – свя-
зывание, которое происходит только во время исполнения, то есть в момент вы-
зова данного метода. Позднее связывание является очень гибким, но при его
использовании теряется много преимуществ, таких как проверка типов и про-
смотр непосредственно реализации метода. Кроме того, позднее связывание ра-
ботает более медленно, чем раннее, поскольку компилятор генерирует некото-
рые дополнительные вызовы интерфейса для посылки на сервер прежде, чем
будет вызван данный «полезный» метод.
      Способ и возможности реализации раннего связывания зависят от выбо-
ра протоколов. Для использования раннего связывания с DCOM, библиотека
типов сервера должна быть зарегистрирована на клиентской машине. Для этого
надо использовать утилиту TRegsvr.exe, которая распространяется вместе с
Delphi. Для использования раннего связывания с CORBA надо добавить в сек-
цию uses программный модуль, у которого в имени есть расширение _tlb
(этот файл генерируется при создании библиотеки типов).
      При работе с протоколами TCP/IP или OLEnterprise нельзя использовать
раннее связывание, но поскольку удаленный модуль данных использует дуаль-
ный интерфейс, можно использовать диспинтерфейс (dispinterface) для улучше-