我听过一些人发表评论说新的ASP.NET WebAPI(DbDataController)中的Entity Framework数据的默认控制器/提供程序严格来说不是基于REST的服务,但更像是RPC风格服务。我知道WebAPI框架允许您创建任何类型的HTTP服务,REST或其他,但是有人可以向我详细解释它是由DbDataController公开的服务使它不是真正的REST服务吗?
答案 0 :(得分:4)
REST架构风格描述了应用于架构的以下六个约束,同时让各个组件的实现可以自由设计:
<强>客户端 - 服务器强>
统一接口将客户端与服务器分开。这种分离 关注意味着,例如,客户不关心数据 存储,它保留在每个服务器的内部,以便 客户端代码的可移植性得到改善。服务器不关心 用户界面或用户状态,以便服务器可以更简单 更具可扩展性服务器和客户端也可以被替换和开发 只要它们之间的界面没有改变就可以独立完成。
<强>无国籍强>
客户端 - 服务器通信进一步受到没有客户端的限制 上下文在请求之间存储在服务器上。每个请求来自 任何客户端都包含服务所需的所有信息 请求,并且任何会话状态都在客户端中保存。服务器可以 有条不紊的;这种约束只需要服务器端状态 可通过URL作为资源进行寻址。这不仅使服务器更多 可见于监控,但也使它们更可靠 部分网络故障以及进一步增强其网络故障 可扩展性。
<强>可缓存强>
与万维网一样,客户端可以缓存响应。回应必须 因此,隐式或显式地将自己定义为可缓存的, 或不,以防止客户重新使用陈旧或不适当的数据 回应进一步的要求。管理良好的缓存部分或 进一步完全消除了一些客户端 - 服务器交互 提高可扩展性和性能。
分层系统
客户通常无法判断它是否直接连接到 终端服务器,或沿途的中间人。中介 服务器可以通过启用负载平衡来提高系统可扩展性 通过提供共享缓存。他们还可以执行安全策略。
按需代码(可选)
服务器可以临时扩展或自定义功能 客户端通过传输可执行代码。这样的例子可以 包括Java applet和客户端等编译组件 JavaScript等脚本。
统一界面
客户端和服务器之间的统一接口,如下所述, 简化和解耦架构,使每个部分都能实现 独立发展。这个界面的四个指导原则 详情如下。
http://en.wikipedia.org/wiki/Representational_state_transfer#Constraints
&#34; REST架构的唯一可选约束是按需代码。如果服务违反任何其他约束,则不能严格地将其视为RESTful。 DbDataController类将实体框架模型公开为HTTP服务。这些服务与WCF数据服务具有很强的功能重叠,例如CRUD支持,元数据和请求批处理。它们甚至部分地模仿了OData的查询字符串格式。但是这些服务遵循RPC样式,它们不是RESTful而且它们不使用OData。&#34;来自这个网站的qoute: