Den*_*nis 10 c# visual-studio-2013
我们有一个REST API,它已经在控制器路由中使用"/ v1 /",我们计划创建一个"/ v2 /"路径并利用Web API 2.我能够找到很多关于版本控制的信息您的控制器(属性路由,自定义解析器等),但我无法找到任何文章的一件事是版本化您的模型对象(也称为数据传输对象).人们如何对他们的Model对象进行版本控制?
在我们的代码库和问题域中,控制器是"简单的"(CRUD,真的),它是模型对象,它们编码我们的领域专业知识,我们的核心业务逻辑在其上运行.(我怀疑这对于许多应用程序都是如此,所以很奇怪大多数关于Web API 2和版本控制的网络文章都集中在控制器上,并且忽略了对Model对象的关注,好像他们会照顾好自己.)
在一个完美的世界中,我希望能够为两个API版本使用相同的类,并将属性放在属性中以包含或排除它们,例如"仅版本1","仅版本2+","在版本2中弃用了"等等.我想我可以用一个查找我创建的属性类的自定义序列化程序来实现它,但我想知道在我滚动之前是否有对它的内置支持或者它的开源库拥有.
另一种可能的方法是从版本1模型类派生版本2模型类,但我只能添加这种方式而不能删除任何东西.我可以从基类派生版本1和版本2类,但是这些基于继承的方法中的任何一个都需要A)重构类的地方加上B)工厂模式,以便内部可以创建正确的派生类型.我想避免这种情况,但仍然更喜欢它而不是代码重复.
我想另一种方法是我们可以隐藏我们真实的Model对象并将它们的值复制到界面上的"哑"数据传输对象中.这种方法很简单,具有最大的灵活性,但也可以最大化工作.
有没有我错过的选项?其他人使用什么方法?
| 归档时间: |
|
| 查看次数: |
1458 次 |
| 最近记录: |