2014-12-07 35 views
0

我有使用.NET技术实现API的要求。该协议是基于HTTP的“普通旧XML”(POX)。有6个API调用,但全部来自相同的URI。 API方法由顶级XML元素中的“method”属性标识。请求和响应中的子XML元素取决于调用哪个方法。具有嵌入式“方法”属性的适用于POX API的.NET模型

例如:

<req method="GetStuff"><id>42</id></req> 

可能会给响应

<resp method="GetStuff"><Thing name="Bob"/></resp> 

或者:

<req method="Status"><verbose>false</verbose></req> 

可能会给响应

<resp method="Status"><status>OK</status></resp> 

我已经考虑过WCF--我可以看到,遵循REST API的示例,我可以轻松地获得XML序列化和反序列化,但是看不到明显的方法来将方法属性映射到单独的ServiceContract方法。我也可以考虑MVC,但是需要在MVC管道中的某个地方将该方法映射到相应的Action。

请提出建议?

回答

0

你想要的方法调度技术(<req method='methodName'>)是一种非标准技术,所以没有内置的支持。你有几个选择:

1)只要你自己做派遣。例如。如果使用WCF,请使用一个OperationContract方法查看属性,然后调用您需要的6种方法之一。

2)创建一个自定义调度程序。 对于WCF,请看http://msdn.microsoft.com/en-us/library/ms734665%28v=vs.110%29.aspx。对于ASP.NET Web API,您可能从这里开始 - http://www.asp.net/web-api/overview/advanced/http-message-handlers - 但我的经验不足,因此无法确定。

方法#1当然容易得多,但如果您要创建很多这样的API,#2可能是要走的路。或者只是转向更标准的东西 - 无论是SOAP还是“真正的”RESTful API,其中所有路由/分派信息都在URL本身中,而不在消息体中。

相关问题