2014-07-08 55 views
0

我們有一個Azure工作者角色(基本上與Windows服務相同),我們使用Ninject作爲IoC並將IDbConnection注入到我們的工作者中。最佳實踐表明,只要不再使用連接,就應該立即處理連接,但在可能有意義或無意義的工作者/服務中。那麼在這種情況下處理數據庫連接的好方法是什麼?如何在使用Ninject的長時間運行過程中最好地處理Sql連接?

我們的選擇包括(或許沒有太多限制):

  • 使用服務定位器模式,要求對每個消息一個新的連接,我們處理
  • 保持連接周圍(即用它做什麼)

我不喜歡說實話,我希望有其他解決方案...

回答

1

我會排除ServiceLocator(反)P attern。 在我看來,使用NInject概念Provider<ISomething>將適合您的需要。基本上,提供者是一種可以返回給你的連接,可以在using範圍內使用。如果你想更「國際奧委會疑難雜症」獨立的,你可以有例如IConnectionFactory這樣的:

interface IConnectionFactory{ 
      IDbConnection Open(); 
} 
+0

當然,答案是「增加的間接/抽象層」 ......非常感謝你!可能會使用Provider模型,因爲我們所有的代碼都會綁定到Ninject上:) – noocyte

相關問題