从头开始构建多层Web应用程序时,我应该使用WCF进行数据访问吗?

时间:2012-07-26 23:02:25

标签: c# asp.net-mvc wcf design-patterns ef-code-first

我即将从下到上构建一个相当复杂的Web应用程序,我想以正确的方式使用适当的设计模式(我过去并不总是使用)和最新的.Net技术。

我的目标是从一个Web应用程序开始,但使未来的移动应用程序,第三方应用程序开发和插件成为可能。

这引出了我的主要难题:对于网站(我将使用MVC模式构建),我应该使用WCF将我的数据模型公开为API,还是应该通过一个API简单地引用我的数据DLL(或Web应用程序解决方案中的单独项目)?

让我支持并给你一些我的其他设计想法,所以你知道我想要做什么,如果任何一个看起来像是错误的方法,请提供意见和建议:

  1. 我想使用EF和代码优先方法构建我的数据模型,使用工作单元和存储库等设计模式。
  2. 我想通过使用WCF的API公开我的数据模型(1)。
  3. 我想使用TDD和MVC构建一个Web应用程序,在那里我从我的数据模型中获取数据(1)。
  4. 因此,鉴于上述情况,当我可以轻松地以其他方式访问数据模型时,让Web应用程序使用WCF API似乎是一个额外的麻烦,只需在我的Web应用程序中引用它即可。此外,后者似乎更容易,因为我可以立即访问我的数据模型中的所有对象。我看不出如何使用Web服务?我之所以想要使用WCF API,是因为我只是通过API公开您的数据,没有例外,以便真正能够为多个平台开发,我听到了如此多的赞誉。还有其他什么原因?我可以为WCF使用除Http消息之外的任何内容吗?我可以公开对象,如果是,那么如何?

    我觉得我正在寻找的很多答案都可以在网上找到,但是我花了很多时间查看拼图的各个部分并且仍然很难将它们连接起来以适应一起。我希望你们能提供帮助,这个问题也可以使其他人受益。

    正如我所说,我想以正确的方式做到这一点,所以你的意见(在设计阶段的任何阶段)都非常感激。 谢谢!

2 个答案:

答案 0 :(得分:2)

我想说使用新的WebAPI框架构建数据API。这样,任何可以通过HTTP使用RESTful接口的东西都可以连接到它:http://www.asp.net/web-api

此外,您可以设置项目,以便从单独的项目中引用数据模型,这样您就不必在主Web应用程序中浏览网络。 WebAPI项目可以是独立的,但使用通用模型来确保事物是一致的

答案 1 :(得分:1)

查看WCF数据服务(DataService)和WCF RIA服务(DomainService)....它可以将您的实体模型公开为服务。

http://jack.ukleja.com/wcf-data-services-vs-wcf-ria-services/

本指南可帮助您确定如何构建层/层。

http://apparchguide.codeplex.com/