public void CanDiscoverServiceEndpointInManagedMode()
{
var netBinding = new NetTcpBinding { PortSharingEnabled = true };
var probeAt = new EndpointAddress("net.tcp://localhost/ServiceCatalog/Probe");
var discoveryProxy = new DiscoveryEndpoint(netBinding, probeAt) { IsSystemEndpoint = false };
using (new WindsorContainer()
.AddFacility<WcfFacility>(f => f.CloseTimeout = TimeSpan.Zero)
.Register(
Component.For<IServiceCatalogImplementation>().ImplementedBy<InMemoryServiceCatalog>(),
Component.For<AdHocServiceCatalogProbe>(),
Component.For<IServiceCatalog>().ImplementedBy<ServiceCatalog>()
.AsWcfService(new DefaultServiceModel()
.AddBaseAddresses(
"net.tcp://localhost/ServiceCatalog")
.AddEndpoints(
WcfEndpoint.BoundTo(netBinding),
WcfEndpoint.FromEndpoint(discoveryProxy))
.AddExtensions(typeof(AdHocServiceCatalogProbe))
),
Component.For<IOperations>().ImplementedBy<Operations>()
.DependsOn(new { number = 42 })
.AsWcfService(new DefaultServiceModel().AddEndpoints(
WcfEndpoint.BoundTo(netBinding).At("net.tcp://localhost/Operations2"))
.Discoverable(discovery => discovery.Announce())
)
))
{
using (var clientContainer = new WindsorContainer()
.AddFacility<WcfFacility>()
.Register(Component.For<IOperations>()
.AsWcfClient(WcfEndpoint.Discover().ManagedBy(discoveryProxy))
))
{
var client = clientContainer.Resolve<IOperations>();
Assert.AreEqual(42, client.GetValueFromConstructor());
}
}
}
#endif