有沒有人對將客戶端連接到SQL Server以獲取數據的最佳方式有任何意見。客戶端通過Internet訪問SQL Server
所以可以說我有一個C#中的DataGridView不是內部網絡上的WinForm的,我需要用大量的數據加載它。
目前訪問我們在打開一個與SQL服務器的連接,客戶端調用組件SqlDataAdapter的數據,加載一個DataSet,然後關閉數據庫連接。這是使用SQL Server身份驗證,並有許多應用程序在同一時間以相同方式連接到互聯網上。
所以我想提高安全性,不降低性能。我應該看看哪些選項或其他選項?
- 連接方式相同,但保持連接打開的應用程序用戶的持續時間。
- 創建WebServices服務器並將數據集或集合傳遞給客戶端。
- 創建WCF服務器並連接到數據庫。 (LINQ,Identify Framework,ADO.NET ...?)
- 同時創建WebServices和WCF服務器,客戶端連接到WCF,WCF從連接到SQL Server的WSE服務器獲取數據並將集合或數據集傳遞迴客戶端
就我個人而言,我最喜歡最後的選擇有幾個原因。 1.很容易將我們已經構建的組件放到Web服務中。 2.它可以讓我們停止讓我們的ASP.NET網站直接訪問數據庫,但通過Web服務器(ASMX到ASMX =好?)連接。 3.我們可以更好地控制訪問哪些數據並將其提供給我們的網絡之外。我們不再需要在應用程序中保留連接字符串。
有沒有人有這些經驗或這些選項的組合?我有些謹慎,因爲我聽說過像這樣的服務器的恐怖故事是漏斗點,當沒有問題直接連接到SQL Server時。
感謝
傑森·斯通
-
我們已經有了我們的Web服務的Intranet應用程序和我們的外部的WinForms已經有很好的組件組織所有的數據訪問。因此,在我的測試示例中,我有一個Web服務項目的所有數據訪問權限,然後在我的wcf應用程序中添加作爲Web引用的Web客戶端,然後在客戶端中添加WCF服務器作爲服務客戶端。我有點像抽象的數據訪問層,然後是安全層(WCF)。我們也可能讓WCF在客戶端運行其他例程。我只是不想這樣做,如果它會放慢速度。 – JasonBlackwoodStone 2009-10-17 21:16:57
如果WCF到WS呼叫位於同一個網絡/ Intranet上,它將引入一個微小的perf命中(毫秒)。最大的開銷可能是通過網絡發送soap,而不是他們以前對數據庫的tcp連接。我想說,如果不是每次打電話的話,你至少會介紹十分之一秒。對於大多數數據錄入應用程序,它不會是客戶會注意到的。如果這是一個在線視頻遊戲,它將是顯而易見的。 – 2009-10-17 21:54:45