【问题标题】:Castle Windsor multiple lifestyles (Nhibernate)温莎城堡多种生活方式(休眠)
【发布时间】:2013-10-24 06:44:34
【问题描述】:

我有一个使用 Castle Windsor 和 Nhibernate 的 WCF 服务,目前我正在使用 LifestylePerWebRequest,并且一切正常。我想添加到服务中,以便它还可以侦听来自队列的消息并基本上调用与 Web 服务相同的方法,但是我意识到这可能无法正常工作,因为我的 Nhibernate 存储库正在使用 LifestylePerWebRequest 范围。

我可以根据情况动态改变生活方式吗?

谢谢

【问题讨论】:

  • 你这里真正的问题无法理解,请详细说明场景。您的 WCF 服务会侦听队列吗?您的存储库和侦听逻辑之间的关系是什么?如果您需要针对两个不同关注点的组件,您可以使用不同的生活方式注册两次。
  • 为什么您的存储库是每个 Web 请求的,如果它们是无状态的(它们应该是无状态的),您可以将它们注册为单例,但是您必须为每个 Web 请求或每个线程注册 nhibernate Session,因为无法使用 Session多个线程。
  • 我也有同样的问题。对我来说,一切都在 WCF 调用的上下文中工作,但是当我尝试从(Windows)服务中访问我的存储库时,它会抱怨。你找到解决办法了吗?
  • @QuinnWilson 不幸的是,我不记得解决方案是什么。该服务可以接受 WCF 请求,但也通过 rabbitmq 连接到 pub/sub 代理。它来自一份旧工作,我无权访问代码。

标签: c# wcf web-services nhibernate castle-windsor


【解决方案1】:

您检查过'WCF Integration Facility' 的温莎城堡吗?

我觉得你应该看看。

有几种特定的生活方式可以帮助您(例如 PerWcfSessionPerWcfOperation

如果您需要为不同的应用程序提供不同的生活方式,您可以为每个应用程序使用自定义安装程序。

【讨论】:

  • 我已经在使用 WCF 集成工具了。在通过 Web 请求处理呼叫时,所有这些都可以正常工作。但我也想通过消息队列调用我的服务层——这不会通过网络请求,这意味着我的生活方式是无效的。我需要改变生活方式以适应范围。但我不确定安装后如何做到这一点
  • 您有多少应用程序?您是否有一个处理 Web 请求的 Web 应用程序和另一个应该处理来自消息队列的请求的 Web 应用程序(例如 WCF)?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-14
相关资源
最近更新 更多