小编Max*_*Max的帖子

在asp.net mvc控制器中使用构造函数注入的IoC会浪费资源吗?

我不确定它是否只是我,但我感觉ASP.NET MVC控制器中使用的构造函数注入导致不必要的资源消耗.

在创建控制器时,仍然需要创建未用于特定Web请求的组件.当我渴望牛奶时,就像买摊位牛奶和果汁一样,然后我就扔掉果汁.

比较控制器的构造函数注入和服务定位器的这些示例,以澄清我的担忧.

构造函数注入,booth deps已创建,但只使用了一个.

public class MyController : Controller
{
    private readonly IDep1 _dep1;
    private readonly IDep2 _dep2;

    public MyController(IDep1 dep1, IDep2 dep2)
    {
        _dep1 = dep1;
        _dep2 = dep2;
    }

    public ActionResult Index()
    {
        _dep1.MakeStuff();
        return View();
    }
    public ActionResult PageTwo()
    {
        _dep2.MakeStuff();
        return View();
    }
}
Run Code Online (Sandbox Code Playgroud)

服务定位器,每个dep仅在使用时创建.

public class MyController : Controller
{
    public ActionResult Index()
    {
        var dep1 = ServiceLocator.Resolve<IDep1>();
        dep1.MakeStuff();
        return View();
    }
    public ActionResult PageTwo()
    {
        var dep2 = ServiceLocator.Resolve<IDep2>(); …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc dependency-injection service-locator

8
推荐指数
1
解决办法
1051
查看次数