Возможные причины необходимости последовательности элементов XML в службе ReST - PullRequest
1 голос
/ 23 мая 2011

Я пытаюсь немного лучше понять ReST и XML - сторонняя компания спросила, согласны ли мы с тем, чтобы их сервис принимал запросы на элементы XML в определенном порядке.Это создает для нас проблему, так как мы используем объекты с иерархией наследования (поэтому не можем использовать и т. Д., Так как .Net рекурсивно сериализует объекты).

Я знаю, что могу использовать IXmlSerializable Interface (для нас гораздо больше работы), чтобы контролировать сериализацию или создавать отдельные объекты для каждого запроса (не очень элегантно).Но я хотел избежать изменения того, что у нас уже есть, поскольку в настоящее время это очень легко обслуживается.

Я задался вопросом, каковы возможные причины для того, чтобы требовать элементы XML в определенном порядке (кажется, это немного плохое дизайнерское решение) и любые причины, по которым не следует упорядочивать элементы xml в явном виде (кроме очевидной причины снижения удобства сопровождения, когда они хотят добавить элемент).

Ответы [ 2 ]

1 голос
/ 23 мая 2011

Это очень общий вопрос, но ответ может состоять в том, что наличие определенного порядка в формате XML, вероятно, имеет наибольшее значение, когда люди воспринимают этот формат и / или когда существует внутреннее упорядочение того, что представляется.

Таким образом, XHTML 1.0 (например) имеет базовый порядок элементов и в элементе документа , и это соответствует нашему обычному пониманию документов, содержащих информацию о заголовках и метаданных перед основной частью текста.В XHTML таблица (например) имеет порядок (в широком смысле) табличной метрической информации, за которой следуют строки, каждая из которых содержит последовательность ячеек.Если допустить, что порядок отличается, то это сделает сложным, непредсказуемым и почти невозможным иметь дело.

Однако в элементе XHTML нет установленного порядка для вхождений ,

0 голосов
/ 23 мая 2011

Типичная причина для требования элементов XML к порядку состоит в том, что все, что обрабатывает XML, поддерживает состояние, пока оно делает это.Он получает информацию от элемента foo, который затем используется при обработке элемента bar и т. Д.

Вы можете сказать: «Ну, тогда сначала обработайте элемент foo, а затем обработайтеэлемент bar, и не полагайтесь на порядок документов. "И это хорошо, если процесс десериализует поток XML до того, как вы его обработаете.Но если в процессе приема используется XmlReader или SAX, он объединяет разбор и обработку в один шаг, чаще всего для максимизации производительности и минимизации использования памяти.

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