WinForms客户端与远程SQL Server通信和共享数据文件的最佳方式

时间:2013-01-12 23:08:06

标签: c# sql-server wcf ado.net vpn

经过大量的Google搜索并冒着提出愚蠢问题的风险,我可以使用一些帮助。我正在使用ADO.NET开发一个C#WinForms客户端应用程序,以从位于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看起来很有前途,但我不确定它是如何在网络上工作的。备份/恢复以及能够对数据进行全文搜索将是很好的功能,但不是要求。

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

    我意识到这些都是主观答案的重大问题。不过,任何想法或正确方向的推动都会受到高度赞赏。

2 个答案:

答案 0 :(得分:1)

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

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

Here is a tutorial将帮助您完成构建RESTful WCF服务,这是相当新的。

答案 1 :(得分:0)

我的建议是部署VPN服务器以提供您正在寻找的安全性。有许多好的VPN服务器可供使用,谷歌搜索应提供不同价位的多种选择。

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

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

相关问题