0

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

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

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

4

1 回答 1

1

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

希望有帮助。

于 2010-03-24T10:31:34.470 回答