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

3
我正在计划一个应用程序,它将有一个基于Web的组件和一个桌面客户端组件。基本上,我计划使用ASP.NET MVC3Entity Framework创建Web组件作为普通数据驱动网站,但我还计划创建一个桌面客户端,以扩展网站的功能。对于我来说,这是新领域,我有些困惑。我知道创建需要访问中央数据库的应用程序的最佳方法是使用WCF,但我以前没有使用过WCF,只听说它很容易与Entity Framework集成。
所以我知道我想做的肯定是可能的,我只是想寻求一些关于如何将此应用程序的不同组件粘合在一起的指导,等等,我应该先使用WCFEntity Framework吗?还是应该先完成基于Web的组件再使用WCF
谢谢, Alex.
2个回答

6
有很多方法可以实现这一点,所有这些方法都有不同的复杂度级别。例如,您可以使用Entity Framework构建Web应用程序,在同一个Web应用程序中暴露一个OData服务(WCF Data Service),该服务提供了一个RESTful服务,您的WPF应用程序可以使用它来访问数据库。这相当容易,因为WCF数据服务与Entity Framework非常配合。这基本上是一个两分钟的工作(如果您没有做任何花哨的事情)。您的WPF应用程序然后基本上具有与Web应用程序相同类型的对数据库的访问权限。在默认配置下,WCF数据服务只是公开EF ObjectContext并允许进行相同类型的操作。我建议您尝试一下,并亲自看看它是否符合您的要求。
但是,这种方法基本上是一种快捷方式,允许桌面应用程序访问您的数据库。在大多数情况下,这是完全可以的。如果您确实想付出一些努力,那么您可以建模一个服务层,该服务层使用Entity Framework数据源或OData数据源。从这里开始,一切都关乎设计模式。这需要付出代价;分离层是一件难以做到的事情,如果您想做到正确。鉴于.NET世界已经有所改变,以“完成工作”为主,将这些部分组合在一起并在短时间内获得运行的应用程序是可以接受的。
您还应考虑WPF中的MVVM和Web应用程序中的MVC有根本区别;其中MVC应用程序只需从数据库中提取“快照”,而WPF应用程序可能需要更多的工作和异步编程才能自然地感觉到。
我可以为特定任务提供一些指导,例如如何解耦WCF数据服务和Entity Framework,但从我的经验来看,“做正确”的开销是巨大的。如果您不需要服务层,那么使用EF和OData将会是一个非常愉快的体验。

2

最好从与wcf集成的Web组件开始,您可以使用实体框架,但如果您有数据量大的数据库并且需要更多的性能选项,我建议使用T-Sql本身。

我建议您使用MVP模式构建应用程序模型,因为它使得从桌面应用程序到Web应用程序的切换变得容易,并且符合您扩展需求的要求。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接