所以我正在构建一个客户端服务器应用程序,我必须选择它们如何相互通信。我可以:
在任何地方都有一个矩阵可以告诉我在哪里使用这些技术之一。性能,可靠性等等都会有所帮助。
答案 0 :(得分:7)
如果您有纯.NET到.NET应用程序,请转到WCF。在执行TCP / IP时,它会让您的生活变得简单,但为您的消息传递保留了一层很好的面向对象设计。它还使得对您的消息传递代码进行单元测试非常容易,这是我认为最大的好处。
WCF将在本地计算机上执行TCP / IP管道,并且它还支持许多基于HTTP的解决方案。您还可以免费获得大部分安全性,并且代码会在通信层中为您执行大量错误处理。
如果您需要MQ解决方案,那么请尽情享受。支持MSMQ,但是它也是MSMQ。
使用其他解决方案将受益于更多功能,但功能带来复杂性和风险。我个人将.Net应用程序与websphere MQ集成在一起,我对解决方案的成本和收益并不感兴趣。更不用说MQ在非P系列硬件上的性能至少是缺乏的。
答案 1 :(得分:6)
排队还是没排队?
您的消息传递解决方案需要什么?
如果you like WCF那么你将免费获得很多。但基本上有两种消息传递模式:排队和非排队。 WCF提供了一个巨大的可互换通道,绑定,格式,协议和身份验证方法矩阵,可以通过简单更改.config文件来切换。但它们全部用于非排队模式。如果你的解决方案没有一个耦合的通信通道,那么对于CLR应用程序来说,目前可能没有比WCF更好的了。如果您的要求强加了基于排队的解决方案,那么您将放弃所有酷的可互换绑定玩具,并且您将利用WCF的序列化和服务的激活模型。
最后但并非最不重要的是,在任何消息传递解决方案中发送的消息中有90%最终存在于数据库中,而且很多消息也来自数据库。如果您希望与SQL Server数据库紧密集成,在保证可靠交付的同时提供性能,那么is a solution for that in SSB。
答案 2 :(得分:2)
在.NET上构建通信应用程序时,答案几乎总是WCF。 WCF确实
WCF背后的理念是:它是一个通用的通信框架,可以映射到您希望使用的任何通信基板上。这意味着编程模型是一致的,概念是一致的,并且操作/管理是一致的。如果您选择WCF并且想要记录,则无论您选择何种基材,它都以相同的方式工作。并且,如果选择WCF,则可以在各方为本地时使用命名管道,并在分发时切换到TCP。它不需要更改代码,只需更改配置。这可能很好。
至于选择基材 - 嗯,这取决于你。取决于您需要的功能和要求。