Связь клиента с сервером ASP.NET - PullRequest
4 голосов
/ 10 июня 2010

Можете ли вы помочь мне разобраться во всех различных способах связи между браузером и клиентом в ASP.NET?Я сделал это вики-сообществом, поэтому не стесняйтесь редактировать мой пост, чтобы улучшить его.В частности, я пытаюсь понять, в каком сценарии использовать каждый из них, перечислив, как каждый из них работает.

Я немного нечетко в UpdatePanel против CallBack (с ViewState): я знаю, UpdatePanel всегда возвращает HTML, а CallBackможет вернуть JSON.Есть ли другие существенные различия?

... и CallBack (без ViewState) против WebMethod.CallBack проходит большую часть жизненного цикла страницы, WebMethod - нет.Любые другие существенные различия?

IHttpHandler

  • Пользовательский обработчик для чего угодно (страницы, изображения и т. Д.)
    • Только делает то, что вы говоритеэто сделать ( облегченная обработка на сервере, облегченный трафик )
    • Страница - это реализация IHttpHandler
    • Если вы неНе нужно то, что обеспечивает Page , создайте пользовательский IHttpHandler
    • Если вы используете Page , но переопределяете Render() и не генерируя HTML, вы, вероятно, можете сделать это с помощью пользовательского IHttpHandler (например, запись двоичных данных, таких как изображения)
  • По умолчанию можно использовать .axd илиРасширения файлов .ashx - оба функционально похожи
    • .ashx не имеет встроенных конечных точек, поэтому его предпочитают по соглашению

Обычный PostBack( System.Web.UI.Page : IHttpHandler )

  • Наследует Страница
  • JavaScript не требуется
  • Мерцание / прокрутка веб-страницы, поскольку все перезагружается в браузере
  • Возвращает полную страницу HTML ( heavyтрафик )

UpdatePanel ( System.Web.UI.Control )

  • Управление внутри Страница
  • Необходимо использовать ScriptManager
    • Если нет клиентского JavaScript, он может вернуться к обычному PostBack без JavaScript (?)
  • Без мерцания /прокрутка, так как этоЭто асинхронный вызов, если только он не возвращается к обычной обратной передаче.
  • Может использоваться с главными страницами и пользовательскими элементами управления
  • Имеет встроенную поддержку индикатора выполнения
  • ВозвращаетHTML для элементов управления внутри UpdatePanel ( средний трафик )

Client CallBack ( Page , System.Web.UI.ICallbackEventHandler )

  • Наследует Страница
    • Большая часть Страница жизненный цикл - нет рендеринга, но необходимо создать дерево управления ( тяжелая обработка на сервере )
  • Принимает только те данные, которые вы укажете ( легкий трафик ) и, по желанию ViewState (?) ( средний трафик )
  • Клиент должен поддерживать JavaScript и использовать ScriptManager
  • Нет мерцания / прокрутки с тех порэто асинхронный вызов
  • Может использоваться с главными страницами и пользовательскими элементами управления
  • Возвращает только те данные, которые вы укажете в указанном вами формате (например, JSON, XML ...) (?) ( легкий трафик )
  • Во время обратного вызова страница должна добавить связанный элемент управления в то же место в дереве элементов управления, в противном случае возникает исключение.

WebMethod ( System.Web.Service.WebService )

  • Считается устаревшей технологией. Вместо этого следует использовать службу WCF .
  • Класс реализует System.Web.Service.WebService
  • Принимает только указанные вами данные ( светофор )
  • Сервер запускает только вызываемый метод ( Обработка на легком сервере )
  • Клиент должен поддерживать JavaScript
  • Нет мерцания / прокрутки, поскольку это асинхронный вызов
  • Может использоваться с главными страницами и пользовательскими элементами управления
  • Возвращает только те данные, которые вы укажете, как правило, JSON ( легкий трафик )
    • Может создать экземпляр серверного элемента управления для визуализации HTML и отправки в виде строки, но события, разбиение на страницы в GridView и т. Д. Не будут работать

PageMethods

  • По существу, WebMethod содержится в классе Page , так что большинство из WebMethod применяются
    • Как и в случае WebMethod , следует использовать устаревшую технологию и службу WCF.
    • Метод должен быть public static, поэтому Страница экземпляр недоступен
    • HttpContext доступно через HttpContext.Current
  • Доступ напрямую по URL Page.aspx/MethodName (например, с XMLHttpRequest напрямую или с библиотекой, такой как jQuery )
  • Нельзя использоваться непосредственно в пользовательских элементах управления
  • с мастер-страницами и пользовательскими элементами управления

Служба WCF

Кто-нибудь еще?

Ответы [ 2 ]

2 голосов
/ 10 июня 2010

WebMethod используется с веб-сервисами ASMX, которые Microsoft теперь считает «устаревшей технологией». Вместо этого следует использовать службы WCF. Они поддерживают как SOAP через HTTP / HTTPS, так и службы на основе REST или JSON, поэтому они гораздо более гибкие.

По этой причине я также рекомендую против PageMethods, даже если они кажутся удобными.

0 голосов
/ 07 апреля 2011

Для ICallbackEventHandler

  1. ViewState всегда отправляется на сервер в запросе AJAX, поэтому его можно прочитать, а состояние управления можно повторно создать, но ViewState не обновляется на сервере,или отправлено обратно в браузер в ответе ajax.
  2. Значения формы отправляются обратно на сервер в запросе.
...