如何在WCF服务协定中公开多个方法时配置NServiceBus端点

时间:2015-03-19 10:44:05

标签: c# wcf nservicebus

我正在研究与Wcf样本的NServiceBus集成:

WcfIntegration sample on github

我想用第二种方法扩展ICancelOrderService:

 [ServiceContract]
public interface ICancelOrderService
{
    [OperationContract]
    ErrorCodes Process(CancelOrder request);
    [OperationContract]
    ErrorCodes ProcessAnotherMessage(PlaceOrder request);
}

据我了解,我应该添加来自WcfService的新服务

public class PlaceOrderService : WcfService<CancelOrder, ErrorCodes>
{
}

和相应的PlaceOrderHandler:

public class PlaceOrderHandler : IHandleMessages<PlaceOrder>
{
    private readonly IBus bus;

    public PlaceOrderHandler(IBus bus)
    {
        this.bus = bus;
    }

    public void Handle(PlaceOrder message)
    {
        Console.WriteLine("===========PLACE ORDER message============");

        if (message.OrderId % 2 == 0)
            bus.Return((int)ErrorCodes.Fail);
        else
            bus.Return((int)ErrorCodes.None);
    }
}

服务器的app.config包含以下配置:

<services>
  <service name="Server.WebServices.CancelOrderService" behaviorConfiguration="Default">
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
    <host>
      <baseAddresses>
        <add baseAddress="http://localhost:9009/services/cancelOrder" />
      </baseAddresses>
    </host>
  </service>
</services>

问题:

  1. 如何为第二个PlaceOrderService配置app.config?
  2. 似乎服务合同(Process或ProcessAnotherMessage)中的方法名称被NServiceBus忽略 - 我没有看到任何使用方法名称只使用TRequest / TResponse类型参数:

    CancelOrderService:WcfService&lt; CancelOrder 错误代码&gt;

  3. 我认为这种方式过于谨慎 - 对于我要发送的每个新方法/消息,都会创建新的WcfService类型,处理程序并配置app.config。我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

可以使用VS工具设置第二个端点的配置 - wcf配置工具:右键单击app.config - &gt;编辑wcf配置 - &gt;创建新服务并按照向导步骤设置新端点。

this video (WCF using C#: Building your first WCF application)  可能很有用(端点设置在30-35分钟)