wpf - 是否建议将 WCF 与 WPF 和 MVVM 一起使用从 SQL Server 检索数据?

标签 wpf sql-server wcf

我正在构建一个将在本地网络上使用的桌面应用程序,以 SQL Server 作为数据库。

此应用程序将同时拥有大约 50 个用户。在什么特定场景下我需要使用WCF服务?是否建议在数据库所在的服务器计算机上创建WCF服务,以便我们通过WCF服务连接到该服务器,而不是直接连接到数据库?连接 SQL Server 数据的推荐方法是什么?为什么?

编辑:让我更详细地解释一下。我以前使用过 WCF Ria 服务,所以我知道它们是如何工作的。我们假设 WCF 服务以同样的方式工作。问题是为什么我们要使用WCF而不是直接连接数据库?我不想指定我当前的申请要求,因为我会得到特定要求的具体答案。我的目标是总体了解您为什么以及何时选择其中一种而不是另一种。到目前为止我已经收到了满意的答复。

在我看来,普遍的共识是仅当需要另一种类型的应用程序(该应用程序将使用 Web 访问从服务获取数据)时才使用 WCF。另外,如果我理解正确的话,从安全角度来看,两者没有区别。

将来会有一个统计应用程序,使用网络向用户提供只读统计数据,自然需要一些服务来完成此任务(应用程序没有考虑到特定的客户,它将提供给很多人)客户)。由于我需要为特定客户快速完成一些演示应用程序,所以我想忽略服务部分,并进行适当的分层(WPF->VM->Model->EF,所以稍后我将在之间插入服务模型和 EF。我想应该不会花太多时间让 WPF 应用程序与插入层一起运行。我还推迟了该服务,因为下一个原因:因为 HTML5 是(将是)Web 的主要技术,并且有SL 作为技术(我一直在使用)可能会被放弃,逻辑决定是选择 HTML5 而不是 SL。但由于我完全不熟悉 HTML5 及其要求,我不确定 WCF 服务是否是最好的的选择,这也是推迟选择服务类型的决定的原因之一(以及尽可能快地制作桌面演示应用程序的要求)。

最佳答案

我认为考虑这个问题的更好方法是您是否应该使用服务接口(interface)从应用程序中抽象数据库和数据访问层。您可以使用 WCF 和 SOAP,也可以使用基于 REST 的 HTTP 服务,技术的选择次要于应用程序的当前或 future 需求是否表明需要额外的抽象层。

您可能考虑使用服务接口(interface)而不是直接连接到 SQL 数据库的原因包括但不限于:

  • 轻松支持多个操作系统/客户端 UI
  • 能够独立于数据库架构改进数据/服务接口(interface)
  • 将应用程序与数据库架构或位置的更改隔离(您不必将更改重新部署到应用程序,只需更改它所调用的服务的内部结构)
  • 如果数据可以被其他系统使用,您就有了一种标准方法来允许这些系统与您的应用程序正在管理的数据进行交互
  • 减少 SQL 数据库连接安全问题(只有服务身份连接到数据库,允许您在客户端使用各种身份验证/授权策略)

您需要权衡的是实现服务接口(interface)的时间/成本/复杂性与您将获得的灵 active 和可维护性优势。在决定是使用 ADO.NET 直接连接到数据存储还是使用服务层之前,您应该评估应用程序和客户的需求。

您应该看看 Microsoft Service Layer Guidelines因为它们涵盖了许多需要考虑的因素。

关于wpf - 是否建议将 WCF 与 WPF 和 MVVM 一起使用从 SQL Server 检索数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10233642/

相关文章:

c# - WPF:使用复选框绑定(bind)命令

sql - 将 CSV 从 Blob 存储批量加载到 SQL 数据库

c# - 从 webHttpBinding 端点获取元数据

wcf - WCF数据服务-如何诊断请求错误?

c# - 仅当项目不重复时才将项目添加到 ListView

wpf - 如何处理面向 Windows 应用商店应用程序和 WP7、WP8、WPF 的可移植类库中的图像?

c# - WPF DataGrid Cell 不离开编辑模式

sql-server - WSO2 API 管理器 - 使用 SQL Server 进行集群时设置 'CacheId'

php - 选择Access DB文件中的全部或少数表并将其存储在sql server中

asp.net - 关于连接用户数量的文章?