Каковы преимущества файла обработчика ASHX в asp.net?
Каковы преимущества использования ashx или обработчика? Кроме того, они нужны мне, если я использую MVC (и почему нет)?
Важен ли фреймворк (2.0+)?
Зачем мне использовать обработчик? Мне недавно рекомендовали использовать один для получения изображения, но я не знаю почему.
Спасибо за ваше время.
Редактировать - обработчик быстрее?
4 ответа
Всего несколько примеров:
Генерация динамического изображения. Вы можете написать обработчики, которые возвращают управляемые данными изображения, создав обработчик ASHX, который возвращает данные изображения, и затем использовать этот URL в своих тегах. например
<img alt="user's custom icon" src="Icon.ashx?username=bob"></img>
Возврат данных на основе REST XML или JSON в код AJAX на клиенте.
- Настраиваемый HTML: возвращает полностью настраиваемый HTML для страницы, когда веб-формы ASP.NET или инфраструктура MVC слишком ограничены.
Я считаю, что это было доступно с 1.0
Назначение обработчиков в проектах, отличных от MVC, состоит в том, чтобы предоставить некоторый тип закодированного ответа вне HTML. Как правило, обработчик возвращает XML (rss, RESTful и т. Д.), JSON для jQuery или другой Javascript, а иногда и просто чистые данные, такие как двоичные файлы. Я использовал обработчики, чтобы даже возвращать специальный javascript, который будет оправдан на клиенте, как способ отложенной загрузки больших двоичных файлов или требований на подходе "только по требованию". Более или менее, обработчик будет использоваться для возврата "всего, кроме HTML".
В MVC вы бы отошли от обработчиков и использовали контроллер для возврата любых данных, которые вам нравятся. Итак, в методе вроде:
mywebsite.com/restapi/content/56223
У вас RestfulContentController будет метод для Index(), который НЕ будет возвращать View(), а вместо этого будет чистый XML или JSON.
public class JSONContentController : Controller
{
public JsonResult Index(int ContentID)
{
// get Content() by ContentID
//
// return a JSON version
return Content().SerializeToJSON();
}
}
Они очень полезны, если вы работаете в среде, в которой у вас нет доступа к IIS, но вы хотите изменить такие вещи, как заголовки ответов с истекшим сроком давности, чтобы оптимизировать кэширование для таких файлов, как CSS, изображения, JavaScript
Для изображений вы можете выполнять такие вещи, как оптимизация "на лету", поэтому вы можете запрашивать изображения, например image.jpg.ashx? W =180&quality=70, а затем использовать обработчик для доставки изображения на основе настроек, переданных в строке запроса
aspx наследует страницу, которая реализует IRequireSessionState. Поэтому, если вы вызываете его через Ajax, asp.net необходимо заблокировать сеанс перед дальнейшей обработкой.
Для файла Ashx это без сохранения состояния. Если вы не наследуете его от IRequireSessionState для управления состоянием.
Используйте ashx для всех вызовов Ajax и используйте aspx для чисто asp.net-страницы.