城堡WCF设施容器配置

时间:2012-05-29 08:11:51

标签: c# wpf wcf castle-windsor

我在使用Castle Windsor提供的WCF设施时遇到了麻烦。我没有找到适当的文档,可以向我指出当前版本的WCF Facility的一些例子。

以下是我的方案:我想编写一个WCF服务,通过TCP公开,由Windows服务托管。

我不知道如何配置WCF工具,在何处配置它是应该在WCF服务中还是在Windows服务主机中。

当我在WCF配置文件中声明服务端点时,如何配置WCF工具?

有人可以帮忙吗?一个链接将非常感激,虽然我找不到多少。

1 个答案:

答案 0 :(得分:2)

这是设置(设计)服务的示例/演练。

对于我的示例,有一个服务契约WindsorWCF.IMyService和一个名为WindsorWCF.MyService的服务。我选择在app config中使用TCP端点配置服务,如下所示:

<system.serviceModel>
  <services>
    <service name="WindsorWCF.MyService">
      <endpoint name ="IMyService_Endpoint" address="net.tcp://localhost:9876/MyService" binding="netTcpBinding" contract="WindsorWCF.IMyService" />
    </service>
  </services>
</system.serviceModel>

接下来,将Window配置(XML)文件添加到服务项目中,并向其添加组件:

<configuration>
  <components>
    <component id="MyService" service="WindsorWCF.IMyService, WindsorWCF" type="WindsorWCF.MyService, WindsorWCF" />
  </components>
</configuration>

在服务主机应用程序本身中,我添加了以下代码(我在编写代码时使用了控制台应用程序,但想法是一样的):

static void Main(string[] args)
{
    InitWindsor();
    var host = new DefaultServiceHostFactory().CreateServiceHost("MyService", new Uri[0]);
    host.Open();
    Console.ReadLine();
}

static IWindsorContainer Container { get; set; }
private static void InitWindsor ()
{
    Container = new WindsorContainer().AddFacility<WcfFacility>().Install(Configuration.FromXmlFile("windsor.config"));
}

这就是例子 - 我相信它是有道理的。