【发布时间】:2019-09-20 19:50:26
【问题描述】:
我创建了一个 .NET Core API 项目。它可以工作,但它会为每个 get 请求创建一个新对象。我可以在哪里保存对象以便我可以重复使用它?我搜索了谷歌并找到了Session,但这似乎只存储字节或序列化字节。我不认为我可以序列化对象。
如果 doSomeInitialisation() 需要 1 秒,则在 arg1 相同时在每个 get 请求中创建一个新的 SomeLibrary 似乎效率不高且 SomeLibrary 不可序列化,因此无法将其存储到 @ 987654329@.
[HttpGet("{arg1}/{arg2}")]
public IActionResult Get(string arg1, string arg2)
{
var someLibrary = new SomeLibrary();
someLibrary.doSomeInitialisation(arg1);
return someLibrary.doSomething(arg2);
}
请求
- httpx://..../dog/1
- httpx://..../dog/2
- httpx://..../dog/3
- httpx://..../cat/1
- httpx://..../cat/2
我可以为前三个请求重用相同的 SomeLibrary 对象。
【问题讨论】:
-
使用控制器的静态成员来保存你的对象怎么样?
-
我想过,但这是推荐的方式吗?
-
考虑使用
Dependency Injection在您的SomeLibrary对象上使用“单例”规范? -
它会起作用,但是在考虑推荐的方法时,由于这是 Dandre 建议的 asp 核心,您可以使用单例服务并注入控制器。
标签: c# asp.net-core asp.net-core-webapi