Web api性能?
我刚在想 ,
WebApi
和routing mechanism
工作方式是它读取http verb
(GET POST等…),然后搜索匹配的方法名称/参数:
例如 :
-
如果它是
GET
并且URI是api/Customers/5
:-
方法应该从
Get
开始 -
如果它有
ID
那么搜索一个接受int作为参数的方法。 -
等(有更多规则)。
-
我大多相信他们是用reflection做的。
题 :
对于每个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是由非常聪明的人完成的,他们知道他们在谈论什么。
只想知道我错过了什么。
如果你不编码它,Web api有很多你没有HTTP Handler的选项全部列表: http : //www.asp.net/whitepapers/mvc4-release-notes#_Toc317096197
- OData支持(通过Queryable属性)
- 内容谈判
- filter
- 模型绑定和validation
- 能够在IIS之外自托管
- 链接生成到包含路由规则的相关资源
- 完全支持路由/路由
- 能够使用IApiExplorer创建自定义帮助和测试页面
性能比较HttpHandler与WebAPI: http : //www.west-wind.com/weblog/posts/2012/Sep/04/ASPNET-Frameworks-and-Raw-Throughput-Performance
与往常一样,如果你想要Http Handler的性能,你需要选择最适合你的技术。 如果您想要灵活性和rest,请使用Web API。 如果您公开其他人将使用的Web服务,您可能需要rest