매우 유사한 구성을 가진 여러 다른 서버에서 실행되는 서비스가 있습니다. Castle Windsor WCF Facility를 사용하여 임의의 종점 주소에 대한 클라이언트를 생성 할 수 있기를 원합니다.여러 엔드 포인트 용 Windsor WCF 클라이언트
public class ServiceFactory {
public IService GetService(string hostName){
....
}
}
지금, 나는 내 모든 서비스가 될 것입니다 무엇을 컴파일 타임에 알, 그래서이 할 수 있습니다 :이처럼 내 ServiceFactory를
var container = new WindsorContainer();
// ...
container.AddFacility<WcfFacility>(f => f.CloseTimeout = TimeSpan.Zero);
container.Register(Component.For<IService>().AsWcfClient(new DefaultClientModel()
{
Endpoint = WcfEndpoint.BoundTo(new NetTcpBinding()).At("net.tcp://hostname:port")
}).Named("hostname"));
을 그리고 수행
public class ServiceFactory
{
private readonly IWindsorContainer _container;
public ServiceFactory(IWindsorContainer container)
{
_container = container;
}
public IService GetService(string hostName)
{
return _container.Resolve<IService>(hostName);
}
}
그러나 이것은 특정 엔드 포인트를 구성하는 것을 잊어 버리는 것에 대해 강력하지 않습니다. 보다 우아한 솔루션이 있습니까?