Asp.NET MVC是REST,但为什么Asp.NET WebForms不是?

时间:2010-09-01 21:19:00

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

好的,我在阅读有关MVC的文章时一直在互联网上听到这句话:“既然Asp.NET MVC是REST,那么很容易消费......等等。”我从来没有听说过Asp.NET Webforms这样的事情,它让我想知道什么是REST。

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

所以如果我的理解很好,那么webforms也不应该是REST吗?

Uggh,我有点困惑......

提前致谢....

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

我们知道REST应符合以下基本原则:

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

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

search.aspx并发布dropdownmenu的所选值,并且没有获取,只有来自服务器的帖子和回发。

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

2 个答案:

答案 0 :(得分:1)

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

编辑:

REST无国籍。如果我使用会话,那么进阶将成为有状态的。后续请求将能够使用状态(来自会话),因此HTTP响应将不包含整个状态。

答案 1 :(得分:1)

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

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

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

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