【问题标题】:Asp.NET MVC is REST but Why Asp.NET WebForms are not?Asp.NET MVC 是 REST 但为什么 Asp.NET WebForms 不是?
【发布时间】:2010-09-01 21:19:00
【问题描述】:

好吧,当我阅读有关 MVC 的文章时,我一直在互联网上听到这样的话:“由于 Asp.NET MVC 是 REST,因此很容易使用……等等。”我从来没有听说过这样的 Asp.NET Webforms,这让我想知道什么是 REST。

据我了解,REST 意味着表示状态传输,其中用户在浏览器上看到的就是一种状态。但我不认为这意味着它应该总是像 MVC 那样的 RPC。它可以是由服务器提供的物理页面,就像它在 Asp.NET WebForms (Default.aspx) 中的工作方式一样,只要它返回状态表示,就称为 REST。

所以如果我的理解没问题,那么网络表单不应该也是 REST 吗?

呃,我有点糊涂了……

提前谢谢....

编辑并简要回答: 好的,伙计们,听好了:)这是我认为正确的答案:

众所周知,REST 应该符合以下基本原则:

* Give every “thing” an ID
* Link things together
* Use standard methods
* Resources with multiple representations
* Communicate statelessly

据我们所知,webforms 使用高度回发,会话来了解以前的请求,您可以无数次回发以获得类似的东西:

search.aspx 并发布 dropdownmenu 的选定值,没有获取,只有从服务器发布和回发。

嗯,这显然不能是宁静的建筑风格。

【问题讨论】:

  • 除非您是原始 WebForms 设计团队的成员,否则无法回答。
  • 为什么它被标记为“关闭”。我问了我的问题。
  • 当您阅读常见问题解答时,您应该在“避免提出主观、争论或需要扩展讨论的问题”这句话上逗留更长时间。 :)
  • @bzlm :我不认为这是主观的,我只是想了解这些。我心中有疑问和疑问,我问了。 (o_O)
  • 不是一个主观问题。 REST 是一个定义明确的概念,WebForms 的工作方式也是众所周知的。应该可以提供一个明确的权威答案,将 WebForms 与 REST 的定义进行比较,指出差异。

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


【解决方案1】:

这是令人惊讶的声明。如果我在 ASP.NET MVC 中使用会话,它根本就不是 REST。

编辑:

REST 是无状态的。如果我使用会话,则处理将成为有状态的。后续请求将能够使用状态(来自会话),因此 HTTP 响应不会包含整个状态。

【讨论】:

  • 你能详细说明你的最后陈述吗? '如果我在 ASP.NET MVC 中使用会话,它根本就不是 REST。'
  • 恶人根本不休息!
【解决方案2】:

MVC 中 URL 路由的目标是搜索引擎优化和用户友好的 URL。它不是任何形式意义上的 REST 协议,因为它不使用 HTTP 动词(除了通常的 GET 和 POST),也不是为数据设计的。 URL 对应于控制器和操作,而不是任何数据模式。

MVC 还将优先考虑直接映射到文件的任何 URL,因此仍然可以使用 WebForm 类型的路由。

WCF 确实支持 REST,但它是一种数据传输协议,而不是一种页面映射机制。

您可能想阅读REST;它确实与 ASP.NET MVC 路由完全分开。

【讨论】:

  • 有一张图显示了MVC和REST的关系:ur.ly/kQPw,你可以在这个链接下找到整篇文章:ur.ly/kYT9
  • ASP.NET MVC 对任何 HTTP 动词都有一流的支持。停止 FUD。 :)
  • 好的,我的立场是正确的,但我不相信这是 MVC 的原始或主要意图。 REST 是一种网络服务协议; ASP.NET MVC 是关于站点和页面的设计和实现。我更愿意将服务设计和实现留给 WCF 等通信工具。
  • REST 不是协议。它也不是“网络服务协议”,不管这意味着什么。
  • @bzim,REST 是一种通过 HTTP 实现的数据访问协议。随心所欲地称呼它。 (顺便说一句,你的礼貌在哪里?) REST 与导航网站无关,这就是 ASP.NET MVC 的 URL 路由的全部内容。即使 REST 协议可以在 ASP.NET MVC 中实现,但将 ASP.NET MVC 称为“restful”是不准确且令人困惑的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-10
  • 1970-01-01
  • 2011-09-28
  • 2010-09-13
  • 1970-01-01
相关资源
最近更新 更多