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

C# 当从头开始构建多层web应用程序时,我应该使用WCF进行数据访问吗?,c#,asp.net-mvc,wcf,design-patterns,ef-code-first,C#,Asp.net Mvc,Wcf,Design Patterns,Ef Code First,我将要从下到上构建一个相当复杂的web应用程序,我希望使用适当的设计模式(我过去并不总是使用这种模式)和最新的.Net技术以正确的方式来实现它 我的目标是从一个web应用程序开始,但让它成为未来移动应用程序、第三方应用程序开发和插件的可能 这就引出了我的主要难题:对于网站(我将使用MVC模式构建),我应该使用WCF将数据模型公开为API,还是应该通过dll(或web应用程序解决方案中的单独项目)引用数据 让我来支持它,并给你一些我的其他设计想法,这样你就知道我在尝试做什么,如果其中任何一种方法看

我将要从下到上构建一个相当复杂的web应用程序,我希望使用适当的设计模式(我过去并不总是使用这种模式)和最新的.Net技术以正确的方式来实现它

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

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

让我来支持它,并给你一些我的其他设计想法,这样你就知道我在尝试做什么,如果其中任何一种方法看起来是错误的,请提供意见和建议:

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

    我觉得我正在寻找的很多答案都可以在网上找到,但我花了很多时间研究拼图的各个部分,仍然很难将它们连接起来。我希望你们能帮忙,这是一个对其他人也有好处的问题

    正如我所说的,我希望以正确的方式完成这项工作,因此非常感谢您(在设计阶段的任何阶段)的投入。
    谢谢

    看看WCF数据服务(DataService)和WCF RIA服务(DomainService)…它们可以将实体模型作为服务公开

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


    我建议使用新的WebAPI框架构建一个数据API。这样,任何可以通过HTTP使用RESTful接口的东西都可以连接到它:


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

    谢谢-我不知道这一点。看起来很有趣。我会在我的数据模型之上构建它,然后让我的web应用程序的控制器与之通信吗?我想这才是真正让我困惑的部分。WebAPI在体系结构上与ASP.NET MVC非常相似,但MVC端用于呈现视图,而WebAPI用于返回序列化(通常为JSON)对象。我将加入解决方案:一个MVCWeb应用程序、一个WebAPI应用程序和一个通用类库。类库将是你的数据模型,你的MVC应用程序将是你的前端站点,你的WebAPI应用程序将用于第三方/插件/可能是移动设备。您也可以将MVC应用程序作为API来构建,但我认为最好将其分离。这种方法对我很有意义,WebAPI将构建在我的数据模型的基础上,但与web应用程序分离。感谢链接。读了一点之后,我想你的意思是WCF数据服务最适合我,对吗?我仍然不清楚它将如何融入主架构。《架构指南》也很棒(基本上证实了我的计划,并给了我一些额外的想法)。