Goo*_*ber 2 c# wcf windows-services
我想设计一个新的分布式应用程序,但我有一些问题,我需要一些天才的建议,希望你们这些人:
我目前支持一个开始落在裂缝之间的遗留应用程序.它是使用.Net Remoting实现的分布式客户端 - 服务器应用程序.我无法准确解释它的作用,因为我不被允许.......但是我们只是说它有很多MATHS.我想使用WCF重新设计和重写应用程序.
实现的服务器端将托管在Windows服务中.客户端将是一个Windows窗体应用程序.服务器端将执行大量内存密集型处理.服务器会将此数据吐出到多个瘦客户端(20-ish).服务器大部分时间都会将数据传递给客户端,但有时客户端会将数据持久化回服务器.传输数据的速度非常重要,但我很清楚WCF可以处理快速的数据分发.加密/安全性并不重要,因为应用程序将在受到高度保护的本地网络上运行.
鉴于以上信息:
1)我最喜欢哪种设计模式? - 请记住,我希望服务器不断地将新计算的信息立即推送到客户端,而不是当前实现涉及客户端连续从服务器拉出的信息.2)我应该使用什么类型的WCF绑定来确保数据传输的最大速度?(尽可能接近实时是我所追求的)3)我应该使用类库来共享客户端和服务器应用程序之间的公共对象吗?4)在客户端数据绑定我的对象以便在数据更改时不断查看实时更新的最佳方法是什么?
非常感谢.
1)我最喜欢哪种设计模式?
根据您的意见,您希望将当前的轮询机制转换为基于事件的机制.也就是说,不是客户端不断检查服务器的结果,而是让服务器在新的计算结果可用时通知客户端.
我建议使用Juval Lowy的Publish-Subscribe Framework.
Publish-Subscribe Framework http://i.msdn.microsoft.com/cc163537.fig07(en-us).gif.
此MSDN文章中详细介绍了此框架.您可以在Lowy的网站IDesign.net免费下载该框架的源代码.
基本上,在Windows服务中执行计算的服务器逻辑是图形中的发布客户端,并且各种WinForm应用程序是订阅客户端.发布/订阅服务存在于您的Windows服务中.它管理订阅客户端列表,并为您的服务器提供单个端点以发布计算结果.通过这种方式,您的服务器执行计算并将结果发布一次到Pub/Sub服务端点.然后,发布/订阅服务负责将结果发布到订阅的客户端.
2)我应该使用什么类型的WCF绑定来确保数据传输的最大速度?
如果您的所有WCF通信都在一台计算机上,则您需要使用NetNamedPipeBinding.但是,由于您将分发,因此您希望使用NetTcpBinding.
对于WCF绑定决策,我发现此图表很有用.

3)我应该使用类库来共享客户端和服务器应用程序之间的公共对象吗?
由于您可以控制客户端和服务器端,因此我强烈建议您共享类库,而不是使用Visual Studio的"添加服务引用"功能.有关详细讨论,请参阅此SO问答.
4)在客户端数据绑定我的对象以便在数据更改时不断查看实时更新的最佳方法是什么?
我怀疑这将取决于您用于显示数据的控件.立即想到的一种方法是让客户在收到每个计算结果时填写内存数据表.然后,该数据表可以绑定到ListBox控件,例如,以计算顺序显示结果.
| 归档时间: |
|
| 查看次数: |
1418 次 |
| 最近记录: |