Веб-сервис для вывода нескольких форматов - PullRequest
1 голос
/ 02 августа 2011

Во-первых, позвольте мне начать с некоторого фона: У меня есть веб-сервис, который принимает XML как ввод и вывод в XML. Выход имеет 2 разные возможные схемы (с еще двумя). У каждого запроса есть список групп, из которых нужно опросить данные. База данных опрашивается, затем из каждой группы генерируется XML правильного формата; группы компилируются и выводится XML.

Таким образом, для каждой группы данных существует класс, который обрабатывает опрос базы данных и выводит либо вывод XML-схемы.

Сам код очень раздутый и его трудно поддерживать из-за множества выходных форматов. Поэтому я ищу шаблон проектирования, чтобы облегчить добавление новых выходных форматов. Я исследовал возможность использования XSLT для преобразования между форматами, но они значительно различаются, так что я считаю, что этот вариант невозможен.

tl; dr: Каков эффективный шаблон проектирования спокойного веб-сервиса XML для генерации XML в различных форматах на основе данных из одной базы данных?

Пожалуйста, позвольте мне, если я могу предоставить больше информации!

Ответы [ 2 ]

1 голос
/ 02 августа 2011

Таким образом, в принципе, для каждой группы данных существует класс, который обрабатывает опрос базы данных и выводит либо вывод XML-схемы. -> Может ли этот класс быть разбит, чтобы просто опрашивать данные и возвращать вывод в виде Java-бина или что-то в этом роде? Если да, я бы изменил этот класс для обработки данных. Создайте контроллер для определения выходного формата. Используйте шаблон команд вокруг этого контроллера, чтобы в будущем вы могли легко добавить больше форматов вывода. Создайте другой компонент для части вывода XML. Используйте шаблон «Фабрика» и передайте ему идентификатор выходного формата. Если формат вывода очень сложный, подумайте об использовании JAXB. В противном случае повторно используйте любой код, присутствующий в уже существующих классах.

Дайте мне знать, если это поможет.

0 голосов
/ 02 августа 2011

Если ваши форматы содержат одинаковые данные, вы должны использовать XSLT для преобразования между ними;однако, если набор выходных данных настолько отличается, что вы не можете использовать XSLT, тогда ваши результирующие данные будут другими, и вам нужно использовать другую конечную точку для получения данных, что подразумевает другой кодовый путь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...