【问题标题】:Need some help/advice on WCF Per-Call Service and NServiceBus interop需要有关 WCF 每次调用服务和 NServiceBus 互操作的帮助/建议
【发布时间】:2011-01-30 23:25:17
【问题描述】:

我有 WCF Per-Call 服务,它为客户端提供数据,同时与 NServiceBus 集成。
所有有状态的对象都存储在 UnityContainer 中,该容器集成到自定义服务主机中。
NServiceBus 配置在服务主机中,使用与服务实例相同的容器。
每个客户端都有自己的实例上下文(Juval Lowy 在他的书中关于持久服务的章节中进行了描述)。

如果我需要通过总线发送请求,我只需使用某种调度程序并使用 Thread.Sleep() 等待响应。由于服务是按调用的,这没关系。
但是我对来自总线的消息有点困惑,该服务必须处理并将它们提供给客户。对于股票报价等一些数据,我只是更新某种有状态的对象,然后,当客户调用 GetQuotesData() 时,只需提供来自该对象的数据。 但是有许多服务消息,例如添加了新报价等。
目前我有一个想法来实现类似“邮递员守护进程”=)) 并将这种类型的消息存储在实例上下文中。然后客户端将调用“GetMail()”,接收这些消息并解析它们。问题是 NServiceBus 消息是“基于接口的”,我不能通过 WCF 传递它们,所以我需要将它们转换为从某个抽象类派生的类型。

我不知道处理这种情况的最佳方法是什么。

【问题讨论】:

    标签: wcf architecture soa nservicebus


    【解决方案1】:

    您是否考虑过使用“纯”NServiceBus 解决方案与客户进行通信? NServiceBus 已经具有“邮递员守护程序”功能。 NServiceBus 消息不必是接口 - 您也可以使用常规类。

    希望对您有所帮助。

    【讨论】:

    • 是的。但是我们在不同的平台(包括移动)上有多种类型的客户端,我不想向他们公开队列。我试图坚持在我们的域中使用 NServiceBus 仅用于服务到服务交互的想法,并且所有客户端服务通信都使用 WCF。
    • 请记住,当您尝试使用 WCF 实现回调和通知时,其中许多限制同样适用。
    • 谢谢=) 但我们决定删除回调和此类功能。所以现在客户只需要一些服务,比如同步数据、获取消息等。我真的很喜欢 NSB 的工作方式=)
    猜你喜欢
    • 1970-01-01
    • 2020-06-18
    • 2011-03-12
    • 2018-07-31
    • 2012-06-27
    • 2011-05-06
    • 2021-09-06
    • 2015-10-24
    • 1970-01-01
    相关资源
    最近更新 更多