Какую технологию Delphi использовать?

У меня есть клиент-серверное приложение, написанное на Delphi. По сути, все, что делает приложение, - это передача потоков данных xml между серверным приложением и подключенными клиентами. В настоящее время я использую компонент Indy TIdTCPServer. Но приложение на стороне сервера продолжает падать на некоторых моих взносах. И это было чрезвычайно трудно отлаживать. Поэтому мне интересно, есть ли какая-то «архитектура», которую я должен использовать, которая выполняет все управление соединениями tcp / ip и пулы соединений с базами данных, позволяя мне сосредоточиться на бизнес-логике.

Вот более подробная информация:

  • клиентов должен поддерживать постоянное соединение. Временами сервер должен уведомлять и отправлять данные всем подключенным клиентам.
  • клиенты подключаются с портативных компьютеров по беспроводным картам. Таким образом, сетевые «отбрасывания» довольно распространены.
  • Бэкэнд-база данных - SqlServer.
  • Одновременно может быть подключено до 100 компьютеров одновременно. Когда сервер получает новое соединение (TCPServer.OnConnect), я создаю свой собственный объект, содержащий его собственное соединение с базой данных SqlServer. Когда соединения tcp разрываются, я в свою очередь освобождаю эти объекты (и связанное с ними соединение с базой данных).
  • В клиентское приложение встроен TTimer. Они регулярно отправляют сердцебиения на сервер. И если они «отбрасывают» / «теряют» свое соединение, они автоматически устанавливают новое соединение, когда сеть возвращается.

У кого-нибудь есть какие-либо предложения по поводу лучшего подхода / архитектуры здесь?
Я предполагаю, что компонент Indy будет работать, но в то же время чувствую, что я «заново изобретаю колесо» в отношении управления соединениями.

5
задан mjn 14 August 2010 в 12:38
поделиться