10

我刚在想 ,

随着 WebApi它的routing mechanism 工作方式是读取http verb( GET POST 等...),然后搜索匹配的方法名称/参数:

例如 :

  • 如果是GET 并且 URI 是api/Customers/5

    • 方法应该从Get

    • 如果有ID,请搜索一个接受 int 作为参数的方法。

    • 等等(还有更多规则)。

我主要相信他们是使用反射来做到的。

问题 :

对于每个 URI 请求,搜索所有这些数据只是为了附加一个方法,这难道不是对性能的影响吗?

我可以在哪里轻松地从客户端发送一个非常短的字符串,这将暗示服务器端的方法?

为什么不以简单的方式来做呢?好的,因为我们想使用 http 动词作为含义。好的。但是这么多操作只是为了执行一个方法

示例 #1

get api/Customers/5

可能

a.ashx?m=gc&id=5 (method=GetCustomer & id=5)

示例 #2

put api/Customers/5?v=123

可能

a.ashx?m=uc&id=5?v=123' (method=UpdateCustomer & id=5 & value=123)

我的更短。

不要误会我的意思。我相信这个 api 是由非常聪明的人完成的,他们知道他们在说什么。

只是想知道我错过了什么。

4

1 回答 1

14

如果您不对其进行编码,Web api 有很多 HTTP 处理程序所没有的选项完整列表:http ://www.asp.net/whitepapers/mvc4-release-notes#_Toc317096197

  • OData 支持(通过 Queryable 属性)
  • 内容协商
  • 过滤器
  • 模型绑定和验证
  • 能够在 IIS 之外自行托管
  • 与包含路由规则的相关资源的链接生成
  • 完全支持路由/路由
  • 能够使用 IApiExplorer 创建自定义帮助和测试页面

性能比较 HttpHandler 与 WebAPI:http ://www.west-wind.com/weblog/posts/2012/Sep/04/ASPNET-Frameworks-and-Raw-Throughput-Performance

As always, you need to choose the the technology that suits you best, if you want performance go with Http Handler. If you want flexibility and rest go with Web API. You might want rest if you expose web services that other will consume

于 2013-02-04T12:19:31.237 回答