【发布时间】:2010-10-28 23:54:38
【问题描述】:
我们的应用程序是使用 SQL Server Express 作为其数据存储的 Windows 客户端(C++/MFC 迁移到 C#)。我们会定期更新应用程序使用的数据。 (我们的用户使用我们提供的内容数据作为他们自己使用客户端构建的项目的基础;数据库也存储他们的项目,以实现跨网络的协作)。
一段时间以来,我们一直使用古老的方法来提供包含所有最新数据的巨大“更新包”。更新程序必须在服务器上运行,并将数据库文件与包中包含的文件交换。是的,出于多种原因,这种做法很糟糕。我们想取消它。
具体来说,我们将提供一个更新对话框,用户在其中检查他们想要更新的项目,然后单击更新。然后后台进程从内容服务器中提取选定的项目并将其插入用户的数据库中。
什么是从 Windows 客户端中提取此数据的安全方法,因为它们可能会选择加入或退出可能数百个单独的项目?
我考虑过:
- 远程连接到 SQL 服务器。直接查询数据。易于实施,但不安全。在寻找更好的方法来执行此操作时,出现了使用 VPN 或 SSH 的建议,但对于我们的客户在他们的客户端计算机上进行设置来说,这两种方法似乎都不是特别方便。
- HTTP 内容服务,提供每个单独内容项的 zip 文件。或者它会根据用户的请求动态构建。 (例如,我们提交一个列出所需项目的 XML 文件,然后服务器端进程从 sql 服务器导出数据并将其压缩到一个包中)。
其他具有程序内内容更新功能的应用如何做到这一点?有什么建议可以朝着正确的方向前进(或者至少是一个好的方向)?
谢谢, D
编辑:我们不一定关心数据传输是否安全(内容不是敏感数据);在这种情况下,我所说的“安全性”是指“有没有比将远程 SQL 服务器暴露给中国的抨击者更好的方法”。
【问题讨论】:
标签: c# sql-server client-server