【发布时间】:2015-06-04 14:36:46
【问题描述】:
因此,在过去的几个小时里,我一直在浏览所有关于 Web API 版本控制的真正绝妙的建议。我最喜欢的一些,对于那些和我一样有趣的人,没有特别的顺序:
Best practices for API versioning?
Versioning REST API of an ASP.NET MVC application
http://www.troyhunt.com/2014/02/your-api-versioning-is-wrong-which-is.html
http://www.pluralsight.com/courses/web-api-design
http://www.pluralsight.com/courses/implementing-restful-aspdotnet-web-api
因此,所有这些建议对于设计本质上是 API 的“前端”非常有帮助。我们可以对 API 调用进行版本控制……现在,我开始着手最难的部分了。
这是一个大量数据驱动的应用程序,适用于拥有多个产品(这是一个新产品)每月发布的公司。一些需要长期支持 API 调用的大客户,一些需要最新版本的小客户。我们可以通过类似于 API 的里程碑/长期支持版本来管理这一点。太好了。
但在实践中,这会变得非常混乱,非常快。我们努力分离出我们自己网站的各个层、beta 内部/外部 API、存储库层,甚至是用于启动的 SDK。我们将每个版本分开到单独的分支中,但它是 SAAS - 我们托管数据库。因此,我们不仅能够对 API 调用进行版本控制,而且还能够对其下的所有内容进行版本控制。业务逻辑、存储库和数据库。我们甚至不开始单元/集成测试。
因此,尝试并可能失败在这里只问一个问题。
是否有合适的模式来构建分层的、数据驱动的 .NET 应用程序以应对多个版本?
特别是数据库将如何更改以及如何构建通用堆栈以对其进行版本控制。我的一些想法包括:
- 更新堆栈的旧源代码控制分支并部署这些分支
- 将所有内容保存在同一个项目中,但一直使用文件夹/命名空间
- 进一步拆分项目 - 因此 API 解决方案有许多“控制器”项目,逻辑/repo 层的概念相似
我们有相当多的开发人员,无论我编写了多少 ace 文档,实际上只有在出现问题时才会读取它。因此,理想情况下,开发人员需要尽可能明显地做到这一点。
【问题讨论】:
标签: c# asp.net asp.net-web-api versioning database-versioning