Вопрос дизайна о wcf и навигации по страницам

#c# #asp.net #wcf #navigation

#c# #asp.net #wcf #навигация

Вопрос:

У меня есть веб-сайт на c # / asp.net 4.0 (не MVC), где пользователь может искать различные элементы. Функциональность поиска / результатов работает примерно так:

На странице поиска пользователь заполняет критерии поиска (текстовые поля, выпадающие списки и т.д.) И нажимает кнопку отправки. Обработчик события on_click выполняет некоторую проверку и / или ошибок. Если все проверяется, я создаю объект для хранения всех значений и помещаю объект в сеанс. Затем я делаю ответ.перенаправление на страницу результатов. На странице результатов я считываю объект из сеанса и связываюсь со службой wcf и передаю объект ей. Wcf выполняет поиск и возвращает результаты (если таковые имеются), и я показываю результаты.

Мне было любопытно, есть ли лучший способ сделать это. Это работает нормально, но что-то в этом не так. Я не в восторге от загрузки объекта в сеанс.

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

Возможно ли это? Любые отзывы / ссылки были бы оценены.

Также не будет никаких третьих сторон, использующих наш сервис wcf, это все внутреннее.

Комментарии:

1. не могли бы вы просто создать стандартную форму post на странице результатов и создать там свои объекты поиска? Если вам нужно запоминать поисковые запросы, то, вероятно, лучше придерживаться сеанса.

Ответ №1:

Есть три способа, как это сделать

  • Вместо передачи данных в виде post используйте простой переход на страницу поиска. Критерии поиска будут переданы в URL, как это сделано, например, Google.
  • Обратная публикация на разных страницах — функция, доступная с .NET 2.0. Это удалит сеанс и перенаправит. Вы также можете использовать Server.Transfer / Server.Execute .
  • Обратный вызов AJAX. Ваш поиск не будет публиковать форму, а вызовет службу напрямую, чтобы получить результат. Вы можете либо использовать ASP.NET менеджер сценариев и прочее, связанное с этим, или используйте какой-нибудь облегченный фреймворк javascript, такой как jQuery. Ваша служба WCF должна предоставлять webHttpEndpoint в кодировке JSON.