经过大量谷歌搜索并冒着提出愚蠢问题的风险,我可以使用一些帮助。我正在开发一个 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. 简单。企业安全性和可扩展性不是问题。此外,如果解决方案覆盖复杂,则性能并不那么重要。
我可以真正使用帮助的两个相关问题:
鉴于上述优先事项,与数据库通信的最佳方式是什么?我发现的仅有的两个选项是排他性的;WCF 服务或直接通过 VPN。
再次考虑到上述优先事项,上传/下载数据文件的最佳方式是什么?我确信使用 VPN、WCF、FTP 有很多选择;但我不知道任何细节。此外,使用 SQL Server 2012 FileTable 看起来很有希望,但我不确定它在网络上是如何工作的。备份/恢复以及能够对数据进行全文搜索将是不错的功能,但不是必需的。
我知道什么是 VPN,但从未将其用于这些目的。我知道 PPTP 存在一些安全问题,但我们暂时不会升级 XP 机器。我知道什么是 WCF 服务,但从未编写过。我也不知道在这种情况下 SOAP 或 REST 是否更好。我在 SQL Server 中构建了一个 FileTable,但我不知道如何远程访问数据。我对 C#、ADO.NET 和 SQL Server 有相当的了解。
我意识到这些都是带有主观答案的大问题。尽管如此,任何想法或朝着正确方向的推动都将不胜感激。