與我的問題相關的一點背景: - 我正在學習使用SignalR,它是一個客戶端 - 服務器RPC框架。在服務器端,您可以編寫一個或多個「集線器」類,從而公開可以遠程調用的方法,有點像Web服務。當一條消息到達時,SignalR實例化相應的集線器類來處理該消息,但爲此,集線器類必須具有無參數的構造函數。Castle Windsor - 不確定在哪裏釋放使用「container.Resolve」創建的瞬變
在現實世界中,集線器類可能需要依賴關係。幸運的是,SignalR允許你替換它所完成的默認「依賴解析器」。 SignalR Castle Windsor解析器有很多(幾乎相同的)樣本(例如here),但它們都依賴於調用Windsor容器的Resolve()
方法。我對溫莎的理解是,你必須「釋放你明確解決的問題」,但是我看不到我能夠實現的目標。
請注意,集線器被註冊爲瞬態,而相關性可能是瞬態和單態的混合。
我想過在其Dispose()
方法中釋放集線器的依賴關係,但這種感覺不對 - 集線器需要訪問Windsor容器;集線器也需要知道哪些依賴是暫時的,並且只是試圖釋放這些依賴。
有什麼想法?
我不認爲會有一個優雅的解決方案!我擔心集線器會被實例化以便爲每個方法調用,所以如果事情沒有得到解決,存在內存問題。我想知道是否更容易將中心註冊爲單身人士?我知道SignalR在方法完成後調用集線器的Dispose(),所以只要我沒有在那裏做任何事情,我想我應該沒問題? (我使用自託管,而不是IIS,如果這有所作爲)。 –
我對SignalR並不十分熟悉,但是一般情況下,我會假定一個對象在處置後不再可用。如果你要切換到單身人士,你能確定你永遠不需要同時使用Hub的兩個實例嗎? – Marwijn