私は非常によく似た構成の複数の異なるサーバー上で実行されているサービスを持っています。 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);
}
}
しかし、これは特定のエンドポイントを設定することを忘れている私にとって堅牢ではありません。より洗練されたソリューションはありますか?