希望创建一个客户端应用程序(WPF)来对远程数据执行CRUD操作

时间:2012-04-25 01:47:13

标签: .net wpf sql-server wcf

我正在接受一个项目来开发一个我非常兴奋的应用程序。问题是我不完全确定如何实现一个特定的要求。

应用程序需要是客户端应用程序(因此我使用WPF来开发它)并且需要对远程服务器执行CRUD操作(因此其他人也可以访问此数据)。我坚持的主要障碍是这个客户端应用程序不仅将从特定网络运行,而且其中一个核心用户也将在家中使用它。我不确定如何安全地将数据暴露给互联网。

我最初只使用LINQ 2 SQL开发应用程序,想象我只是将端口转发到运行SQL Server的专用机器,但这可能是一个可怕的想法。做一些研究,看起来我假设使用WCF创建服务然后在机器上运行 - 并让WPF客户端应用程序使用它。

这感觉就像在这里做了一些额外的工作,特别是因为我正在使用这个项目来学习 WPF。我甚至还没有查看 WCF。我有另一种选择吗?我最初只是将SQL Server暴露给互联网的概念真是那么糟糕吗?

谢谢!

4 个答案:

答案 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 optionssecure 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