Azure web应用程序(webapi)在web Farm /负载平衡



WebForm:在webfarm环境下的webform(带会话)状态应用程序中,会话存储在SQL Server存储中,该存储可以被webfarm中的所有服务器访问。这意味着登录用户的请求可以获得相同的会话,而不管它到达场中的哪个服务器。

WebAPI :我明白webapi的设计是无状态的,所以对于真正的webapi应用程序,我不需要担心状态是如何维护等。通常身份验证令牌在请求之间传递,只要它有效,登录就可以访问服务器上所需的任何资源。这对于一个托管webapi的web服务器来说是很好的。但是网络农场呢?如何在Webapi场中管理"会话"(或Webapi中的等效术语)?

我知道azure提供了以下几个选项…Azure SQL ServerAzure表存储/队列缓存服务

它们似乎给架构增加了额外的复杂性(这在使用SQL Server Session的WebForm中要容易得多)。

另一个稍微不同的问题(可能有点基本)是如何在webapi farm中跟踪请求/响应?即,当客户端向webapi发出请求,webapi发送异步响应时,服务器如何确保其跟踪到客户端?

编辑:

我不希望实现会话是Webapi,而是如何在没有会话状态的Webapi中实现同样的事情。

谢谢

是。在REST中使用会话是一件非常糟糕的事情。

但是你也可以在Web API中模拟会话。在web形式中,服务器在HTML中添加了生成的会话id,这样当用户提交该会话id时,会话id将包含在他们的请求中。您也可以用Web API模拟同样的事情。您可以使用ASP检查此访问会话。. NET Web API

最好可以将信息存储在memcached或redis中。它将工作在网络农场以及。

无论如何,我不建议在Web API中使用"session"。

最新更新