【问题标题】:Looking to create a Client-Side Application (WPF) to perform CRUD operations on remote data希望创建一个客户端应用程序 (WPF) 来对远程数据执行 CRUD 操作
【发布时间】:2012-04-25 01:47:13
【问题描述】:

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

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

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

感觉这里有点额外的工作,特别是因为我正在使用这个项目来学习 WPF。我什至还没有研究 WCF。我还有其他选择吗?我最初只是将 SQL Server 暴露在互联网上的概念真的那么糟糕吗?

谢谢!

【问题讨论】:

    标签: .net wpf sql-server wcf


    【解决方案1】:

    我最初只是将 SQL Server 暴露在互联网上的想法真的那么糟糕吗?

    是的。有manycaveats,你只是shouldn't(我想把那句话中的每个单词都链接到另一个来源,但你明白我的意思)。

    WCF 绝对是这里的最佳选择,因为它有 lots of optionssecure it 并且很容易成为 consumed from within WPF

    虽然公开数据库并直接访问它似乎是最简单的解决方案,但这绝不是最好的解决方案。您将不得不学习一些新技术,但从长远来看,您会从中受益。

    【讨论】:

      【解决方案2】:

      首先,我同意您应该避免将您的数据库暴露在互联网上......这就像把一个婴儿独自留在树林里过夜(有些生物为了运动和利润而四处游荡)。

      不过,您确实有一些选择。一方面,如果公司有网络管理员,您可能会考虑设置 VPN。这样员工就可以在家中的防火墙内直接连接到 SQL Server。

      如果做不到这一点,我认为带有 Linq-to-SQL 的 WCF 并不是一个糟糕的选择。我用这两个构建了一个应用程序,它们一起工作得很好——我将 Linq-to-SQL 表实体本身作为 WCF 数据契约。我会推荐的一件事是为您的 CRUD 操作选择一种简单的设计模式,并尽可能坚持使用它 - 具有 Load、Find、InsertOrUpdate 和 Save 的存储库模式。

      【讨论】:

        【解决方案3】:

        这个问题有很多不同的角度,但如果我理解你在问什么......

        要解决您的远程用户问题:可以安全地将 SQL Server 配置为向 Internet 公开,以便软件即服务应用程序连接到该应用程序。或者,您可以让远程用户 VPN 进入 SQL 服务器所在的网络。

        对于开发方法,我建议使用 MVVM。它与 WPF 配合得很好,并且允许您首先使用自己的自定义数据层来学习 WPF。然后,当您感到舒服时,您可以重构以使用 WCF 并交付高质量的应用程序。

        【讨论】:

          【解决方案4】:

          为什么不使用 WCF 数据服务 - http://msdn.microsoft.com/en-us/library/cc668772(v=vs.103).aspx 。如果您需要它的安全性,请查看此http://msdn.microsoft.com/en-us/library/dd728284.aspx

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-05-28
            • 2011-04-20
            • 1970-01-01
            • 2021-12-30
            • 1970-01-01
            • 2020-09-13
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多