Как создать обратно совместимые API JAX-RS и JAX-WS? - PullRequest
6 голосов
/ 16 ноября 2010

JAX-RS и JAX-WS отлично подходят для создания API.Однако они вообще не решают проблему обратной совместимости.

Чтобы не сломать старый клиент, когда в API вводятся новые возможности, вам, по сути, нужно принять и предоставить точно такой же ввод и вывод.форматировать, как вы делали раньше;кажется, что многие из анализаторов XML и JSON подходят, если они находят поле, которое ни к чему не относится или имеет неправильный тип.

Некоторые библиотеки JSON, такие как Jackson и Gsonпредоставьте функцию, в которой вы можете указать другое представление ввода / вывода для данного объекта на основе настройки времени выполнения, которая кажется подходящим способом управления версиями для многих случаев.Это позволяет обеспечить обратную совместимость путем аннотирования добавленных и удаленных полей, чтобы они отображались только в соответствии с версией API, используемой клиентом.

Ни JAXB, ни какая-либо другая библиотека привязки данных XML, которую я нашел на сегодняшний деньимеет достойную поддержку этой концепции, не говоря уже о возможности повторного использования одних и тех же аннотаций для JSON и XML.Добавление его в JAXB-RI или EclipseLink Moxy представляется потенциально возможным, но пугающим.

Другой подход к управлению версиями, по-видимому, заключается в версии всех классов, которые изменились, часто путем создания нового пакета каждый раз, когда APIпубликуется и создается копии всех модифицированных классов DTO, Service и Resource в новом пакете, так что вся информация о типах является версионной для систем привязки и диспетчеризации.Этот подход кажется мне более трудоемким.

Мой вопрос: как вы разработали своих провайдеров Jave API для обратной совместимости?Что сработало, а что нет?

Ссылки на тематические исследования или сообщения в блогах по этому вопросу высоко ценится;Я немного погуглил, но не стал много обсуждать это.

1 Ответ

0 голосов
/ 16 ноября 2010

Я технический руководитель для EclipseLink MOXy , меня очень интересуют ваши требования к версиям.Вы можете связаться со мной через мой блог:

MOXy предлагает способ представления метаданных JAXB в виде файла XML.Это можно использовать для создания нескольких сопоставлений для одной и той же объектной модели:

...