Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否建议将WCF与WPF和MVVM一起使用以从SQL Server检索数据?_Wpf_Sql Server_Wcf - Fatal编程技术网

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

是否建议将WCF与WPF和MVVM一起使用以从SQL Server检索数据?,wpf,sql-server,wcf,Wpf,Sql Server,Wcf,我正在构建一个桌面应用程序,它将在本地网络上使用,SQL Server作为数据库 该应用程序将同时拥有大约50个顶级用户。在哪种特定情况下,我需要使用WCF服务?是否建议在数据库所在的服务器计算机上创建WCF服务,以便我们通过WCF服务连接到此服务器,而不是直接连接到数据库?连接SQL Server数据的推荐方式是什么?为什么 编辑:让我更详细地解释一下。我以前使用过WCF Ria服务,所以我知道它们是如何工作的。让我们假设WCF服务以同样的方式工作。问题是为什么我们要使用WCF而不是直接连接到

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

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

编辑:让我更详细地解释一下。我以前使用过WCF Ria服务,所以我知道它们是如何工作的。让我们假设WCF服务以同样的方式工作。问题是为什么我们要使用WCF而不是直接连接到数据库?我不想具体说明我目前的申请要求,因为我会得到具体要求的具体答案。我的目标是大体上理解为什么和什么时候你会选择一个而不是另一个。到目前为止,我已经收到了令人满意的答案

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


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

除非您需要创建一个可重用的服务,否则我想不出添加WCF层的理由,除非您只是在寻找这样做的理由。我认为您可以使用某种ORM,如EF或nHibernate,并感到高兴。

WCF的主要原因是安全性。如果客户端直接连接到数据库,则必须提供客户端表上的权限。客户端可以侵入连接并直接使用TSQL。您必须在单层应用程序中将端口1433公开到网络。使用WCF,客户端无法直接访问SQL。它不仅在总体上更安全,而且可以具有更细粒度的安全性。NET服务代码可以强制执行行级安全性。表只有列级安全性。如果这是在专用网络上进行的业务,并且您不希望有人试图侵入您的数据库,那么直接连接到SQL server的客户端更容易构建。使用服务器端服务,另一个因素是服务器端代码的更改是一个点,因此您不必更新50台设备。

我认为一个更好的考虑问题的方法是,是否应该使用服务接口从应用程序抽象数据库和数据访问层。您可以使用WCF和SOAP,或者可以使用基于REST的HTTP服务,技术的选择是次要的,无论您的应用程序当前或将来的需求是否表示THA。额外的一层抽象是有争议的

<>您可能会考虑使用服务接口而不是直接连接到SQL数据库,但不限于:

  • 易于支持多个操作系统/客户端UI
  • 能够独立于数据库模式开发数据/服务接口
  • 将应用程序与对数据库架构或位置的更改隔离开来(您不必将更改重新部署到应用程序,只需更改它正在调用的服务的内部)
  • 如果数据可以被其他系统使用,那么您有一种标准的方法来允许这些系统与您的应用程序正在管理的数据交互
  • 减少了SQL数据库连接安全问题(只有服务标识连接到数据库,允许您在客户端使用各种身份验证/授权策略)
您要权衡的是实现服务接口的时间/成本/复杂性与您将获得的灵活性和可维护性优势。在决定是使用ADO.NET直接连接到数据存储还是使用服务层之前,您应该评估应用程序和客户的需要


你应该看看微软,因为它们涵盖了很多考虑因素。

为什么不直接连接到数据库?为什么还要考虑使用WCF?这是我的问题。我需要WCF吗,还是完全足够?使用WCF或直接连接到数据库是更常见的情况吗?优点/缺点是什么?是否有其他推荐的选项?是否需要WAS?WF如何?也许你应该尝试WIF?如果你不知道是否需要它们,那么你不需要它们。WCF也是如此。可能有两个原因使用WCF服务层进行定位:(1)您希望屏蔽应用程序对数据库的直接访问,或(2)您希望潜在地构建多个客户端(例如,今天的WPF应用程序、明天的Silverlight应用程序和之后的ASP.NET MVC应用程序)-WCF服务很好地支持