2012-09-19 121 views
0

我現有的情況如下:用於遠程SQL連接的WCF?

我有一個駐留在公司主要辦公室的SQL服務器。該公司還有另一個相距60英里的分支。

我已經安裝在電腦中的主要辦公室WPF應用程序和連接到主辦公室的SQL服務器,打印記錄等

我在app.config文件中指定的連接參數的分支如下:

<add name="CompanyEntities" connectionString="metadata=res://*/LabModel.csdl|res://*/LabModel.ssdl|res://*/LabModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=publicIPaddress of remote SQL here;Initial Catalog=databasename;Persist Security Info=True;User ID=sa;Password=password;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" /> 

我的問題是,分支中的應用程序永遠在某些時候掛起。所以我的問題是,它是否使用WCF連接到遠程SQL服務器的最佳做法?

哪個是最好的方法呢?有沒有最好的描述這個的鏈接?

+1

你認爲問題在於SQL Server沒有足夠快的響應或者類似的東西?您可以通過向SQL服務器發送「ping」消息並隨後檢查結果來對其進行測試。 – TimVK

回答

2

在你當前的情況下,WCF對你來說沒用。如果您編寫管理數據庫連接的服務器端應用程序,則可以使用WCF將數據發送給客戶端。但是,這需要您的客戶端軟件也適用於WCF,但在這種情況下,您的客戶端將無法訪問數據庫(您將從兩層架構變爲三層架構)。它可能會解決您的問題,並且可能會引入其他一些問題。

你描述的懸掛問題可能是由許多事情引起的。例如,你可以用盡數據庫連接,進入死鎖狀態(儘管事務會被服務器正常終止),或者只是簡單地鎖定正在編輯的數據,而僱員使用它來休息。

也有可能,問題不在於數據庫連接,而在客戶端代碼中。由於我沒有細節,我無法告訴你更具體的事情。

1

選擇您選擇的措辭,我不認爲您會使用WCF連接到遠程SQL服務器「」。但是,您當然可以使用WCF來託管一個服務,該服務爲您的客戶端(WPF應用程序)提供對數據的安全訪問權限,儘管它會間接完成此操作。這種方法與您目前的方法大不相同:直接從WPF應用程序訪問服務器。

儘管我自己並沒有使用它,但我相信一種方法可能是WCF Data Services。如果您的服務只需要一些操作(例如GetRecord)進行打印,您也可以將自己的WCF服務轉移到客戶端應用程序中。任何有關WCF的介紹性書籍或教程都可能讓你走上正軌。


以上答案你似乎在問問題。然而,WCF並沒有解決你的連接問題:如果你說「應用程序在特定時間永久掛起」,你應該調查,無論如何。但這是一個不同的問題。