我正在规划一个应用程序,这将有一个基于web的组件和桌面客户端组件。基本上,我计划创建一个基于web的组件使用ASP.NET MVC3和Entity Framework作为一个正常的数据驱动的网站,但我也计划创建一个桌面客户端,将扩展网站的功能,这对我来说是新的领域,我有点困惑。我知道创建需要访问中央数据库的应用程序的最好方法是使用WCF,但我以前没有使用过它,但听说它很容易与Entity Framework集成。
所以我知道我想要做的事情肯定是可能的,我只是在寻找一些指导,关于这个应用程序的独立组件应该如何粘合在一起,等等,我应该首先使用WCF和Entity Framework吗?或者我应该在使用WCF之前完成基于web的组件网
谢谢,亚历克斯。
发布于 2011-11-22 18:45:20
有很多方法可以做到这一点,所有这些方法都有不同程度的复杂性。例如,您可以使用实体框架来构建您的web应用程序,在同一个web应用程序中,您可以公开一个OData服务(WCF Data Service),它提供了一个RESTful服务,您的WPF应用程序可以使用该服务来访问数据库。这相当简单,因为WCF数据服务与实体框架配合得非常好。这基本上是两分钟的工作(如果你没有做任何花哨的事情)。然后,您的WPF应用程序基本上具有与您的web应用程序相同的数据库访问类型。在其默认配置中,WCF Data Service仅公开EF ObjectContext,并允许对其执行相同类型的操作。我建议您尝试一下,看看它是否符合您的要求。
但是,这种方法基本上是允许桌面应用程序访问数据库的捷径。在大多数情况下,这是非常好的。如果您确实想在其中投入一些精力,您可以对使用实体框架数据源或OData数据源的服务层进行建模。从现在开始,一切都是关于设计模式的。这是有代价的;层分离是一件很难做的事情,如果你想做好它的话。鉴于.NET的世界在某种程度上已经改变为“完成工作”,把这些部分放在一起,很快就能得到一个运行中的应用程序是很好的。
您还应该考虑到WPF中的MVVM和web应用程序中的MVC有根本的区别;在MVC应用程序只是从数据库中提取“快照”的情况下,WPF应用程序可能需要更多的工作和异步编程才能感觉自然。
我可以为您提供一些特定任务的指导,比如如何解耦WCF数据服务和实体框架,但从我的经验来看,“正确地做好它”的开销是巨大的。如果您在没有服务层的情况下感到舒适,那么使用EF和OData将会有一个愉快的体验。
发布于 2011-11-22 18:13:14
最好从web组件开始,首先与wcf集成,你可以使用实体框架,但如果你有一个数据密集型数据库,我建议你使用T-Sql本身,它为你提供了很多性能选项。我建议你使用MVP模式构建应用程序模型,因为它使得从桌面应用程序切换到web应用程序变得很容易,而且还符合您扩展它的需求。
https://stackoverflow.com/questions/8224837
复制相似问题