【问题标题】:Web api performance?Web API 性能?
【发布时间】:2013-02-04 11:21:24
【问题描述】:

我在想,

WebApirouting 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 是由非常聪明的人完成的,他们知道他们在说什么。

只想知道我错过了什么。

【问题讨论】:

  • 如果您正在寻找速度,我强烈建议您看看ServiceStack...我曾经使用过,但再也没有使用过 WebApi :)
  • @balexandre 只是想知道每个人都在谈论这个 API...我昨天尝试过它很酷。但是,嘿,为什么不以简单的方式来做呢?好的,因为我们想使用 http 动词作为含义。好的。但是这么多操作只是为了执行一个方法?
  • 我什至更喜欢 WCF Web 服务而不是这个新的 Web API
  • ASP.NET Web API 并不是要取代标准的 Web 服务。它旨在支持REST 和其他一些现代网络标准,如内容协商等。如果您不想遵循 REST 原则(假设动词具有意义并正确使用),那么您很可能不需要Web API - 这只是使用适当工具完成适当工作的一个例子。
  • @tpeczek 我有没有提到网络服务? (它使用肥皂协议并且非常重......)?我可以在没有 web 服务的情况下发送命令 .... 你知道的.,.. 给一个处理程序,上面写的正是我写的。

标签: c# asp.net asp.net-mvc .net-4.0 asp.net-web-api


【解决方案1】:

Web api 有很多选项,如果你不编写 HTTP Handler 的话 完整名单: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

与往常一样,您需要选择最适合您的技术,如果您想要性能,请使用 Http Handler。如果您想要灵活性和休息,请使用 Web API。如果您公开其他人将使用的 Web 服务,您可能需要休息

【讨论】:

  • 如果您问是否可以从 Web 表单使用 Web API,答案是肯定的。看一看:blogs.msdn.com/b/henrikn/archive/2012/02/23/…
  • 谢谢。那不是我的问题。 Q : 我可以通过下载的MVC包使用你在webforms中提到的功能吗?
  • 我没有全部使用,但我觉得你可以全部使用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-29
  • 1970-01-01
相关资源
最近更新 更多