с Middleware больше независимости от MVC, например, при Web Api тащить с собой MVC nuget package вовсе не обязательно
мне ещё другой пример на ум приходит, когда хочется захостить Windows Service как веб-приложение через OWIN: тогда, наверное, тоже никаких MVC прибамбасов не надо
Здравствуйте, BlackEric, Вы писали:
BE>Когда в aspnet core правильно использовать фильтры, а когда middleware? Что-то мне кажется, что в большинстве случаев задача решается любом способом.
Начнем с того, что в .net core mvc реализован с помощью middleware.
Если говорить в контексте классического Asp.net MVC, то middleware — это в некотором смысле аналог http-модуля, а фильтры (что в классическом Asp.net, что в core) — это часть MVC-фреймворка.
Поэтому ответ простой: главным приоритетом при выборе между middleware и actionFilter является ответ на вопрос "нужен ли контекст MVC, в данном случае, или нет?".
Например обработку и преобразование формата ошибок, бросаемых "некоторыми" сервисами, которые используются в "определенных" контроллерах, имеет смысл делать с помощью фильтров.
А глобальную проверку загружаемых файлов, на соответствие определенным параметрам безопасности, можно смело отдавать на откуп middleware.
Здравствуйте, takTak, Вы писали:
T>с Middleware больше независимости от MVC, например, при Web Api тащить с собой MVC nuget package вовсе не обязательно
В коре нет разделения на mvc и webapi
T>мне ещё другой пример на ум приходит, когда хочется захостить Windows Service как веб-приложение через OWIN: тогда, наверное, тоже никаких MVC прибамбасов не надо
В WebApi есть практически такие же прибамбасы, только другие.
T>>с Middleware больше независимости от MVC, например, при Web Api тащить с собой MVC nuget package вовсе не обязательно
НС>В коре нет разделения на mvc и webapi
T>>мне ещё другой пример на ум приходит, когда хочется захостить Windows Service как веб-приложение через OWIN: тогда, наверное, тоже никаких MVC прибамбасов не надо
НС>В WebApi есть практически такие же прибамбасы, только другие.
не помню в какой версии asp.net core, но mvc при желании можно викинуть, недавно на какой-то презентации такое видел
Здравствуйте, takTak, Вы писали:
НС>>В коре нет разделения на mvc и webapi T>вопрос был в этом... если нет разделения на web api и mvc, то зачем какие-то отдельные пакеты для mvc?
НС>>>В коре нет разделения на mvc и webapi T>>вопрос был в этом... если нет разделения на web api и mvc, то зачем какие-то отдельные пакеты для mvc?
НС>Оно все вместе теперь MVC называется.
вот тут пишут, что для Web Api достаточно 3 пакетов:
Microsoft.AspNetCore.Mvc.Core
Microsoft.AspNetCore.Mvc.Cors
Microsoft.AspNetCore.Mvc.Formatters.Json
нашёл пример, где в asp net core ни одного mvc пакета не используется:
using System;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Routing;
using Microsoft.Extensions.DependencyInjection;
using NoMvc.Data;
using System.Threading.Tasks;
using Microsoft.AspNetCore;