【发布时间】:2015-03-19 10:44:05
【问题描述】:
我正在研究 NServiceBus 与 Wcf 示例的集成:
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>
问题:
- 如何为第二个 PlaceOrderService 配置 app.config?
-
似乎 NServiceBus 忽略了服务合同(Process 或 ProcessAnotherMessage)中的方法名称 - 我没有看到方法名称的任何使用,只是使用了 TRequest/TResponse 类型参数:
CancelOrderService : WcfServiceCancelOrder, ErrorCodes>
我认为这太过分了——我要发送的每个新方法/消息都创建新的 WcfService 类型、处理程序并配置 app.config。我错过了什么吗?
【问题讨论】:
-
看看这里:github.com/sfarmar/supportcode/tree/master/…,有帮助吗?
标签: c# wcf nservicebus