【发布时间】:2011-04-05 22:06:02
【问题描述】:
我花了很多时间阅读 DataContact 和 ServiceContract 版本控制技术:
Best practices for API versioning?
以下是我的收获
1) REST Uri 需要进行版本控制。
[http://example.com/v1/car]
[http://example.com/v2/car]
2) 每个涉及到 XML 的 REST 资源操作都需要包含 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>
以下是我的问题:
1) 假设有数百个数据契约和许多 ServiceContracts,维护不同版本和命名空间的最佳类库结构是什么?
2) 如果 Uri 是版本化的,我们还需要为 ServiceContracts 指定命名空间吗?
3) 假设有 50 个数据合约。它们都有命名空间http://example.com/2011/04/01/。如果其中 10 个更改并创建了新命名空间,http://example.com/2011/04/05/。其他 40 个也应该复制到新的命名空间吗?
我对 REST 命名空间和 URI 版本最大的担忧是可维护性和类冗余。
提前感谢您的建议和回答!
【问题讨论】:
标签: wcf rest namespaces version datacontract