В данном посте создадим простейший сервер по технологии DataSnap и подключим его к СУБД MySQL с помощью технологии доступа к данным DBExpress. В СУБД уже создана тестовая база данных test_db. Действуя по аналогии Вы можете предварительно на выбранной СУБД создать базу данных или использовать готовую. Итак, поехали… File | New | Other – DataSnap Server
Далее выберем вид сервера – на выбор нам представляется – форма, консоль, сервис windows. Боб Сварт в своей книге советует выбирать сервис виндоуз, так как это всё таки сервер и он должен быть включен постоянно. Но для простоты, я предлагаю рассмотреть создание сервера на основе обычной формы (Forms Application). C сервисом windows всё тоже самое, но шагов больше, конечно и преимущество в том, что он более менее постоянно включен. Надо сказать, чтоб Боб Сварт в своей книге создает сразу все 3 вида серверов, но на данном этапе не будем усложнять.
Далее мастер спрашивает – VCL или FireMonrey? Тут на вкус и цвет, я для простоты выбрал VCL, хотя для данного примера – особой разницы нет.
Далее, нужно выбрать набор компонентов и возможностей нашего сервера – возможные протоколы общения (клиента – сервера), аутентификацию и др. Я выбрал все возможные протоколы, авторизацию, аутентификацию и примеры методов (Sample Methods)
Далее тестируем порты, если у нас что-то уже работает на этих портах, меняем… Возможно, придется поменять порт 8080, потому что на нём может работать IIS, но это уже детали. В данном примере нам не понадобится HTTP протокол, я поставил его для демонстрации. Будем работать через TCP / IP.
Далее, заполняем сертификаты (если есть). Если нет – пропускаем этот шаг (Next).
Далее выбираем предка для сервера. Наиболее полный предок – TDSServerModule. Можно выбрать и другие, но вот с чем я столкнулся, когда выбрал TDataModule. При попытке связать сервер с клиентом через провайдеры (об этом мы поговорим позже), в списке провайдеров, в клиенте не отображались провайдеры сервера. Оказалось, это из за того, что отсутствует RemoteDataModule. А в TDSServerodule он уже есть. В общем, когда я переделал сервер на TDSServerModule, у меня всё заработало как нужно. В документации можно найти подробное описание когда что использовать, но, насколько я понял TDSServerModule – это наиболее полный вариант.
Далее, когда мы нажмем на Finish, увидим следующее…
Далее, подпишем все юниты красиво и понятно и сохраним в отдельную папку.
На форме мы можем разместить любые компоненты, ну, как минимум подписать её, чтобы опознавать как сервер.
Зачем нужен модуль ServerMethods?
В нём содержатся непосредственно методы, которые мы будем вызывать из клиента. Это то самое ядро бизнес-логики, которое вынесено в сервер приложений.
Зачем нужен модуль ServerContainerUnit?
Здесь содержатся компоненты, отвечающие за работу сервера. Здесь мы можем настраивать протоколы, аутентификацию и многие другие параметры. Подробнее об этом можно прочитать в книге Боба Сварта
а также здесь…
-Книга Д.Осипова Delphi и базы данных (там есть раздел, посвященный технологии DataSnap)
На данном этапе всё… в следующем посте подключим сервер приложений к СУБД.