У меня есть служба, работающая на нескольких разных серверах с очень похожими конфигурациями. Я хочу иметь возможность использовать Castle Windsor WCF Facility для создания клиента для произвольных адресов конечных точек.Windsor WCF Client для нескольких конечных точек
public class ServiceFactory {
public IService GetService(string hostName){
....
}
}
Теперь я буду знать, во время компиляции, что будет все мои услуги, так что я могу это сделать:
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"));
А потом сделать мой ServiceFactory так:
public class ServiceFactory
{
private readonly IWindsorContainer _container;
public ServiceFactory(IWindsorContainer container)
{
_container = container;
}
public IService GetService(string hostName)
{
return _container.Resolve<IService>(hostName);
}
}
Но я не уверен в том, что я забываю настроить конкретную конечную точку. Есть ли более элегантное решение?