因此,在过去的几个小时里,我一直在浏览所有关于 Web API 版本控制的真正绝妙的建议。我最喜欢的一些,对于那些和我一样有趣的人,没有特别的顺序:
ASP.NET MVC 应用程序的版本控制 REST API
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 解决方案有许多“控制器”项目,逻辑/回购层具有相似的概念
我们有相当多的开发人员,无论我写了多少 ace 文档,实际上只有在某些东西不工作时才会读取它。因此,理想情况下,开发人员需要尽可能明显地做到这一点。