我有WCF Per-Call服务,它为客户提供数据,同时与NServiceBus集成。
所有statefull对象都存储在UnityContainer中,并集成到自定义服务主机中
NServiceBus在服务主机中配置,并使用相同的容器作为服务实例
每个客户都有自己的实例上下文(Juval Lowy在其关于耐用服务的章节中的书中描述)。
如果我需要通过总线发送请求,我只需使用某种调度程序并使用Thread.Sleep()等待响应。由于服务是每次调用,这是可以的afaik。
但我对来自总线的消息感到困惑,该服务必须处理并提供给客户端。对于某些数据,如股票报价,我只是更新某种状态对象,然后,当客户端调用GetQuotesData()时,只提供来自此对象的数据。
但是有许多服务信息,如新报价等等。
此时我有一个想法实现类似“Postman daemon”=)的东西,并将这种类型的消息存储在实例上下文中。然后客户端将调用“GetMail()”,接收这些消息并解析它们。问题是NServiceBus消息是“基于接口的”,我不能通过WCF传递它们,所以我需要将它们转换为来自某个抽象类的类型。
Dunno什么是处理这种情况的最佳方法。 对此有任何建议,我将非常感激。
提前致谢。
答案 0 :(得分:1)
您是否考虑过将“纯粹”的NServiceBus解决方案与客户进行通信? NServiceBus已具备“Postman守护程序”功能。 NServiceBus消息不必是接口 - 您也可以使用常规类。
希望有所帮助。