【问题标题】:Castle WCF facility Container ConfigurationCastle WCF 设施容器配置
【发布时间】:2012-05-29 08:11:50
【问题描述】:

我在使用 Castle Windsor 提供的 WCF 设施时遇到了问题。我没有找到合适的文档来指出当前版本的 WCF 设施的一些示例。

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

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

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

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

【问题讨论】:

    标签: c# wpf wcf castle-windsor


    【解决方案1】:

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

    对于我的示例,有一个服务合同 WindsorWCF.IMyService 和一个名为 WindsorWCF.MyService 的服务。我选择在应用配置中使用 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"));
    }
    

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

    【讨论】:

    • 谢谢!!!我将如何配置对我的服务的依赖项。理想情况下,我想将它们放在 Windsor intaller 中。在您的示例中:如何在代码中而不是从配置文件中设置 MyService 的依赖项(假设它是一个 IRepository)?
    • 这是一个较旧的线程,但情况类似。如何使用配置文件托管多个服务?请指教。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多