有没有人对将客户端连接到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