2014-12-07 38 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本身中,而不在消息體中。

相關問題