san*_*eep 2 c# asp.net design-patterns asp.net-web-api asp.net-web-api2
我有一个业务逻辑,它有很多数据库获取操作和一些复杂的业务逻辑.在用户的会话中很少更改提取的数据.
目前我们正在使用Asp.net Forms Application,这些业务逻辑在InSessionScope()中.目前,我们正致力于迁移到Restful API(WebAPI).
基于我的个人经验,永远不要在Rest应用程序中使用Session作为AspNET WebAPI ..即使你可以..但是使用令牌进行授权和用户分析(使用AspNet Identity)和性能(不要太多次击中DB)我建议你采取一些方法:
1 - USE CACHE!!(有一些很棒的框架和缓存的库..你可以使用不同的缓存层..查询.. webapi的响应...例如我用来缓存整个API响应(Json)并在POST上自动进行invaildate/PUT/DELETE请求)..在.NET中你可以使用它https://github.com/filipw/Strathweb.CacheOutput
你也可以Redis用于缓存(如果你不想在服务器本地缓存但是有一个分布式缓存)
2 - 尝试思考NoSQL...在我们的应用程序中我们使用DB ... SQL Server的混合物MongoDB(特别是对于大量数据)例如我们使用SQL服务器来管理AspNEt Identity但我们使用MongoDB来存储我们的产品(我们有大约6百万的产品),查询需要大约1秒(也有聚合!!)..
3 -尝试使用LocalStorage的FrontEnd,如果你可以存储一些信息..然后在需要时同步它们..
希望它可以帮助你...享受WebAPI ..享受REST!(并在你的想法中尽快离开webforms !!)