【问题标题】:WCF Integration Facility and Self-Hosted ServicesWCF 集成工具和自托管服务
【发布时间】:2010-03-24 20:34:09
【问题描述】:

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

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 可能使用工厂来实例化服务实例。

【问题讨论】:

  • 其实工厂是用来实例化ServiceHost的一个实例。然后,该主机将根据需要创建服务类实例来处理传入的请求

标签: wcf castle-windsor


【解决方案1】:

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

但如果不是,那么我建议您尝试在the castle user forum 上提问。

【讨论】:

  • 谢谢,这几乎正是我所需要的。很棒。
【解决方案2】:

使用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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-07
    • 1970-01-01
    • 2014-01-21
    • 1970-01-01
    相关资源
    最近更新 更多