我正在接受一个项目来开发一个我非常兴奋的应用程序。问题是我不完全确定如何实现一个特定的要求。
应用程序需要是客户端应用程序(因此我使用WPF来开发它)并且需要对远程服务器执行CRUD操作(因此其他人也可以访问此数据)。我坚持的主要障碍是这个客户端应用程序不仅将从特定网络运行,而且其中一个核心用户也将在家中使用它。我不确定如何安全地将数据暴露给互联网。
我最初只使用LINQ 2 SQL开发应用程序,想象我只是将端口转发到运行SQL Server的专用机器,但这可能是一个可怕的想法。做一些研究,看起来我假设使用WCF创建服务然后在机器上运行 - 并让WPF客户端应用程序使用它。
这感觉就像在这里做了一些额外的工作,特别是因为我正在使用这个项目来学习 WPF。我甚至还没有查看 WCF。我有另一种选择吗?我最初只是将SQL Server暴露给互联网的概念真是那么糟糕吗?
谢谢!
答案 0 :(得分:1)
首先,我同意你应该避免将你的数据库暴露在互联网上......这就像是让一个孩子一夜之间独自留在树林里(有动物和利润四处寻找生物)。
你确实有几个选择。首先,如果公司有网络管理员,您可以考虑设置VPN。这样员工就可以从家里,防火墙内直接连接到SQL Server。
如果不这样做,我认为使用Linq-to-SQL的WCF不是一个糟糕的选择。我用这两个构建了一个应用程序,它们可以很好地协同工作 - 我将Linq-to-SQL表实体本身作为WCF数据协定。我建议的一件事是为您的CRUD操作选择一个简单的设计模式,并尽可能地坚持它 - 使用Load,Find,InsertOrUpdate和Save的存储库模式。
答案 1 :(得分:1)
我将SQL Server暴露在互联网上的原始概念真的那么糟糕吗?
是。有many caveats而你只是shouldn't(我想把那个句子中的每个单词都链接到另一个来源,但你抓住了我的漂移)。
WCF绝对是这里的方式,因为它有lots of options到secure it并且很容易consumed from within WPF。
虽然公开数据库并直接访问它似乎是最简单的解决方案,但这几乎不是最好的解决方案。您将不得不学习一些新技术,但从长远来看,您将从中受益。
答案 2 :(得分:0)
在这个问题上有很多不同的角度,但如果我理解你在问什么......
解决远程用户问题:可以安全地将SQL Server配置为暴露给Internet,以便将软件作为要连接的服务应用程序。或者您可以将远程用户VPN放入SQL服务器所在的网络中。
对于开发方法,我建议使用MVVM。它适用于WPF,可以让您首先使用自己的自定义数据层学习WPF。然后,当您感到舒服时,您可以重构使用WCF并提供高质量的应用程序。
答案 3 :(得分:0)
为什么不使用WCF数据服务 - http://msdn.microsoft.com/en-us/library/cc668772(v=vs.103).aspx。如果您需要它是安全的,请参阅此http://msdn.microsoft.com/en-us/library/dd728284.aspx