Если у вас есть несколько распределенных клиентов, вы можете использовать многоуровневое решение (например, DataSnap или DataAbstract), где на стороне сервера выполняется одно постоянное соединение для передачи данных, и каждый клиент просто подключается к этому серверному приложению. для запроса данных.
DataSnap предоставляет несколько различных решений для связи между клиентом и сервером: Socketed, REST и т. Д., Поэтому вы сами должны определить, что лучше для вашей системы.
DataAbstract, по-видимому, является одним из (если не THE) самых популярных многоуровневых решений для приложений данных на рынке, и я случайно знаю, что многие разработчики клянутся им по разным причинам (безопасность - одна из них, простота использования - другой).
Я всегда утверждал, что если ваше клиентское приложение требует прямого подключения к базе данных, вы делаете это неправильно!
Если вам нужна дополнительная информация о DataSnap, на недавнем мероприятии CodeRage было несколько интересных сессий. Вы можете загрузить / просмотреть любую из этих сессий (бесплатно) на дочернем сайте Embarcadero CodeCentral .
Что касается Книг, то лучшим вариантом всегда будут Delphi Handbooks Марко Канту (в частности, книга XE, которая все еще в значительной степени применяется в терминах DataSnap для XE2).
Важно помнить, что DataSnap поставляется только с выпусками Delphi Enterprise, Ultimate и Architect ... он недоступен в Pro или Starter!
Тем не менее, вы всегда можете использовать ODBC на своем собственном уровне сервера для подключения к любой базе данных ODBC (которая включает MySQL, MSSQL, Oracle ... даже MS Access, если вы хотите насладиться «взрывом из прошлого»), затем используйте любое сетевое сокетное решение, которое вам нравится (например, Indy, которое входит в стандартную комплектацию Delphi [все версии]), чтобы связать ваши клиентские приложения с уровнем сервера! Посмотрите на TADOConnection, TADOQuery и т. Д.
Надеюсь, вы найдете эту информацию полезной!