【问题标题】:What can WCF WebHttp do that ASP.NET MVC cannot?WCF WebHttp 可以做什么,而 ASP.NET MVC 不能?
【发布时间】:2010-08-04 01:25:26
【问题描述】:

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

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


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

【问题讨论】:

  • 这是一个以极具争议性的方式提出的合理问题。为什么不进行一些编辑,以免让我感觉像 &^*£?
  • @spender:你可以专注于这个问题而忘记其他的。
  • 嗯,你到底想让我们说什么?是的,你完全正确,我看到了自己的错误,我们都应该亲吻你走过的土地吗?
  • @Max:将my edit 与您的原始问题进行比较。您的原始标题包含一个假设,使它更像是一个陈述(或咆哮)而不是一个真正的问题。新标题不包含这样的推定。另外,请阅读上面的 spender 的 评论。看起来这个问题还是吸引了一些很好的答案。
  • 既然你回滚了编辑,我正在改变我的投票。 WCF 并不绝对优于 ASP.NET MVC。哪个是更好的工具取决于您要解决的问题。不要试图用锤子解决所有问题;不是每个问题都是钉子。

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


【解决方案1】:

在 MVC 应用程序中有更多的开销。由于您在提供其他服务(不是 SEO 敏感)时并不真正“需要”重写 Url,或者不需要 Google 机器人来理解什么是重要的,所以您不需要 - 因此路由开销是不必要的。

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

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

因此,底线 - 没有必要使用 ASP.NET MVC 来仅提供 JSON 数据,除非您想为消费者提供某种 GUI 并结合 JSON 数据。

我想到了一个首字母缩略词:KISS。 :)

【讨论】:

  • 虽然,“WCF WebHttp 在哪些方面比 ASP.NET MVC 更好?”的问题可以用不同的方式回答:WCF WebHttp 并不比 ASP.NET MVC 好,因为 ASP.NET MVC 具有 URL 重写、路由、为单个方法(HTML、Json、XML、RSS)返回不同内容类型的可能性/Atom、二进制等);)
  • @Yngvebn:您的回答更多是关于“MVC 具有太多不需要的功能”,而不是“WebHttp 确实在 X 上大放异彩”。另外,从来没有说过我的唯一目的是提供 JSON/XML。
  • 好吧,这么说吧:如果您以前从未使用过这两者(ASP.NET MVC 和 WebHTTP)中的任何一个,并且您需要一个简单的 REST 服务器,请选择 WebHTTP 以避免必须学习不需要的东西。如果您已经了解 ASP.NET MVC,请继续。就目前而言,他们能做什么或不能做什么之间没有太大区别。 WebHTTP 是相当新的,所以我猜一两年后我们会看到很多改进。所以你可能会争辩说,WebHTTP 会以更像服务器的方式发展,而 MVC 会以更加 Web 前端框架的方式发展。
  • 我不了解你们,但对于创建 REST API,MVC 是比 WCF 更好的选择。 WCF 是一个巨大的野兽,它是为复杂的 SOAP 世界而设计的,而 REST 支持则被粉碎了。
  • @Eric J. Smith:记住我们在这里讨论的是 WCF WebHTTP,而不仅仅是标准的 WCF-'beast' :)
【解决方案2】:

我看到的问题仍然没有解决。我再试一次...

如果您想要一个具有漂亮 URL 和基于 MVC 架构的成熟网站,ASP.NET MVC 显然是您的最佳选择。现在,我完全明白这不是您要问的问题 - 老实说,您的问题有点含糊,所以这次我可能也听不懂。

.NET 4 中的 WebHTTP 是对 .NET 3 中引入的 WCF 服务的略微简化,它顺应了当今 Web 开发的趋势。 WebHTTP 为自定义 URL 提供了非常广泛的支持,控制响应将是困难的 - 或者基本上只是大量的工作 - 使用常规 WCF 以及在 MVC 中实现这一点。

想象一下买了一个披萨切片机和一把剪刀。两者都可以切披萨,但切片机无疑会更有效率。你也可以用这两种方法剪纸,但最好的效果是用剪刀。

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

底线 - 您可以在两者中实现几乎相同的目标,但它们是针对不同需求量身定制的。

如果这也不是“正确”答案,也许您可​​以为您的问题提供一些背景信息?

【讨论】:

  • 您是说使用 WebHttp 创建 RESTful 服务更容易,但您没有说明原因。
  • 好吧,我不是 WebHTTP 专家,但从我所见和阅读的情况来看,还有很多开箱即用的方法可以让您轻松实现“RESTful”。看看这个博客系列,因为它涵盖了 WebHTTP 中的许多机制:blogs.msdn.com/b/endpoint/archive/2010/01/07/…
【解决方案3】:

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

【讨论】:

  • 你是说 asp.net mvc 不能提供 JSON 服务?
  • 不,不是这么说的。因此,如果问题是您为什么要在 ASP.NET MVC 上使用 WebHttp 来提供 JSON 服务,那么这取决于您的品味,或者更有可能是您已经在哪个平台上编写代码。但是 ASP.NET MVC 代表了很远很远不止于此。
  • 我知道并理解你所说的一切,所以你真的没有帮助回答我的问题。
  • @Max - 为什么是好斗的态度?忽略你不喜欢的答案。
猜你喜欢
  • 1970-01-01
  • 2012-11-17
  • 2020-07-09
  • 2013-08-14
  • 1970-01-01
  • 2011-08-23
  • 2014-12-20
  • 2011-08-16
  • 2018-05-30
相关资源
最近更新 更多