WCF用于远程SQL连接?

时间:2012-09-19 09:02:40

标签: c# wpf sql-server 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服务器是否是最佳做法?

哪种方法最好?有没有最能说明这一点的链接?

2 个答案:

答案 0 :(得分:2)

在您当前的场景中,WCF对您没用。如果编写管理数据库连接的服务器端应用程序,则可以使用WCF将数据发送到客户端。但是,这需要您的客户端软件也适合使用WCF,但在这种情况下,您的客户端将无法访问数据库(您将从双层架构更改为三层架构)。它可能会解决您的问题,并可能引入其他一些问题。

您描述的悬挂问题可能是由许多事情引起的。例如,您可能会耗尽数据库连接,陷入死锁(即使服务器正常终止该事务),或者只是对正在编辑的数据进行锁定,并且使用它的员工会休息。

问题也可能不是数据库连接,而是客户端代码中的问题。由于我没有细节,我不能告诉你任何更具体的细节。

答案 1 :(得分:1)

根据您选择的措辞,我认为您不会使用WCF“连接到远程SQL服务器”。但是,您当然可以使用WCF来托管服务,为您的客户端(WPF应用程序)提供对数据的安全访问,但它会间接地这样做。这种方法与您目前的方法完全不同:直接从WPF应用程序访问服务器。

虽然我自己没有使用它,但我相信一种方法可能是WCF Data Services。如果您只需要在服务中进行一些操作(例如GetRecord)进行打印,那么您也可以将自己的WCF服务(仅提供“记录”)发送到您的客户端应用程序。任何关于WCF的介绍性书籍或教程都可能会让你顺利上路。


上面回答了您似乎要问的问题。但是,WCF并不能解决您的连接问题:如果您说“应用程序[...]在某些时间永远挂起”,那么无论如何都应该进行调查。但这是一个不同的问题。