Castle Windsor에서 IOC 컨테이너를 만들려고합니다.이 구성은 여러 어셈블리에서 공유됩니다.성 Windsor IOC 컨테이너에서 유창한 구성을 공유하는 방법
는 (다음은이 유니티에서 작동하는 방법의 예입니다. 내가하고 싶은 것은 성 윈저를 사용하여 동일한 방식으로 작동하도록하는 것입니다) ...
내가 프로젝트 구성을 다음 한을
TestCompany.Services.Host
(Web project hosting a number of .svc files)
PrintService.svc
Web.Config
Unity.Config
TestCompany.Services.PrintService
IPrintService.cs
PrintService.cs
내 "PrintService"의 실제 구현은 내 Services.Host 안에 있지만 TestCompany.Services.PrintService 어셈블리에는 구현되어 있지 않습니다.
public static IUnityContainer GetContainer()
{
// Checks for existance of container (_container == null) ommitted.
var section = ConfigurationManager.GetSection("unity") as UnityConfigurationSection;
section.Configure(_container, name);
...
...
}
이 방법은 Unity.Config에서 유니티 구성 섹션을로드 (도시하지 않음) 내 공유 프로젝트 코드 내가 유니티 구성을로드 할 책임이 컨테이너 도우미가의 일환 ...으로
컨테이너를 구성하는 데 사용합니다.
이 방법의 장점은 하나의 Unity.Config가 AppDomain 내부에로드되어 (하나의 가정하에) 여러 어셈블리를 서비스 할 수 있다는 것입니다. 내 서비스 호스트에서 사용하는 어셈블리에서 GetContainer()를 호출하면 같은 유형의 등으로 채워진 컨테이너가 반환됩니다.
Castle Windsor의 유창한 구성을 사용하고 싶지만, 공유 할 수있는 구성 파일을 제공합니다. PrintService와 향후 서비스는 모두 동일한 종속성을 해결해야하며 이러한 서비스간에 유창한 구성을 반복해야 할 필요가 없습니다.
이상적으로는 내가 사용하는 모든 어셈블리에 "플로우"할 수있는 서비스 호스트 응용 프로그램에서 구성된 일종의 컨테이너가 필요합니다.
감사합니다.
두 가지 다른 컨테이너 프레임 워크를 동시에 사용하는 이유는 무엇입니까? – Steven
저는 성 (Castle)에서 어떻게하고 싶은지를 보여주기 위해 유니티 (Unity)에서 어떻게 수행되었는지를 보여 주려고합니다. # – Remotec