Веб-сервис для возврата сложного объекта с необязательными частями - PullRequest
2 голосов
/ 19 мая 2009

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

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

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

Третий подход заключается в добавлении дополнительных методов для извлечения деталей. Но это взорвет количество поездок туда и обратно, если мне понадобятся все детали для сотен клиентов, которые составляют результат.

Если честно, я не уверен, что мне нравится какой-либо из вышеперечисленных подходов. Итак, как бы вы разработали такую ​​общую службу поиска клиентов?

(Рассматривается CW, поскольку не может быть ни одного «правильного» ответа, но я подожду и посмотрю, какие ответы приходят)

Ответы [ 2 ]

3 голосов
/ 19 мая 2009

Создайте объект "criteria" и используйте его в качестве параметра. Такой объект должен иметь множество свойств, чтобы указывать информацию, которую вы хотите. Например, "IncludeAddresses" или "IncludeFullContactInformation".

Потребитель затем должен установить правильные свойства на true, и возможны все комбинации. Это также облегчит выполнение кода в сервисе. Вы можете просто написать if(criteria.IncludeAddresses){response.Addresses = GetAddresses;}

1 голос
/ 19 мая 2009

Любые неструктурированные или полуструктурированные данные лучше всего обрабатываются XML. Вы можете передать данные XML через строку или обернуть их в классе, добавив к нему некоторые функциональные возможности. Используйте XPathNavigator, чтобы пройти через XML. Вы также можете использовать класс XMLDocument, хотя он не слишком удобен для использования. В любом случае, вам, конечно, понадобится какой-то класс для обработки содержимого XML.

Вот почему был изобретен XML - для обработки данных, структура которых четко не определена.

С уважением, Maciej

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