webapi中的静态类



我看到了一个在webapi .net core中使用的代码。因为这个类是一次性创建的。那么我们如何保证多个调用是隔离的。这是正确的做法吗?这里有什么问题?

因为一个api web请求GetLocation被调用id =6和一些其他值为_order对象和另一个api web请求GetLocation被调用id =9。它们同时发生。那么这些对方法的调用是孤立的吗?

我不是在谈论DI或其他分离

public static class Common
{

public static Location GetLocation(long id, Order _order)
{
-- We create instance of our business classes and Data access layer
--Inside here Database queries and buisness logic
-- 
}
}

主查询

在托管的rest api中,公共逻辑可以封装为静态方法,这是一个共享方法。是否会对多个并发请求造成麻烦

条件条件是,这段代码很好

一个方法,无论是静态的还是非静态的,都只是一组需要执行的指令/逻辑。它没有自己的内存,只有在没有lock and mutex的情况下以不安全的方式访问静态/共享变量时才会出现问题,然后它可能导致race condition / data corruption。唯一的问题是静态方法在初始类加载期间加载,不需要访问对象,只需要类名。使用静态方法虽然通常是一种反模式,但它不适用于dependency injection, mocking frameworks and unit testing

在你的情况下

您似乎正在创建本地变量来执行业务/数据逻辑,这应该很好。事实上,即使在非静态方法中,也需要保护共享变量。

我不是静态方法/静态变量的忠实粉丝,因为它们很容易因稍后引入共享变量和多个线程/请求的不安全访问而陷入麻烦。为了将来的可扩展性和集成性,我建议采用非静态方法。

最新更新