我正在創建一個框架來爲我的應用程序添加插件。每個插件都必須實現一個抽象類。然後將每個插件編譯爲主應用程序可以找到的一個DLL Directory.GetFiles(myPath, "*.dll")
放哪裏使用(SqlConnection)
這一切都很順利,我可以在主應用程序中實例化我的插件並使用它們。每個插件基本上都是一個儀表板小部件,用戶可以將其添加到儀表板以向他顯示一些圖表或圖表。這意味着,每個插件都有一個計時器,並且在每個計時器事件中,它都會使用來自應用程序的SQL數據庫的數據刷新圖形。
所以我的問題是,我在哪裏把SqlConnection
?我是否創建一個SqlConnection
並將其作爲參數傳遞給每個插件,或者是否傳遞連接字符串並讓每個插件創建它自己的SqlConnection
?
如果我將應用程序的SqlConnection
傳遞給插件,那麼我會想象它會涉及到一些管理插件內部的連接。我顯然必須檢查它是否已打開,如果狀態爲ConnectionState.Fetching
或ConnectionState.Executing
,我該怎麼辦?它看起來很笨拙。
但另一方面,考慮到多個用戶將運行該應用程序,並且每個用戶可能在他的儀表板中選擇了多個插件,它可以加起來多達SqlConnections
。這是可取的嗎?我應該考慮第三種選擇,插件將查詢提交給主機,該主機將其與來自其他插件的其他查詢進行排隊,並在查詢執行後將結果集返回給插件?這樣至少每個用戶只有一個SqlConnection
,無論他們選擇了多少個插件。
說實話,這最後一個選項對我來說似乎相當複雜,我不確定我是如何實現它的。如果任何人都能指向我的文章,解釋類似的東西,我真的很感激它。
謝謝,這聽起來像更簡單的方法。我不熟悉「連接工廠」。我現在使用谷歌搜索,但如果你有一篇文章或一些方便的東西,你可以指出我會很棒。 –
@DewaldSwanepoel看到我的更新:) – CodingGorilla
酷香蕉。我剛看到更新。看起來非常優雅。我認爲這是我會追求的路線。 我不知道這個插件能在這種情況下使用(SqlConnection)嗎? –