.Net 中的静态方法与非静态方法

Static methods vs non static methods in .Net

我在 .Net Core 中使用 API,最近我遇到了一种情况,业务层是所有静态方法。这会导致什么样的问题?

为了通过 API 呈现服务,您 不能 静态声明您的方法(具体操作);因为,API 上下文或更好地说必须初始化控制器(每个请求)以呈现服务(获取传入请求并将响应写回 http 上下文)。

但如果 API 不是这种情况,静态方法声明实际上可以帮助您提高性能,因为它可以静态调用,而无需实例化对象。然而,这不是一个好的设计(实际上也不是坏的)。重要的是,您必须很好地分析场景,以确定您是否真的可以利用函数式编程而不是面向对象方法获得的模块化优势。

为了更专业地为您分解,有一种通常称为 Singleton 模式的设计模式,在该模式中,一个对象在程序的生命周期中仅创建一次,并且单个实例是与尝试访问该类型的所有实体共享。也就是说;一点都不差,但是再一次,你必须好好分析一下情况。

例如:单例 entity framework 上下文不是一个好主意,因为上下文可能会被处置,您将丢失所有更改、跟踪数据等。另一方面,单例 ADO.Net 如果您遵循每个静态方法的单一责任概念,上下文是一个好主意。