我有一个用Delphi编写的Client/Server应用程序.基本上所有应用程序正在做的是在服务器应用程序和连接的客户端之间传输xml数据流.我目前正在使用Indy TIdTCPServer组件.但是服务器端应用程序在我的部分安装中不断崩溃.调试非常困难.所以我想知道是否有一些"架构",我应该利用它来完成所有tcp/ip连接管理和数据库连接池,让我专注于业务逻辑.
这里有更多细节:
- 客户必须保持"持久"连接.有时服务器必须通知并向所有连接的客户端发送数据.
- 客户使用无线空中卡通过笔记本电脑连接.因此网络"下降"非常普遍.
- 后端数据库是SqlServer.
- 一次可以同时连接100台计算机.当服务器获得新连接(TCPServer.OnConnect)时,我实例化我自己的包含它自己的SqlServer数据库连接的对象.当删除tcp连接时,我依次释放这些对象(以及相关的数据库连接).
- 客户端应用程序内置了TTimer.他们经常将心跳发送到服务器.如果他们"丢弃"/"丢失"他们的连接,他们会在网络恢复后自动建立新连接.
有人对这里最好的方法/架构有任何建议吗?
我认为Indy组件可以工作,但同时感觉我在管理连接方面"重新发明轮子".