Delphi: Пишем шаблон клиент-серверного приложения

Продолжая тему разработки собственной утилиты администрирования, в данной статье я рассмотрю типовой шаблон программы клиент-сервер, на базе которой можно разрабатывать собственные клиент-серверные приложения. Данный типовой шаблон для простоты понимания и удобства применения будет рассмотрен на примере компонентов ClientSocket и ServerSocket.
Для тех, кто не в курсе, что значит клиент-серверное приложение, поясню: это комплекс программ (модулей) состоящий из двух частей — клиентской и серверной. Серверная часть является «главной»- так называемый командный пункт, на который возложена задача поддержания связи со всеми клиентами и раздача команд управления, соответствующих их функционалу (управление клиентами). Клиентская же часть является второстепенной, но не менее важной, так как является важным и связующим элементом, позволяющим выполнять удаленные команды (функции) на компьютере, на котором установлен.
>Компоненты ClientSocket и ServerSocket, которые мы будем использовать, находятся на вкладке Internet. Если на этой вкладке у Вас нет этих компонентов (а по умолчанию при установке Delphi7 они не ставятся), необходимо установить их самостоятельно (пакет dclsocketsXX.bpl). Данный пакет можно найти на установочном диске Delphi7 (или в папке «C:\Temp», куда распаковывается дистрибутив перед установкой — «C:\Temp\delphi7\install\program files\borland\delphi7\bin\») или можете его скачать отсюда. Чтобы установить данный пакет, запустите Delphi7. Зайдите в меню Component->Install Packages. В появившемся окне нажмите кнопку «Add» и укажите место, где расположен пакет dclsocketsXX.bpl. После этого жмите ОК. Компонент на месте.
Надеюсь все объяснил доступно =). А теперь приступим к делу и начнем мы с серверной части. Для этого создадим проект и скинем на форму компонент ServerSocket. В настройках компонента ServerSocket укажем следующее:
Active = false
Name = ss
Port = 4321
ServerType = stNonBlocking
А также для удобства скинем компонент Memo, в который будем выводить всякую инфу. Дадим имя компоненту log.
Далее, для компонента ServerSocket определяем метод onClientConnect, чтобы определять момент подключения клиентов. Вставим следующий код:
Создание клиент-серверного приложения в Delphi
1. Таблица первая, назовем ее First
|
Ну вот, как бы, с базой и все.
Программа
2.1. Приложение сервер.
Созданим новое приложение и сохраним его под именем Server в папке C:\ClientServer\Server. Добавим в приложение Remote Data Module с вкладки Multitier репозитария (Рис. 1).
Все остальное оставим без изменений. После нажатия кнопки «Ок» в проекте появится форма подобная обычному дата модулю с именем Test. Сохраним ее под именем RDMFrm.pas.
У компонентов DataSetProvider:
| ||||||||||||||
2.2. Приложение клиент
Создадим новое приложение, и сохраним его в папке C:\ClientServer\Client под именем Client. Разместим на главной форме по два компонента ClientDataSet(обзовем их cdsFirst, cdsSecond), DataSource(обзовем их dsFirst, dsSecond), DBGrid(обзовем их dbgFirst, dbgSecond) один компонент SocetConnection.
SocetConnection
Если вы все сделали правильно, то при установке свойства Connected в True, должно запустится приложение сервер.
ClientDataSet
| ||||||||||||||||
Запустим Редактор Полей (двойной клик по компоненту) и занесем туда все поля. Для компонентов ClientDataSet напишем обработчик sdsAfterPost
И подставим его на обработку события AfterPost обоих ClientDataSet’ов.
DataSource
|
DBGrid
|
Запустим Редактор колонок (двойной клик по компоненту) и занесем туда все поля.
Положим на форме возле Гридов по кнопке и в обработчик onClick запишем:
Все. Закрываем Делфи (для чистоты эксперимента). И запускаем приложение клиент. Если вы все сделали правильно то вы должны увидеть нечто подобное этому
Если статья получит отзывы и заслужит интерес у читателей, то продолжение не заставит себя долго ждать.
Создание простейшего клиент-серверного приложения в Делфи
Автор: © Aleksandr Shevchuk
Раз приложение простейшее, то я решил использовать БД MS Jet 4.0 (проще говоря БД MS Access). Это решение вызвано тем что Jet (прошу не путать с MS Access) является бесплатным продуктом и поставляется вместе с MS Windows (то бишь для работы нашей программы ненужно устанавливать на компьютер клиента сам Access). Да и редактор БД очень неплохой, и ядро поддерживает кучу типов полей для удовлетворения самых извращенных желаний при хранении данных.
Ну вот, как бы, с базой и все.
2.1. Приложение сервер.
Созданим новое приложение и сохраним его под именем Server в папке C:\ClientServer\Server. Добавим в приложение Remote Data Module с вкладки Multitier репозитария (Рис. 1).
У компонентов DataSetProvider:
| ||||||||||||||
2.2. Приложение клиент
Создадим новое приложение, и сохраним его в папке C:\ClientServer\Client под именем Client. Разместим на главной форме по два компонента ClientDataSet(обзовем их cdsFirst, cdsSecond), DataSource(обзовем их dsFirst, dsSecond), DBGrid(обзовем их dbgFirst, dbgSecond) один компонент SocetConnection.
Если вы все сделали правильно, то при установке свойства Connected в True, должно запустится приложение сервер.
ClientDataSet
| ||||||||||||||||
Запустим Редактор Полей (двойной клик по компоненту) и занесем туда все поля. Для компонентов ClientDataSet напишем обработчик sdsAfterPost
И подставим его на обработку события AfterPost обоих ClientDataSet’ов.
DataSource
|
DBGrid
|
Все. Закрываем Делфи (для чистоты эксперимента). И запускаем приложение клиент. Если вы все сделали правильно то вы должны увидеть нечто подобное этому
Разработка клиент-серверного приложения на Delphi
В этой статье я постараюсь поделиться опытом по созданию клиент-серверных приложений с использованием стандартных компонентов Indy HTTPServer и Indy HTTPClient.
Создадим 2 проекта: MyServer.dpr и MyClient.dpr. На главную форму MyServer добавим компонент TIdHTTPServer (закладка Indy Servers) и TMemo (для отображения клиентского запроса). Немного отредактируем параметры сервера: «Active=true», «DefaultPort=56001» (можно указать любой другой) и «Name=MyServer». У этого компонента есть событие OnCommandGet. Переходим к его редактированию.
В данном случае мы просим сервер выполнить вход в систему пользователя «admin» с паролем, зашифрованным при помощи md5.
Вот таким нехитрым способом можно создавать клиент-серверные приложения. Чтобы не запутаться в именах параметров, рекомендую сделать отдельный unit с константами, который знали бы и сервер, и клиент. В следующей статье я объясню, как оптимизировать передачу данных по http и упростить их обработку, а также поделюсь своими компонентами, упрощающими подобную разработку.
Узнать подробнее можно здесь
Ссылки по теме
| Помощь |
| Задать вопрос | |
| программы | |
| обучение | |
| экзамены | |
| компьютеры | |




