所以我正在构建一个客户端服务器应用程序,我必须选择他们将如何相互交谈。我能:
- 在客户端和服务器之间建立 TCP 连接
- 通过 REST 或 SOAP 发送消息
- 使用 Tibco RV、EMS 或 IBM MQ。.
是否有一个矩阵可以告诉我在哪里使用这些技术中的一种与另一种。诸如性能,可靠性等之类的东西会有所帮助。
如果您有纯 .NET 到 .NET 应用程序,请选择 WCF。当涉及到 TCP/IP 时,它将使您的生活变得简单,但为您的消息传递保留一层很好的面向对象设计。它还使对消息传递代码进行单元测试变得异常容易,我认为这是最大的好处。
WCF 将在本地机器上执行 TCP/IP、管道,它还支持许多基于 HTTP 的解决方案。您还可以免费获得大部分安全性,并且代码在通信层为您做了很多错误处理。
如果您需要 MQ 解决方案,那就玩得开心。支持 MSMQ,但它也是 MSMQ。
使用其他解决方案将受益于更多功能,但功能带来了复杂性和风险。我亲自将一个 .Net 应用程序与 websphere MQ 集成,我对该解决方案的成本和收益不以为然。更不用说 MQ 在非 P 系列硬件上的性能至少可以说是缺乏的。
排队还是不排队?
您的消息传递解决方案需要什么?
If you like WCF then you going to get a lot for free from it. But basically there are two modes of doing messaging: queued and non-queued. WCF offers a huge matrix of interchangeable channels, bindings, formats, protocols and authentication methods that can be switched in and out at a simple change of the .config file. But they're all for the non queued mode. If your solution is OK with a coupled communication channel then probably there's nothing better than WCF at the moment for CLR applications. If your requirements impose a queued based solution then you'll loose all the cool interchangeable binding toys and you'll leverage from WCF the serialization and maybe the activation model of your service.
And last but not least 90% of the messages sent in any messaging solutions end up in a database and quite a few also originate from a database. If you want a tight integration with SQL Server databases that offers performance while guaranteeing reliable delivery, there is a solution for that in SSB.
在 .NET 上构建通信应用程序时,答案几乎总是 WCF。WCF 确实
WCF 背后的想法是:它是一个通用的通信框架,可以映射到您希望使用的任何通信基础。这意味着编程模型是一致的,概念是一致的,操作/管理是一致的。如果您选择 WCF 并且想要进行日志记录,则无论您选择哪种基材,它的工作方式都是相同的。并且,如果您选择 WCF,则可以在各方本地时使用命名管道,并在分发它们时切换到 TCP。它不需要更改代码,只需更改配置。这可能很好。
至于选择基材 - 嗯,这取决于你。取决于您需要的特性和功能,您的要求。