我有一个业务逻辑,它具有大量的数据库获取操作和一些复杂的业务逻辑。 提取的数据很少在用户会话中更改。
目前我们正在使用Asp.net Forms Application,这些业务逻辑在InSessionScope()中。 目前,我们正致力于迁移到Restful API(WebAPI)。
答案 0 :(得分:5)
根据我的个人经验,永远不要在Rest应用程序中使用Session作为AspNET WebAPI ..即使你可以......但是使用令牌进行授权和用户分析(使用AspNet身份)和性能(不要多次击中DB)我建议你采取一些方法:
1 - USE CACHE!
! (有一些很棒的框架和lib用于缓存..你可以使用不同的缓存层..查询.. webapi的响应...例如我用来缓存整个API响应(Json)并自动进行调用on POST / PUT / DELETE request)..在.NET中你可以使用这个https://github.com/filipw/Strathweb.CacheOutput
您还可以使用Redis
进行缓存(如果您不想在服务器中本地缓存但是要使用分布式缓存)
2 - 尝试以NoSQL
方式思考..在我们的应用程序中,我们使用DB .. SQL Server以及MongoDB
(特别是对于大量数据)的混合,例如我们使用SQL服务器管理AspNEt身份,但我们使用MongoDB来存储我们的产品(我们有大约6百万的产品),查询需要大约1秒(也有聚合!!)..
3 - 如果您可以存储一些信息,请尝试在LocalStorage
上使用FrontEnd
。然后在需要时同步它们。
希望它可以帮助你...享受WebAPI ..享受REST !! (并在我的想法中尽快离开网络表格!!)
答案 1 :(得分:0)
您可以使用由您或JwtToken实现的令牌。
如果您选择在登录方法上实现自定义令牌,则必须将令牌返回给您的应用,然后在任何api调用中,将此令牌(如标头或查询字符串)传递给服务器,然后在服务器中解密以验证提议。