WCF集成工具和自托管服务

时间:2010-03-24 20:34:10

标签: wcf castle-windsor

我是自托管多个服务,我这样做是为了注册服务:

host = new ServiceHost(typeof(MyService));
host.Open();

在幕后,wcf通过默认构造函数实例化我的服务。

当我自我托管时,是否可以使用Castle Windsor的WCF集成工具让WCF调用Windsor来创建服务?

该示例似乎显示了IIS托管服务,其中MyService.svc文件的第一行如下所示:

<%@ServiceHost language=c# Debug="true" 
     Service="Microsoft.ServiceModel.Samples.CalculatorService" 
     Factory=WindsorServiceHostFactory%>

可能是wcf使用工厂来实例化服务实例。

2 个答案:

答案 0 :(得分:4)

这可能会有所帮助:
How to host a WCF service that uses Castle Windsor in a Windows Service

但如果不是,那么我建议您尝试询问the castle user forum

答案 1 :(得分:0)

使用Castle 3.0,执行此操作的方法如下:

// setup IoC, including registering the WcfFacility from Castle.WcfIntegrationFacility
container.AddFacility<WcfFacility>();
// and all other registrations you need

然后,假设您在app.config中有必要的详细信息,或者默认值没有问题:

// T is an interface with a backing service implementation registered in your IoC
public static ServiceHostBase StartHostService<T>(string serviceUrl)
{
    var assemblyQualifiedName = typeof(T).AssemblyQualifiedName;
    var serviceHost = new DefaultServiceHostFactory()
        .CreateServiceHost(assemblyQualifiedName, new[] { new Uri(serviceUrl) });
    serviceHost.Open();

    return serviceHost;
}