我想知道一個數據庫連接,如果任何人都知道,如果有可能有多個應用程序共享同一個數據庫連接應用程序之間共享在C#
例如,如果我有打開一個數據庫 的連接,然後應用程序我開始另一個應用程序需要連接到相同的數據庫 - 所以而不是有2個連接打開,我使用的連接從第一個應用程序已打開 從而只有一個連接打開
我問這個問題的原因是因爲我正在開發一個從單獨的exe而不是一個大的exe來構建的系統 - 但他們都可以訪問sam Ë數據庫
任何幫助,將不勝感激
感謝
我想知道一個數據庫連接,如果任何人都知道,如果有可能有多個應用程序共享同一個數據庫連接應用程序之間共享在C#
例如,如果我有打開一個數據庫 的連接,然後應用程序我開始另一個應用程序需要連接到相同的數據庫 - 所以而不是有2個連接打開,我使用的連接從第一個應用程序已打開 從而只有一個連接打開
我問這個問題的原因是因爲我正在開發一個從單獨的exe而不是一個大的exe來構建的系統 - 但他們都可以訪問sam Ë數據庫
任何幫助,將不勝感激
感謝
你可能會想創建一個包含邏輯連接到數據庫(通過可配置的連接字符串)一個單獨的程序並引用大會各需要使用它的項目。請注意,他們不會共享相同的物理數據庫連接,而是共享兩個應用程序之間的代碼和邏輯,它仍然是兩個單獨的數據庫連接,您無法繞過,但它也不是一件壞事,它只是它必須的:)只有這樣,你纔可以共享同一個連接:如果這兩個應用程序實際上在同一個應用程序中,而我收集的不是你說的話,因爲你提到它有兩個可執行文件,所以兩個單獨的程序。
Connection pooling應該爲你工作。如果多個EXE同時需要數據庫連接,則需要多個連接,但是一旦這些連接釋放回池中,另一個EXE就可以將其連接起來並重新使用它們。
我認爲這通常包含在ODBC /數據庫驅動程序中,不需要您付出額外的努力,但它對我來說從未成爲問題,所以我不確定。
恕我直言,你可以共享相同的連接字符串,但共享相同的物理DB連接之間2應用程序不知道彼此不會是一個好主意。你將如何處理鎖定,併發,事務邊界等?
如果原因是爲了減少數據庫許可成本或連接限制,可能需要查看較短的連接壽命(即應用程序根據需要連接和斷開連接,而不是保持連接打開應用程序的生命週期)
如果你真的想要追求共享連接,你可以考慮將你的應用分成擁有一個管理單例數據庫連接的公共後端(例如Windows或WCF服務)。
您不應(也不能)在兩個應用程序之間共享連接。您可以共享相同的連接字符串,並打開連接池,它可能會重新使用連接,但不應該依賴它。正如Capital G所說,你應該把所有的數據庫訪問邏輯放在一個單獨的程序集/層,甚至WCF服務/ Web服務中。