0
我有一個服務運行在多個不同的服務器上,配置非常相似。我希望能夠使用Castle Windsor WCF工具爲任意端點地址生成客戶端。現在溫莎WCF多客戶端客戶端
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);
}
}
但是這對我忘記配置特定端點並不健壯。有沒有更優雅的解決方案?