Написание клиент-серверного приложения в delphi - PullRequest
3 голосов
/ 08 марта 2011

Как лучше написать клиент-серверное приложение под delphi? Я знаю, что есть технология DataSnap, но она не в Профессиональной версии. Есть ли у вас опыт, которым вы можете поделиться?

Ответы [ 7 ]

6 голосов
/ 08 марта 2011

Это довольно широкий открытый вопрос, поскольку он может зависеть от решения вашей базы данных.

DataSnap действительно допускает решения N-уровня, если вы ищете Client Server у вас есть почти все, что вам нужно в профессиональной версии в зависимости от выбора базы данных.

Для клиентского сервера:

Клиент-серверная архитектура - это когда клиент напрямую связывается с сервером.

Существует несколько доступных фреймворков, все они следуют одному и тому же шаблону.

Соединение с БД -> Запрос -> (Необязательный поставщик -> TClientDataset) -> TDataSource -> Визуальный контроль

DBX

  • TSqlConnection - подключается к базе данных
  • TSqlQuery - запрос к БД, производящий однонаправленный набор данных
  • TSqlStoredProc - выполняет процедуры хранения для БД

АДО

  • TAdoConnection - подключается к базе данных
  • TAdoQuery - Запрос к базе данных, производящей двунаправленный набор данных

Общие компоненты

  • TClientDataSet - набор данных в памяти, который является двунаправленным
  • TDatasetProvider - принимает другие наборы данных и связывает данные с TClientDataset
  • TDataSource - связывает набор данных с визуальным управлением с учетом данных

В зависимости от выбора базы данных доступно несколько других опций.

Однако вы, похоже, спрашиваете о решениях типа N-Tier (Middle-Tier)

Для N-уровня

N-уровневая архитектура - это когда Клиент связывается со Средним Ярусом, который затем связывается с Сервером. Он называется N-Tier, поскольку у вас есть возможность иметь несколько промежуточных уровней или серверов приложений.

Коммерческие опционы (необходимо потратить дополнительные $$)

Лично я не знаю ни о каких бесплатных или открытых источниках, хотя подозреваю, что некоторые существуют.

3 голосов
/ 08 марта 2011

Два варианта:

  • Сделай сам (Сделай сам).Написать коммуникационный уровень и протокол самостоятельно, используя интернет-компоненты Indy и / или ICS.Много тяжелой работы и нужно много тестов, чтобы разобраться.
  • Используйте готовый фреймворк, такой как kbmMW: http://components4developers.com/ или RemObjects: http://www.remobjects.com/ Оба не бесплатны, нохорошо стоит денег, которые вы платите, даже если измеряется только временем / затратами на разработку, которые вы сэкономите.
2 голосов
/ 08 марта 2011

Вы можете использовать WST - это бесплатный набор инструментов с открытым исходным кодом для использования и создания веб-служб с поддержкой SOAP, XmlRPC и JsonRPC (поддержка JsonRPC доступна только для FPC). Это совместимо с Delphi. Лучше проверить из SVN, так как релиз 0.5 действительно устарел.

1 голос
/ 02 марта 2012

С тех пор, как несколько месяцев назад я перестал реализовывать новые проекты с такой архитектурой (n-уровневые, 2-уровневые), основанные на Delphis и конкретных технологиях БД.Я считаю, что эта архитектура не будущий проф.Архитектура, которой я сейчас пользуюсь, двухполюсная.Сервер является обычным HTTP-сервером.Он работает как сервер приложений * и дополнительно предоставляет веб-клиент.Развивать клиентов в Delphi сложнее, но оно того стоит.Поскольку указанные инструменты не доступны, как те, которые предлагаются для соединений с БД, я использую indy для отправки и получения данных с HTTP-сервера.Я делаю GET запрос на получение данных, а затем анализирую их, чтобы показать их в графическом интерфейсе.Затем POST запрос на обновление или вставку новых данных.HTTP-сервер обрабатывает всю бизнес-логику: -)

Помимо будущей профессии, эта архитектура дешевле и не зависит от платформы.И если вы проанализируете это, это та же архитектура, которая используется большинством мобильных приложений.Итак, если вы планируете написать мобильный клиент в будущем, подумайте о разработке сервера приложений с языками сценариев (Python, PHP, Ruby и т. Д.).

Это моя рекомендация.Не забывайте: большие вещи требуют больших обязательств!

  • App Server - это сервис, который предоставляет вашему приложению (тонкому клиенту) интерфейс для получения и отправки данных.Также это контролирует бизнес-логику.Ваше приложение не заботится о БД или контролирует отношения записей и ограничения данных.Это все прозрачно делается сервером приложений.
1 голос
/ 08 марта 2011

Взгляните на наш Клиент / сервер с открытым исходным кодом ORM .

Он многоуровневый, и вы можете иметь ORM как на уровне клиента, так и на уровне сервера.ORM используется везде, и JSON - это формат, выбранный для передачи клиент / сервер.

Вы можете запустить свое приложение как локальное приложение, а затем просто изменив тип класса, используемый для доступа к данным, оно станетклиент-серверное приложение, обменивающееся данными через именованные каналы, сообщения HTTP / 1.1 или GDI.

Оно было разработано для работы с SQLite3 в качестве небольшого, но эффективного механизма базы данных на стороне сервера, но вы можете использовать ORM без SQlite3.,Если вам больше нравится, в нем предусмотрен движок памяти Delphi.

Эта структура пытается реализовать N-уровневую архитектуру снизу вверх .Следующая версия 1.13 будет иметь мощный механизм фильтрации и проверки , идеально подходящий для архитектуры N-уровня.Существует несколько модулей пользовательского интерфейса с полной отчетностью (и генерацией PDF), способных создавать большую часть пользовательского интерфейса из кода, используя макет данных ORM.

Он основан на парадигме RESTful для доступаданные от клиента, через JSON.И есть простой способ реализовать клиентские / серверные службы , если недостаточно подход RESTful, как DataSnap.

Он готов к Unicode (использует UTF-8 на всех внутренних уровнях),и работает с любой версией среды IDE, от Delphi 6 до XE (даже в версии для начинающих).

1 голос
/ 08 марта 2011

С Delphi Professional можно писать простые (без стандартов WS- *, без серверов Soap 1.2) клиентские и серверные приложения SOAP.

Во многих случаях Soap предлагает преимущества в отношении кроссплатформенности / кроссплатформенности.языковая интеграция, стандартизация, разработка по контракту и зрелые рекомендации по внедрению, передовые практики и шаблоны.

Для Soap есть отличные (и бесплатные) инструменты, такие как SoapUI и IDE-редакторы для документов языка описания веб-служб (WSDL)как NetBeans.

0 голосов
/ 08 марта 2011

Для связи клиент-сервер общего назначения вы можете использовать наш легкий MsgConnect продукт. Это кроссплатформенный MOM (промежуточное программное обеспечение, ориентированное на сообщения).

...