2012-01-10 55 views
0

我有一个WCF WF Web服务(工作流服务4.0),并且此服务的每个操作具有相同的签名,但具有不同的名称。如何指定WCF操作在运行时调用?

我的系统收到一个事件{int eventType, int entityId},需要使用配置将该事件分派到上述Web服务上的操作。

E.g.假设我有配置文件(映射EVENTTYPE到操作名称):

1 -> "StartOrder" 
5 -> "StopOrder" 
8 -> "ProcessPaymet" 
9 -> "RepartFraud" 

所以如果我收到eventType 5等于我需要做的是这样的:

string operationName = eventTypeToOperationMap[eventType]; 
new ChannelFactory<IMyWebService>().CreateChannel().CallOperation(operationName, entityId); 

和IMyWebService有一个方法:

void StopOrder(int entityId); 

背景:IMyWebService是一个windows工作流基础4.0工作流服务。我希望能够为Web服务添加新的入口点,并更改事件分派器的配置文件,而无需重新编译事件分派器。

+0

嗨THX,你可以考虑重构你的服务接口,以便它将int eventType作为输入参数吗?您的服务代码可以相应地进行分支。这意味着要从细粒度的服务界面转向更通用的界面。我没有把这个作为答案,因为它没有回答你问的实际问题,但我认为这可能是一个替代方法,可以让你摆脱困境。 – 2012-01-10 17:51:42

回答

0

您很可能需要调用另一个服务(或对您的服务进行其他操作),将eventType作为参数。在该操作中,您将创建一个新频道并调用相应的操作(就像您已经在做的那样)。

相关问题