我已經花很多時間閱讀DataContact和的ServiceContract版本技術:WCF休息DataContract和的ServiceContract版本
Best practices for API versioning?
我從所有的這些拿走有以下幾種
1)休息的URI需要進行版本控制。
[http://example.com/v1/car]
[http://example.com/v2/car]
2)涉及XML需要包含XML命名空間
<SampleItemCol xmlns="http://api.sample.com/2011/04/05">
<Items>
<SampleItem xmlns="http://api.sample.com/2011/04/01">
<Test xmlns="http://schemas.datacontract.org/2004/07/WcfRestService2">String content</Test>
<Id>2147483647</Id>
<StringValue>String content</StringValue>
<TestGuid>1627aea5-8e0a-4371-9022-9b504344e724</TestGuid>
</SampleItem>
<SampleItem xmlns="http://api.sample.com/2011/04/01">
<Test xmlns="http://schemas.datacontract.org/2004/07/WcfRestService2">String content</Test>
<Id>2147483647</Id>
<StringValue>String content</StringValue>
<TestGuid>1627aea5-8e0a-4371-9022-9b504344e724</TestGuid>
</SampleItem>
</Items>
</SampleItemCol>
因此,這裏是我的問題。每個REST資源操作:
1)假設有數百個數據合同和許多ServiceContracts,那麼最好的是什麼類庫結構保持不同的版本和名稱空間?
2)如果Uri是版本化的,我們是否甚至需要爲ServiceContracts指定命名空間?
3)假設有50個數據合同。他們都有名字空間http://example.com/2011/04/01/。如果創建了10個這樣的更改和新的命名空間,http://example.com/2011/04/05/。另外40個應該複製到新的命名空間嗎?
我最關心的REST命名空間和URI版本是可維護性和類冗餘。
在此先感謝您的建議和解答!
Darrel,謝謝你花時間回答我的問題。我有幾個後續問題給你: 1)你能指點我一些使用WCF使用超媒體的例子嗎?我對嘗試這種方法非常感興趣。 2)我認爲REST文檔應該隨着變化而變化。您能否分享您對REST服務文檔的意見? 感謝您的幫助! – Alex 2011-04-06 02:27:32
@Alex這裏是我記錄REST http://stackoverflow.com/questions/1904266/documenting-a-rest-service至於超媒體,它不是真的依賴於WCF。關鍵是要返回客戶端的鏈接,而不是客戶端構建URL。 – 2011-04-06 03:02:37
謝謝,Darrel! – Alex 2011-04-06 14:13:26