C# 我可以在业务逻辑中使用静态类吗?
这可能是一个重复的问题,但让我们谈谈无状态应用程序,如WebAPI、ASP.NET、WCF。所有这些都是无状态应用程序。那么,我可以使用业务逻辑中的静态类吗。因为静态应用程序将工作得更快C# 我可以在业务逻辑中使用静态类吗?,c#,asp.net-mvc,design-patterns,architecture,static,C#,Asp.net Mvc,Design Patterns,Architecture,Static,这可能是一个重复的问题,但让我们谈谈无状态应用程序,如WebAPI、ASP.NET、WCF。所有这些都是无状态应用程序。那么,我可以使用业务逻辑中的静态类吗。因为静态应用程序将工作得更快 在我们的ASP.NET MVC应用程序中,我们有单独的业务逻辑项目(库)。因为我们使用的是静态类。这是使用静态类的好方法吗?使用静态类有一个很大的缺点:它们很难模拟单元测试(甚至单元测试也很难,这取决于所使用的框架)。即使是静态方法也很难模仿。静态类没有真正的优势,所以答案是:不要将静态类用于业务逻辑。不要对业
在我们的ASP.NET MVC应用程序中,我们有单独的业务逻辑项目(库)。因为我们使用的是静态类。这是使用静态类的好方法吗?使用静态类有一个很大的缺点:它们很难模拟单元测试(甚至单元测试也很难,这取决于所使用的框架)。即使是静态方法也很难模仿。静态类没有真正的优势,所以答案是:不要将静态类用于业务逻辑。不要对业务方法使用静态方法。否,
因为当您使用静态类时,这意味着您不想创建该类的实例,并且它在业务逻辑上是一个非常落后的情况。它不好,原因有几个:
简言之,尽量避免使用静态代码,除非它像扩展方法一样喊“静态”之类的。干净的代码和坚实的原则可以让你更深刻地理解为什么要避免它。“因为静态应用程序会工作得更快”谁告诉你的?代码不是因为它是静态的而更难理解。事实上,它可能会更快,因为它是一次性初始化的,而不是缓存的,但这也适用于非静态类。更快的不是静态类,而是静态方法比实例方法更快。。。但差别如此之小,可以忽略不计。(静态方法更快,因为它们没有包含
this
reference的“hidden”参数……少一个参数->调用更快)。静态类纯粹是C#(它们在IL中间语言中不存在)@xanatos的同步糖,这就是为什么我为了避免重构而不提这一点,因为重构没有带来可测量的改进。谢谢你的清晰解释。但你的观点是什么。按需创建的对象(堆内存),这意味着运行时。因此,在web应用程序设计方面,静态行为更快。第一次加载应用程序时加载的所有类和创建的内存都将被重用,只要应用程序运行i am同意;)