2012-09-19 82 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并没有解决你的连接问题:如果你说“应用程序在特定时间永久挂起”,你应该调查,无论如何。但这是一个不同的问题。