В процессе разработки приложения MAUI 7 (.NET Multi-Platform App UI + dotnet 7) с использованием шаблона проектирования MVVM (Model–view–ViewModel) у меня возникла необходимость очищать ресурсы занимаемые моделями представления (View Model). Проблема вроде бы несложная, достаточно реализовать интерфейс IDisposable в моделях. Но все оказалось не так просто. Все модели внедряются на страницы с помощью стандартного механизма Dependency Injection. При использовании временных зависимостей (Transient) нет четкого понимания, когда ресурсы будут освобождены. В итоге, в программе создаются новые экземпляры моделей для каждого запроса, но старые продолжают висеть в памяти и занимать ресурсы.
Довольно часто при разработке веб-приложений требуется выдать пользователю данные в отличном от html формате. Например, вывести уменьшенную копию изображения (ThumbImage), или же выдать защищенные данные из БД. В ASP .NET WebForms для этих целей можно использовать Handlers (хэндлеры), либо обычные ASPX-страницы. В ASP .NET MVC ситуация немного изменилась. Хотя конечно, по прежнему, ничто не запрещается использовать хэндлеры. Разве что, может потребоваться правило для Routing, типа: routes.IgnoreRoute("{resource}.ashx").
В данном обзоре будет рассмотрен пример вывода изображения средствами ASP .NET MVC, однако описанный подход можно использовать для вывода данных абсолютно любого формата.