JAX和JAX非常适合于生产API。然而,它们根本没有解决向后兼容性的问题。
为了避免在API中引入新功能时破坏旧客户端,您实际上必须接受并提供与以前完全相同的输入和输出格式;如果发现没有映射到任何内容或类型错误的字段,那么许多XML和JSON解析器似乎都是合适的。
有些JSON库,例如Jackson和Gson,提供了一个特性,您可以根据运行时设置为给定对象指定不同的输入/输出表示形式,这在许多情况下似乎是处理版本控制的合适方法。这样就可以通过注释、添加和删除字段来提供向后兼容性,因此它们只会根据客户端使用的API版本出现。
到目前为止,JAXB和我发现的任何其他XML数据库库都没有对这个概念有很好的支持,更不用说能够对JSON和XML重复使用相同的注释了。将其添加到JAXB或EclipseLink Moxy似乎是可能的,但令人望而生畏。
版本控制的另一种方法似乎是对所有已更改的类进行版本化,通常是在每次发布API时创建一个新包,并在新包中复制所有已修改的DTO、Service和Resource类,以便为绑定和调度系统对所有类型信息进行版本化。对我来说,这种方法似乎更加费劲。
我的问题是:您是如何为向后兼容性设计Jave提供程序的?什么起作用了,什么不起作用?
关于这一主题的案例研究或博客文章的链接非常受欢迎;我已经做了一些谷歌搜索,但一直没有发现太多的讨论。
发布于 2010-11-16 18:28:32
我是EclipseLink MOXy的技术主管,我对您的版本控制需求非常感兴趣。你可以通过我的博客联系我:
MOXy提供了一种将JAXB元数据表示为XML文件的方法。您可以利用这一点为同一个对象模型创建多个映射:
https://stackoverflow.com/questions/4197528
复制相似问题