我必须将VB 6.0应用程序移植到VB.Net(Framework 3.5)。该应用程序大量使用MSMQ。我试图弄清楚使用WCF比良好的System.Messaging有什么好处。使用System.Messaging时是否有任何潜在的showstoppers?
答案 0 :(得分:7)
我认为来自“Motley Queue”网站的引用(“网站”:优秀链接!)总结得最好:
* WCF编程模型以业务运营为中心。有了它,您可以停止管理消息事务,设置消息属性,搜索队列中的消息,检查NACKS,重试消息等。相反,您可以从业务操作(例如CreatePurchaseOrder)和焦点开始考虑世界关于你的业务逻辑。 将单调乏味留给WCF。 *
简而言之,WCF试图完成的任务 - 减轻您的管道和错综复杂的负担,让您专注于您想要解决的业务问题。
我的投票是针对WCF的! : - )
马克
答案 1 :(得分:3)
您应该查看Motley Queue website. System.Messaging与WCF之间有一个很好的比较。 WCF将更清洁,更易于使用。
答案 2 :(得分:3)
我有点不同意WCF是否比System.Messaging更容易/更清洁,让我们面对它,它有一个非常简单的API(整体)并且使用相对简单,如果你关心的话。但是,WCF确实有一些不错的东西,但无论如何都不简单。
至于你是否会发现任何问题,那么......很大程度上取决于你的VB应用程序当前如何使用MSMQ以及它发送的数据类型。您将使用MsmqIntegrationBinding绑定,这有点帮助,但如果您的VB应用程序不以WCF可以开箱即用的格式发送消息,您可能必须采取一些技巧来成功处理消息反序列化。
答案 3 :(得分:2)
我个人喜欢MSMQ,并且会继续这样做。
对我而言,主要的“问题”是,每封邮件限制为4美分。如果您正在序列化一个大型对象图,那么这是一个问题,但通过先串行化到磁盘并发送文件名来解决这个问题很简单。
MSMQ可能无法获得“新功能”,正如其他海报所评论的那样,但是恕我直言,它稳定,可扩展性很强,并且具有我需要的所有功能。
答案 4 :(得分:1)
使用WCF可以为您提供清晰的前进路径。虽然我怀疑System.Messaging将在任何地方(参见System.Runtime.Remoting),但是在WCF中将发生新的开发,并且它使您有机会在出现时迁移到其他技术。它使您免于被绑定到特定的传输实现。
WCF编程模型也非常干净和令人愉悦。
答案 5 :(得分:0)
使用Net.Msmq绑定的MSMQ WCF解决了许多您不需要关心的复杂问题。
- 更容易实现(只需要一次配置)。按照这篇文章来了解设置WCF& amp; MSMQ使用Net.Msmq绑定
Setup MSMQ with WCF using Net.Msmq binding
- 只需对配置进行少量更改即可实现重试和毒性队列。 设置重试和毒药队列的好文章Poison and Retry message handling with MSMQ using WCF Net.Msmq binding
- 如果您拥有该服务的多个订阅者,则可以通过多个协议托管相同的服务。即为http,net.Msmq。
创建多个端点