我们正在开发一个Windows Forms应用程序,该应用程序将安装在约1,000名员工个人电脑上。用户可以同时运行应用程序的多个实例。客户端都在一个内部网上。Windows Forms&WCF - 客户端应用程序通信
应用程序中的更改可能会导致数据库记录更改,而这些更改必须传递给其他客户端,以便更新其UI。
我们的团队已经谈到了两种不同的方法:
1.多播数据包
源客户端修改记录,然后与东西已经改变有效载荷发出一个组播数据包。其他客户端接收并获取指定的数据。我们需要说明数据包未收到时的情况,并回退到主动检索数据。
我现在的问题是客户如何知道它没有收到数据包? (不知道你不知道的是什么)这会将我们带到某种事件日志中,并在数据库中添加时间戳,并且UI控件会跟踪它们上次更新的时间。他们开始关注,检查他们的时间戳,并根据需要进行更新。
其他人表示,UI元素在每次焦点时都会重新加载(思考Outlook中的模式,将控件带到CAB的堆栈工作区前端)。多点传送是为了更新当前上下文已经改变的客户端。如果他们错过了,他们会使用陈旧的数据,直到他们改变模式并回来。
2. WCF和回调
客户注册在TCP绑定回调WCF合同。与此有关的主要技术问题是服务器维护许多开放式套接字。我们已经阅读了它在传统意义上是如何不公开的,它最多可以休眠90秒,然后在那个时候重新建立。我们还了解了Windows 2003 Server计算机可以处理的最大打开连接数以及如何在注册表中修改这些连接。
如果我们有1000个打开的套接字连接到服务器,这是否会崩溃?
如果有人遇到过这种情况,并尝试或评估过WCF方法,我们很乐意听到它。
您触及了我们讨论过并正在考虑的许多事情,例如批处理更新。您强调我没有完全描述环境,但它在地理位置相邻的建筑物中的同一物理LAN上大约有1,000个用户。数据没有跨越多个垂直区域,所有的用户都在查看相同的数据,只有一些用户可以编辑项目,大多数用户不能,例外是个人组织模块。我认为你的答案有帮助,所以+1,但我会看看是否有人试过这个,并知道任何性能/资源问题。谢谢。 – blu 2009-07-17 18:38:07
太好了。事实上,我很想知道这个结果;至少可以做任何概念验证。博客(提示,提示)对你来说是件好事。 – 2009-07-17 18:50:02