правильный дизайн веб-сервиса и связанные запросы - PullRequest
0 голосов
/ 10 июня 2009

Я настраиваю веб-сервис и не уверен насчет наиболее эффективного дизайна.

Будет вызван веб-сервис, чтобы заполнить удаленный веб-сайт списком людей и связанной с ними информацией. Таким образом, в базе данных будет таблица «Персона», а затем другие таблицы псевдонимов, адресов, телефонных номеров и т. Д. Для страницы может быть возвращено 50 «Людей».

Я бы подумал, что хотел бы свести к минимуму количество # вызовов веб-служб. Так что же это лучший способ иметь один вызов, GetPeople (), который возвращает всех людей и их информацию в одном xml? Или я хотел бы, чтобы GetPeople () возвращал просто список людей, а затем вызов GetPeopleInfo () для каждого человека?

Заранее спасибо

Ответы [ 5 ]

1 голос
/ 10 июня 2009

Предоставление пользователям опций, особенно когда они рассредоточены, - ваш лучший вариант, на мой взгляд. Имея такие параметры, как:

GetPeopleList (): вернуть список имен людей GetPeopleAll (): Получить список всех людей и всю информацию GetPersonInfo (): Получить информацию 1 человека

Только мое мнение, но, предоставив своим людям выбор, вы сделаете ваше приложение более полезным для них.

1 голос
/ 10 июня 2009

Будет ли у вас возможность побольше поговорить с людьми, использующими веб-сервис? Лучший ответ будет зависеть от ряда факторов, в том числе от того, как они его используют.

Самый простой вариант - создать один метод веб-службы GetPeople (), который выполняет запрос, соединяющий таблицу Person с остальными таблицами и возвращающий все данные в одной плоской таблице. Если клиент просто собирается отобразить всю эту информацию в одном списке / таблице, это будет наилучшим вариантом.

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

Я бы, вероятно, построил и то и другое - создал бы метод GetPeople (), который возвращает все данные (до тех пор, пока данных не так много, что транспортировка становится и выдает), и метод GetPersonInfo (), который позволяет им откатываться подробности о конкретном человеке. Это обеспечивает вашему клиенту максимальную гибкость, не требуя от вас дополнительных усилий.

1 голос
/ 10 июня 2009

Вам нужно подумать о том, как будет использоваться ваша услуга.

Потребуют ли пользователи всю эту информацию чаще всего / все время? Если так, то для GetAllPeoplesDetails () целесообразно вернуть все

Если им понадобится очень редко вся информация, то GetPeople () должен вернуть просто список людей.

Если вы не уверены, то можете предоставить оба метода GetAllPeoplesDetails () и GetPeople () и позволить конечному пользователю принять это решение

0 голосов
/ 10 июня 2009

Я думаю, что ваш вызов GetPeople () уместен. Вы можете вернуть очень скудный набор результатов, и конечный пользователь может GetPeopleInfo (), если ему это нужно. Если набор результатов большой, вы можете указать в своем методе опцию подкачки и счетчик результатов, который позволит вызывающей стороне откатывать определенное количество строк за раз.

0 голосов
/ 10 июня 2009

XML в порядке.

JSON лучше.

Дейв Уорд в Encosia использует DataTransferObjects для сериализации своих объектов "Person".

Я продолжаю ссылаться на эту статью, потому что она сделана так хорошо, и это общая проблема.

Надеюсь, это поможет, JP

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