0

Unity IoC이 웹 응용 프로그램에서 어떻게 작동하는지 이해하려고합니다. Visual Studio 2015 프로젝트 템플릿을 사용하여 mVc & API 응용 프로그램을 만들었습니다.UnityWebActivator.start()가 asp.net 응용 프로그램에서 호출되는 방식

NuGet을 사용하면 Unity가 설치됩니다. Unity 구성을 수정하여 주입하려는 유형을 등록했습니다. 처음에 UnityWebActivator.start()를 global.asax 파일에 추가 했었습니다. 시작시 고려해야한다고 생각했지만, 주석으로 처리하면 모든 것이 여전히 작동합니다.

새로운 IoC 컨테이너를 구성하기 위해 UnityWebActivator가 어떻게 호출 되나요?

using System.Linq; 
using System.Web.Mvc; 
using Microsoft.Practices.Unity.Mvc; 

[assembly: WebActivatorEx.PreApplicationStartMethod(typeof(WebDirectory.App_Start.UnityWebActivator), "Start")] 
[assembly: WebActivatorEx.ApplicationShutdownMethod(typeof(WebDirectory.App_Start.UnityWebActivator), "Shutdown")] 

namespace WebDirectory.App_Start 
{ 
/// <summary>Provides the bootstrapping for integrating Unity with ASP.NET MVC.</summary> 
public static class UnityWebActivator 
{ 
    /// <summary>Integrates Unity when the application starts.</summary> 
    public static void Start() 
    { 
     var container = UnityConfig.GetConfiguredContainer(); 

     FilterProviders.Providers.Remove(FilterProviders.Providers.OfType<FilterAttributeFilterProvider>().First()); 
     FilterProviders.Providers.Add(new UnityFilterAttributeFilterProvider(container)); 

     DependencyResolver.SetResolver(new UnityDependencyResolver(container)); 

     // TODO: Uncomment if you want to use PerRequestLifetimeManager 
     // Microsoft.Web.Infrastructure.DynamicModuleHelper.DynamicModuleUtility.RegisterModule(typeof(UnityPerRequestHttpModule)); 
    } 

    /// <summary>Disposes the Unity container when the application is shut down.</summary> 
    public static void Shutdown() 
    { 
     var container = UnityConfig.GetConfiguredContainer(); 
     container.Dispose(); 
    } 
} 
} 

답변

0

WebActivatorEx.PreApplicationStartMethod는 응용 프로그램을 초기화하는 동안 start 메소드를 조기에 호출합니다. 응용 프로그램이 종료 될 때 호출되는 종료 방법도 있음을 알 수 있습니다.

+0

감사합니다. 메신저 .net에 더 익숙하며 아직 기능과 특징을 배우지 않았습니다. 나는 그 전화가 그것일지도 모른다고 생각했지만 약간의 확인을 원했습니다! – Mike

+0

규칙의 예외입니다. 대부분의 경우 응용 프로그램에는 표준 시작점이 있지만 WebActivatorEx는 특별한 경우이며 매우 많이 사용되는 것을 보지 못했습니다. 일반적으로 의존성 주입에 대해서는 다른 것들을 사용하는 것을 기억합니다. – CubeRoot

관련 문제