【发布时间】:2014-01-15 20:16:08
【问题描述】:
与我的问题相关的一些背景知识:- 我正在学习使用 SignalR,它是一个客户端-服务器 RPC 框架。在服务器端,您编写一个或多个“集线器”类,这些类公开可以远程调用的方法,有点像 Web 服务。当消息到达时,SignalR 会实例化适当的集线器类来处理该消息,但要使其正常工作,集线器类必须具有无参数构造函数。
在现实世界中,集线器类可能需要依赖项。幸运的是,SignalR 允许您替换我已经完成的默认“依赖关系解析器”。 SignalR Castle Windsor 解析器有许多(几乎相同)示例(例如here),但它们都依赖于调用 Windsor 容器的 Resolve() 方法。我对 Windsor 的理解是你必须“发布你明确解决的问题”,但我看不出我可以在哪里实现这一点。
请注意,集线器被注册为瞬态,而依赖项可能是瞬态和单例的混合。
我曾考虑在其Dispose() 方法中释放集线器的依赖项,但这感觉不对——集线器需要访问温莎容器;集线器还需要知道哪些依赖项是暂时的,并且只尝试释放这些依赖项。
有什么想法吗?
【问题讨论】: