【问题标题】:Using web services to retrieve data from a SQL Server database使用 Web 服务从 SQL Server 数据库中检索数据
【发布时间】:2025-12-18 05:20:03
【问题描述】:

最近我一直在开发一个系统来运行一个高度安全的数据库(使用 vb.net 和 SQL Server 2005)。我想提高数据库的安全性,因此不会直接连接到数据库,而是将HttpWebRequest 发送到 Web 服务,然后连接到数据库并以 XML 格式返回请求的数据表。

我关心的只是性能,我不能决定是让客户端直接连接到数据库还是让连接通过 Web 服务。

我可以让连接直接到数据库有很多原因,假设连接是通过服务:

  1. 它会给我带来更好的性能吗?
  2. 检索数据的大小会大于 SQL Server 的常规响应吗?

对此的任何想法都会有很大帮助,在此先感谢。

【问题讨论】:

    标签: sql-server database vb.net


    【解决方案1】:

    1) 通过WebService,它不会给你更好的性能,因为它在你的客户端和数据库之间添加了一层代码。

    2) 由于 web 服务使用信封和标头,我最好的猜测是数据更大。除非您拥有大量数据,否则不会对您的性能造成太大影响。

    尽管如此,我仍然会使用 WebService,以避免将我的数据库直接暴露在互联网上,从而限制安全漏洞。此外,使用 Web 服务允许您在其中编写安全规则,并在它到达您的数据库之前丢弃可能的代码注入和其他安全威胁。

    【讨论】:

      【解决方案2】:

      使用网络服务是最好的选择,但这需要明智地使用。您不能只拥有一个 Web 服务并开始通过它下载数据。糟糕的设计/架构可能会影响性能和安全性。

      如果您可以分享有关您的场景的更多详细信息,即可以连接到 Web 服务的客户端数量、连接频率、数据量,那么我可以向您推荐一些架构。

      【讨论】:

      • 感谢您的关注。该项目最多可以有 15 个用户(至少 5 个同时在线),并且数据库可以在一个表中包含最多 (2000) 个,在另一个表中最多包含 (20,000) 个 [此表将是一个关系表,因此只有最多同时重试 100 条记录] 对于每个会话,最多可以与 Web 服务建立 35 个连接。对此有何建议?非常感谢
      • 在这种情况下,一个简单的 Web 服务就足够了。但我仍然建议您在 Web 方法中添加一些过滤器来限制数据。以下是您可以使用的一些变体:- 1. DownloadData(Record ID) 2. DownloadData(FromDateTime, ToDateTime) 3. DownloadData(LastSyncDateTime) 我希望这将帮助您让客户端访问数据而不会出现任何性能问题。您可以做的一些额外的事情是在下面使用:- 1. 使用 JSON。这将减少下载数据的大小,并帮助您在单个请求中下载更多数据。 2. 利用您要获取数据的表上的索引。
      • 感谢您的回复。客户端软件将以多种不同方式检索数据 [请求],例如,搜索查询将包含许多可变缩合,例如 {a record that it is between two dates and the field X does not contain 'string' AND field Y大于 7} 并且它可能具有与其他表相关的条件,我想说的是,在单个请求中可以包含许多不同的参数,所以说我应该为每个单个查询创建一个 Web 方法?关于 Json,.net 平台是否支持?如何将其转换为数据集?
      • 1.创建方法和参数,完全取决于您的业务需求。看来你已经很好地理解了我的观点。所以尽量保持从 Web 服务返回的结果尽可能小。您可以创建具有许多参数的单个方法来过滤数据。这种方法可能会使事情变得复杂,并且您的 cade 可能难以调试。我建议您编写更多方法,每个方法都处理一个或相关的一组参数。这是开发人员中最好和流行的方法。 2. .NET 有可用于处理 JSON 的库。例如,JSON.NET
      • 哦,非常感谢,这真的很有帮助。你能给我一些关于 JASON.NET 的链接吗?另外,我们将来是否有可能联系我们讨论这个正在进行的项目?谢谢,