Н, 3. Елманова. C++Builder 3.0, архитектура "клиент/сервер" и Internet
подобных систем  следует рассматривать различные  вопросы,   связанные с безопасностью их эксплуатации.
Теперь создадим новый проект - будущее клиентское приложение- Если он разрабатывается на том же компьютере, где создавался сервер приложений, можно добавить его к уже существующей группе проектов. Однако в общем случае клиентское приложение не обязано находиться на том же самом компьютере, где функционирует сервер приложений, - главное, чтобы к нему был возможен доступ по протоколу TCP/IP (с помощью локальной сети или Internet). Создадим главную форму, поместим на нее компонент TMidasConnection и установим его свойство ComputerName равным IP-адресу компьютера, на котором должен выполняться сервер приложе~ ний. Если этот компьютер в данный момент доступен в сети, можно выбрать его имя из списка, появляющегося при щелчке напротив имени этого свойства. Но нужно понимать, что в общем случае, особенно если клиентское приложение предназначено для доступа к серверу через Internet, указание именно IP-адреса является более предпочтительным.
Затем попробуем установить свойство ServerName компонента MIDASConnectionl (выбрав его из выпадающего списка, если клиентское приложение разрабатывается на том же самом компьютере, на котором на~ ходится сервер, или введя вручную в следующем формате: <имя исполняемого файла>.<имя ОЬЕ-сервера>, например AppSrv.MyRDM. ). После этого, если в реестре есть соответствующая запись, автоматически будет установлено значение свойства ServerGUID. Если сервер приложений 0е зарегистрирован на компьютере, где разрабатывается клиент, значенИе этого свойства должно остаться пустым, и это не помешает совместной работе сервера и клиента - ведь в общем случае при распространении клиентского приложения или ActiveX через Internet в реестре компьютера, где о^° будет выполняться, нет и не может быть сведений о сервере приложений.
Свойство Connected компонента MIDASConnectionl можно установить равным true (или произвести установку этого свойства равным true яа этапе выполнения в момент создания формы клиентского приложения). При этом сервер приложений, созданный ранее, должен автоматически запуститься, о чем будет свидетельствовать появившаяся на экране его главная форма. Если клиент и сервер приложений находятся на разных кс»мпьюте-pax, сервер приложений должен запуститься не на том компьютере, гДе Разрабатывается клиент, а на том, где зарегистрирован сервер, и имя которого указано в свойстве ComputerName компонента TMIDASConnectio л. Среда разработки C++Builder в этот момент является единственным клиентом сервера приложений, о чем свидетельствуют показания помещенного на его главную форму счетчика соединений.
Создание многозвенных информационных систем с помощью C++Builder 3.0
Теперь можно поместить на форму два компонента TClientDataSet, установить значения их свойства RemoteServer равным MIDASConnectionl, а затем поместить два связанных с ними компонента TDataSource.
После этого можно установить нужные значения свойств ProviderName компонентов TClientDataSet, выбрав их из выпадающего списка объектов, экспортированных из удаленного модуля данных сервера приложений (так как сервер приложений выбран, все его доступные через интерфейс свойства становятся видны в среде разработки). После этого можно установить связь master/detail между таблицами по общему полю ACCT_NBR (рис. 8.14).
SYMBOL SHARES PUR_PRICE PUR DATE
LAST NAME FIRSf.NAME ADDRESS 1 CITY STATE
Щ
d-i
ACCT NBR->ACCT NBR
Delete
Clear
OK
Cancel
Help
Puc. 8.14.  Установка связи между таблицами
Далее нужно установить значения свойства Active компонентов TClientDataSet равными true.
После этого можно заняться пользовательским интерфейсом, поместив на форму необходимые компоненты доступа к данным (рис. 8.15).
178
179