什么可以WCF WebHttp做ASP.NET MVC不能做什么?

时间:2010-08-04 01:25:26

标签: .net asp.net asp.net-mvc wcf

请不要“他们解决2个不同的问题”答案,这是相同的 HTTP请求和响应问题。仅仅因为你在MVC中有视图/模板并不意味着你必须使用它们。 M_C足以提供XML和JSON。

请不要“这是微软说你应该做的”答案。如果我这么想,我不会问这个问题。

<小时/> 显然人们不喜欢我的问题,但标题很清楚。我想了解WebHttp可以做什么,MVC不能做什么,或者两者都可以做什么但是使用WebHttp它更容易或更强大。
我真的在寻找细节,而不是关于何时选择其中一个的高级描述。

3 个答案:

答案 0 :(得分:8)

MVC应用程序中有更多的开销。由于您在提供其他服务(不是搜索引擎优化敏感)时不需要“重写”,或者不需要谷歌机器人来了解什么是重要的,因此您不需要 - 因此不需要路由开销。

核心MVC功能所需的ASP.NET MVC程序集包含特定于视图的方法,从而使它们更大。如果您的唯一目的是提供JSON / XML,则无需使用扩展方法来创建文本框,复选框等。

为WCF服务进行单元测试也是一项更容易的任务,因为您不需要使用模拟控制器,模拟上下文等等。(给定JSON响应是您提供的唯一内容)

所以底线 - 除非你想为comsumer提供某种类型的GUI和JSON数据,否则不必使用ASP.NET MVC来提供JSON数据。

一个首字母缩略词浮现在脑海中:KISS。 :)

答案 1 :(得分:3)

我看到的问题仍未解决。我会再试一次......

如果你想要一个看起来很漂亮的网站和基于MVC的体系结构的完整网站,ASP.NET MVC显然是要走的路。现在,我完全理解这不是你所要求的 - 说实话,你的问题有点模糊,所以这次我也许不会得到它。

.NET 4中的WebHTTP略微简化了在.NET 3中引入的WCF服务,它遵循当今Web开发的趋势。 WebHTTP非常广泛地支持自定义URL,控制那些很难 - 或者基本上只是很多工作 - 的响应来实现常规WCF以及MVC。

购买比萨饼和一把剪刀的图片。你可以用两者切比萨饼,但切片机无疑会更有效率。你也可以用两者剪纸,但最好的结果将是剪刀。

您可以使用MVC和WebHTTP实现相同的功能,但是例如创建一个View对于MVC来说更简单,因为它是其主要功能的一部分(实际上是缩写)。另一方面,改变单一方法的响应类型在WebHTTP中是一项微不足道的任务,而在MVC中则需要更多的修改。制作RESTful服务也是如此。 WebHTTP是为那样的东西而制作的 - MVC不是。

底线 - 你可以在两者中实现几乎相同的东西,但它们是根据不同的需求量身定制的。

如果这也不是“正确”的答案,也许你可以为你的问题提供一些背景知识吗?

答案 2 :(得分:1)

他们彼此无关。 WebHttp用于(作为示例)为您的Web服务创建ajax入口点。 ASP.NET MVC是关于HTML页面的服务器端交付。是的,我知道你让我不要给你这个答案。但这只是因为我相信你在理解这个问题时遗漏了一些东西。