一般来说,使用方法但没有字段或属性的类的实例化是否有很多开销?
我正在开发一个 ASP.NET MVC 应用程序,该应用程序大量使用构造函数注入,到目前为止,一些控制器有多达 10 个依赖项。但是由于大量的依赖项,我IMyAppServiceProvider
通过 MVC 3 中的 DependencyResolver 求助于一个接口和类,它提供对所有依赖项的通用访问。
我删除了所有特定于应用程序的代码,并使用我的基本设置创建了一个Gist(但这不包括下面提到的 BaseController 设置)。
我还创建了一个接受IMyAppServiceProvider
. 所有控制器都继承自这个基类。基类接受IMyAppServiceProvider
对象并为所有各种服务提供受保护的变量。代码看起来像这样:
public class BaseController
{
protected IService1 _service1;
protected IService2 _service2;
protected IService3 _service3;
// ...
public BaseController(IMyAppServiceProvider serviceProvider)
{
_service1 = serviceProvider.GetService<IService1>;
_service2 = serviceProvider.GetService<IService2>;
_service3 = serviceProvider.GetService<IService3>;
// ...
}
}
这使得控制器的代码“干净利落”。没有私有/受保护变量,构造函数中没有赋值,并且服务由基类受保护变量引用。 但是,每个请求都会实例化我的应用程序使用的每一个服务,无论特定控制器是否使用所有这些服务。
我的服务很简单,只包含带有一些业务逻辑和数据库交互的方法调用。它们是无状态的,没有类字段或属性。因此,实例化应该很快,但我想知道这是否是最佳实践(我知道这是一个加载术语)。