Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 客户端通过Internet访问SQL Server_C#_Sql Server_Wcf_Web Services_Data Structures - Fatal编程技术网

C# 客户端通过Internet访问SQL Server

C# 客户端通过Internet访问SQL Server,c#,sql-server,wcf,web-services,data-structures,C#,Sql Server,Wcf,Web Services,Data Structures,是否有人对将客户端连接到SQL Server以获取数据的最佳方法有任何意见 假设我在Winform中有一个C#DataGridView,不在内部网络上,我需要用大量数据加载它 当前,为了访问数据,我们在客户端中调用一个组件SQLDataAdapter,该组件打开到SQL server的连接,加载一个数据集,然后关闭数据库连接。这是使用SQL Server身份验证,许多应用程序通过internet同时以相同的方式连接 因此,我希望提高安全性,而不是降低性能。我应该研究这些选项或其他选项中的哪一个

是否有人对将客户端连接到SQL Server以获取数据的最佳方法有任何意见

假设我在Winform中有一个C#DataGridView,不在内部网络上,我需要用大量数据加载它

当前,为了访问数据,我们在客户端中调用一个组件SQLDataAdapter,该组件打开到SQL server的连接,加载一个数据集,然后关闭数据库连接。这是使用SQL Server身份验证,许多应用程序通过internet同时以相同的方式连接

因此,我希望提高安全性,而不是降低性能。我应该研究这些选项或其他选项中的哪一个

-以相同的方式连接,但在应用程序中的用户时间内保持连接打开

-创建WebServices服务器并将数据集或集合传递给客户端

-创建WCF服务器并连接到数据库。(LINQ,Identify Framework,ADO.NET…?)

-创建WebServices和WCF服务器,客户端连接到WCF,WCF从连接到SQL server的WSE服务器获取数据,并将集合或数据集传递回客户端

就我个人而言,我最喜欢最后一种选择,有几个原因。 1.将我们已经构建的组件放到web服务中是很容易的。 2.它将允许我们停止让我们的ASP.NET网站直接访问数据库,而是通过Web服务服务器进行连接(ASMX到ASMX=good?)。 3.我们可以更好地控制哪些数据被访问并提供给网络外部。我们不再需要在应用程序中保留连接字符串

有人有过这些或这些选项组合的经验吗?我有些担心,因为我听说过这样的服务器是漏斗点的恐怖故事,而直接连接到SQL Server并没有问题

谢谢

杰森·斯通


-

在我看来,您需要一个非常有说服力的理由来允许从网络外部直接连接到数据库。如果操作不正确,允许远程Sql连接可能会带来很大的安全风险。业界通过Sql Slammer病毒等艰难的方式了解到了这一点

Winforms/Wpf客户端应用程序->WCF->数据库在现实世界中运行得非常好。此外,将数据访问隐藏在远程应用的服务之后,只要来回传递的数据形状保持不变,就可以在不更改任何客户端的情况下更改数据库和相关对象

另一方面,任何必须从一个逻辑实例(如web应用程序/站点go)为大量并发用户提供服务的应用程序都应该直接连接到数据库


在这两种情况下,我都看不到另一组web服务对WCF和web应用程序隐藏数据库的价值,除非我们讨论的是一个巨大的完全不同的企业系统

在我看来,您需要一个非常有说服力的理由来允许从网络外部直接连接到您的数据库。如果操作不正确,允许远程Sql连接可能会带来很大的安全风险。业界通过Sql Slammer病毒等艰难的方式了解到了这一点

Winforms/Wpf客户端应用程序->WCF->数据库在现实世界中运行得非常好。此外,将数据访问隐藏在远程应用的服务之后,只要来回传递的数据形状保持不变,就可以在不更改任何客户端的情况下更改数据库和相关对象

另一方面,任何必须从一个逻辑实例(如web应用程序/站点go)为大量并发用户提供服务的应用程序都应该直接连接到数据库


在这两种情况下,我都看不到另一组web服务对WCF和web应用程序隐藏数据库的价值,除非我们讨论的是一个巨大的完全不同的企业系统

@Auger所说的,另外,给自己一个SSL证书,并通过HTTPS为所有内容提供服务器。通过这种方式,它是安全的,并且由IIS在较低级别处理,因此您知道您正在获得最佳性能。

正如@Auger所说,另外,您还可以通过HTTPS获得SSL证书和服务器所有内容。通过这种方式,它是安全的,并且由IIS以较低的级别处理,因此您知道您正在获得最佳性能。

您是否查看了(以前的代号为“Astoria”)

它是一种建立在WCF之上的技术,具有WCF的所有优点,允许您相当容易(但有选择地和安全地)将数据模型(通常是ADO.NET实体框架模型,但Linq to SQL或其他技术也可以)作为RESTful服务公开到internet

您可以完全控制在模型中实际表示数据库的哪些部分,然后您可以在模型中具有不同级别的访问权限—您可以允许读取集合(例如,读取所有产品的列表),或者只读取单个项目,甚至更新、插入或删除等内容—所有这些都在您的控制之下

使用REST接口,只需浏览给定的URL,然后从那里向下钻取或链接整个模型

还有一个客户端API可供使用,因此您可以轻松快速地显示数据,并在数据中提供用户导航。你绝对应该看看PDC08与迈克·弗拉斯科和巴勃罗·卡斯特罗的谈话

这绝对是一个好主意,而且是一种将您的数据快速安全地上传到互联网上的方法!看看吧

Marc

您是否查看过(以前的代号为“Astoria”)的文件

它是一种建立在WCF之上的技术,具有WCF的所有优点,允许您相当容易(但有选择地和安全地)将数据模型(通常是ADO.NET实体框架模型,但Linq to SQL或其他技术也可以)作为RESTful服务公开到internet

您可以完全控制在模型中实际表示数据库的哪些部分,然后可以使用不同的lev