【发布时间】:2011-03-26 18:14:28
【问题描述】:
我有一个用 Delphi 编写的客户端/服务器应用程序。本质上,应用程序所做的只是在服务器应用程序和连接的客户端之间传输 xml 数据流。我目前正在使用 Indy TIdTCPServer 组件。但是服务器端应用程序在我的一些分期付款中不断崩溃。而且调试起来非常困难。所以我想知道是否有一些我应该利用的“架构”来完成所有的 tcp/ip 连接管理和数据库连接池,让我能够专注于业务逻辑。
这里有更多细节:
- 客户端必须保持“持久”连接。有时服务器必须通知所有连接的客户端并向其发送数据。
- 客户端正在使用无线网络卡从笔记本电脑进行连接。所以网络“掉线”很常见。
- 后端数据库是 SqlServer。
- 一次最多可以同时连接 100 台计算机。 当服务器获得一个新连接(TCPServer.OnConnect)时,我实例化我自己的对象,其中包含它自己的 SqlServer 数据库连接。当 tcp 连接断开时,我会释放这些对象(以及相关的数据库连接)。
- 客户端应用程序内置了一个 TTimer。他们定期向服务器发送心跳。如果他们“断开”/“丢失”连接,一旦网络恢复,他们就会自动建立新连接。
有人对这里的最佳方法/架构有什么建议吗?
我认为 Indy 组件可以工作,但同时我觉得在管理连接方面我正在“重新发明轮子”。
【问题讨论】:
-
滚动你自己的意味着投入一定比例的时间来维护你自己的框架。为了提高您在 Delphi 中的有效性,您应该评估已经构建和支持的商业支持技术/工具包/组件的想法非常好。当然开源工具也可以很好。但是,如果您的时间比金钱更稀缺,请选择商业解决方案。
-
绝对 - 正是我得到的。我只想要一个行之有效的 C/S“3 层”架构。
标签: delphi architecture client-server