1

经过大量谷歌搜索并冒着提出愚蠢问题的风险,我可以使用一些帮助。我正在开发一个 C# WinForms 客户端应用程序,使用 ADO.NET 从位于 Internet 上的 SQL Server 2012 数据库读取/写入数据。同样的应用程序还需要上传/下载数据文件。客户端应用程序只会被少数员工(永远)使用。员工都在不同的地方。数据库只有大约 20 MB。将定期单独访问大约 100 个数据文件,总大小约为 300 MB。SQL Server 2012 在我们可以完全控制的(非虚拟)Windows Server 2008 R2 机器上运行。客户端应用程序将在 Win-XP 和 Win-7 机器上运行。

优先事项是 1. 互联网安全——让黑客远离 Windows Server 机器和客户端/服务器通信。2. 性能。3. 简单。企业安全性和可扩展性不是问题。此外,如果解决方案覆盖复杂,则性能并不那么重要。

我可以真正使用帮助的两个相关问题:

  1. 鉴于上述优先事项,与数据库通信的最佳方式是什么?我发现的仅有的两个选项是排他性的;WCF 服务或直接通过 VPN。

  2. 再次考虑到上述优先事项,上传/下载数据文件的最佳方式是什么?我确信使用 VPN、WCF、FTP 有很多选择;但我不知道任何细节。此外,使用 SQL Server 2012 FileTable 看起来很有希望,但我不确定它在网络上是如何工作的。备份/恢复以及能够对数据进行全文搜索将是不错的功能,但不是必需的。

我知道什么是 VPN,但从未将其用于这些目的。我知道 PPTP 存在一些安全问题,但我们暂时不会升级 XP 机器。我知道什么是 WCF 服务,但从未编写过。我也不知道在这种情况下 SOAP 或 REST 是否更好。我在 SQL Server 中构建了一个 FileTable,但我不知道如何远程访问数据。我对 C#、ADO.NET 和 SQL Server 有相当的了解。

我意识到这些都是带有主观答案的大问题。尽管如此,任何想法或朝着正确方向的推动都将不胜感激。

4

2 回答 2

1

保持简单并使用标准机制。我的建议如下:

  • 构建一个能够执行所需操作的 WCF 服务。您可以构建 SOAP 或 RESTful 服务。我在这里的一般指导是构建一个 RESTful 服务,因为您正在传输文件,而且这与 REST 集成度更高。使用 SOAP,您需要调整一些设置来传输大文件。
  • 使用 SSL 保护服务,保持简单。VPN 增加了一层复杂性,在这种情况下很可能不需要。此外,它只会使用户的体验变得不那么友好。
  • 不建议根据您的需要使用FileTableSQL Server 2012 中的。您拥有服务器,因此当您发送和接收文件时,处理文件系统会更加直接。
  • 您还可以构建一个简单的表单身份验证过程,为用户创建会话密钥并将其传回。我不确定这是否必要,但如果您需要额外的层,只需将其作为操作之一。然后可以将该会话密钥传递给每个方法并在执行操作之前进行验证。这将是安全的,因为您使用的是 SSL。

这是一个教程,它将帮助您构建一个 RESTful WCF 服务,它是相当新的。

于 2013-01-15T14:00:21.767 回答
0

我的建议是部署一个 VPN 服务器来提供您正在寻找的安全性。有许多不错的 VPN 服务器可用,谷歌搜索应该提供许多不同价位的选项。

一旦您部署了 VPN 服务器(以及您希望能够访问数据库的不在本地网络上的所有计算机的客户端),您就可以使用 ADO.NET 来访问数据库。ADO.NET 将在 VPN 后面无缝运行。

根据您的问题,我假设文件存储在数据库外部的文件系统中,并且数据库仅引用文件。如果是这种情况,您可以使用任意数量的选项来下载文件,但 FTP 是经过时间考验且易于实施的解决方案。在您的情况下,还有其他可能会或可能不会更好地工作(请参阅此处了解一些选项)。

于 2013-01-14T11:40:12.997 回答