WPF + WCF + MVC + EF Web /桌面应用程序

Ale*_*nor 3 wpf wcf entity-framework-4 asp.net-mvc-3

我正在计划一个具有基于Web的组件和桌面客户端组件的应用程序.基本上我打算使用ASP.NET MVC3&Entity Framework作为普通的数据驱动网站来创建基于Web的组件,但是我也计划创建一个扩展网站功能的桌面客户端,这对我来说是一个新的领域,我有点困惑.我知道创建需要访问中央数据库的应用程序的最佳方法是使用WCF,但我之前没有使用过WCF,但听说它很容易集成Entity Framework.

所以我知道我想要做的当然是可能的,我只是在寻找这个应用程序的独立组件如何应粘合在一起的一些指导等应该与我合作WCFEntity Framework第一?或者我应该在使用之前完成基于Web的组件WCF

谢谢,亚历克斯.

J. *_*hon 6

有很多方法可以做到这一点,所有这些方式都有不同程度的复杂性.例如,您可以使用Entity Framework构建Web应用程序,在同一Web应用程序中展示OData服务(WCF数据服务),该服务提供WPF应用程序可用于访问数据库的RESTful服务.这非常简单,因为WCF数据服务与Entity Framework非常合作.这基本上是一个两分钟的工作(如果你没有做任何花哨的事).然后,您的WPF应用程序与Web应用程序具有基本相同的数据库访问类型.在它的默认配置中,WCF数据服务只是公开EF ObjectContext并允许对其进行相同类型的操作.我建议你尝试一下,看看它是否符合你的要求.

但是,这种方法基本上是允许桌面应用程序访问您的数据库的快捷方式.在大多数情况下,这完全没问题.如果您确实想要付出一些努力,可以建模使用Entity Framework数据源或OData数据源的服务层.从现在开始,这一切都与设计模式有关.这需要付出代价; 如果你想做正确的话,分层是很难的事情.鉴于.NET世界稍微改变为"完成工作",将这些位置放在一起并立即获得正在运行的应用程序是很好的.

您还应该考虑WPF中的MVVM和Web应用程序中的MVC存在根本差异; 一个MVC应用程序只是从数据库中提取"快照",WPF应用程序可能需要更多的努力和异步编程才能感觉自然.

我可以为您提供一些特定任务的指导,比如如何解耦WCF数据服务和实体框架,但根据我的经验,"做正确"的开销是巨大的.如果您在没有服务层的情况下感到舒适,那么您将拥有使用EF和OData的愉快体验.