我有一个业务逻辑,它有很多数据库获取操作和一些复杂的业务逻辑.在用户的会话中很少更改提取的数据.
许多Fetch操作(在用户的会话中很少更改获取的数据).
对于表单上的每个操作(按钮单击/文本框中的值更改等...),我们需要运行业务逻辑来检查它是否是有效的更改.
目前我们正在使用Asp.net Forms Application,这些业务逻辑在InSessionScope()中.目前,我们正致力于迁移到Restful API(WebAPI).
我们可以在RESTFul中使用会话(InSessionScope())吗?
如果不在会话中如何避免更多数据库调用并在后续调用中使用相同的对象并提高性能?
小智.. 6
基于我的个人经验,永远不要在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 !!)
基于我的个人经验,永远不要在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 !!)