我有一個.NET Winform一次部署的胖客戶端,可以與三個數據庫,2個SQL Server數據庫和一個Oracle數據庫進行通信。WinForm胖客戶端:架構決策:我做錯了嗎?
第一個SQL Server數據庫,我會打電話給Master。我想要在Master數據庫中添加更多表格和列,但我被告知我不會獲得這樣做的權利,這是不可協商的。因此,我決定添加一個新的SQL Server數據庫,我將調用Extensions數據庫來存儲我想要放在Master中的附加信息。
因爲我沒有權利放置在同一臺服務器作爲主上擴展數據庫,我創建了另一臺服務器上擴展數據庫,並創造了從擴展數據庫服務器主人的數據庫服務器中的數據庫鏈接。這使我可以執行跨越兩個數據庫的查詢。我還有第三個數據庫,一個Oracle,偶爾會連接到這個數據庫。
因爲我認爲連接到Oracle數據庫需要安裝不太可能位於最終用戶PC上的Oracle驅動程序,所以我決定讓WinForm客戶端調用Web服務,Web服務將返回結果。爲了一致起見,因爲我的直覺告訴我應該從一個地方執行數據庫訪問操作,所以當胖客戶端需要與SQL Server數據庫交談時,我採用了同樣的方法,即他們通過Web服務。
現在我在質疑我是否需要先調用Web服務器,然後讓Web服務器調用數據庫而不是在胖客戶端的用戶PC上打開連接,直接連接到SQL Server數據庫。請注意,我所指的應用程序是需要訪問這三個生產數據庫的非官方實用程序,但不允許實際在生產環境中運行,因此我懷疑我的開發Web服務器和生產數據庫之間的普通高速管道不適用於此。
爲了獲得最佳性能,我的Winform應用程序應該直接建立與SQL Server數據庫的連接嗎?什麼是取捨?
是今天仍然如此,額外的驅動程序需要連接到Oracle數據庫或者是所有的,在.NET框架,現在我可以直接連接到連Oracle數據庫也一樣,如果我想?
另外,我發現,使用該鏈接服務器比創建兩個單獨的DB連接並一起合併數據慢。當我啓動了兩個a-sync查詢,然後將這些數據組合在一起時,我的最佳結果就出現了,就好像它是使用db鏈接返回的一個查詢一樣。但是,這導致維護問題,並且當我需要修改SQL在數據庫之間進行連接時,導致我對此方法感到後悔。
通過Oracle通過SQL Server中的鏈接服務器連接會減慢我的查詢速度,但我同意我不需要Web服務器對Oracle數據庫執行查詢。 你說你不認爲我需要web服務換句話說,客戶端應該直接連接到數據庫。有什麼缺點嗎?我的情況不適用的一個缺點是我的應用程序可能在公司外部運行。防火牆如果Web服務放在它之外。 – ChadD 2009-08-02 20:34:49