73 votes

Dois-je utiliser AddMvc ou AddMvcCore pour le développement d'ASP.NET Core MVC ?

J'apprends ASP.NET Core MVC à partir d'un livre, le bout de code en question est le suivant :

// CHAPTER 4 - ESSENTIAL C# FEATURES
namespace LanguageFeatures {

    public class Startup {

        public void ConfigureServices(IServiceCollection services) {
            services.AddMvc();
        }

        // etc.

Comme le livre porte sur ASP.NET Core MVC plutôt que sur ASP.NET MVC, je pense que je dois utiliser AddMvcCore() plutôt que AddMvc() comme suit :

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvcCore(); // as opposed to:
    //services.AddMvc();
}

Ce que je fais ici est-il correct ?

9 votes

@mason : Je préfère demander à l'expert car c'est plus fiable que de faire des essais et erreurs sur une boîte noire.

1 votes

@SingleFighter Considérant que je viens de poster une réponse incluant le fonctionnement interne de AddMvc() il ne s'agit pas vraiment d'une boîte noire ;)

14 votes

@mas, c'était une bonne question qui valait la peine d'être posée... programmer, c'est demander autant qu'expérimenter lol

93voto

trashr0x Points 4061

Jetez un coup d'œil à la MvcServiceCollectionExtensions.cs sur le Répertoire GitHub d'ASP.NET Core :

public static IMvcBuilder AddMvc(this IServiceCollection services)
{
    if (services == null)
    {
        throw new ArgumentNullException(nameof(services));
    }

    var builder = services.AddMvcCore();

    builder.AddApiExplorer();
    builder.AddAuthorization();

    AddDefaultFrameworkParts(builder.PartManager);

    // Order added affects options setup order

    // Default framework order
    builder.AddFormatterMappings();
    builder.AddViews();
    builder.AddRazorViewEngine();
    builder.AddRazorPages();
    builder.AddCacheTagHelper();

    // +1 order
    builder.AddDataAnnotations(); // +1 order

    builder.AddCors();

    return new MvcBuilder(builder.Services, builder.PartManager);
}

AddMvcCore() y AddMvc() retournent tous deux un IMvcBuilder qui peuvent être utilisés pour configurer davantage les services MVC.

AddMvcCore() comme son nom l'indique, n'ajoute que les composants de base du pipeline MVC, ce qui vous oblige à ajouter tout autre intergiciel (nécessaire à votre projet) par vous-même.

AddMvc() appels internes AddMvcCore() et ajoute d'autres intergiciels tels que le moteur de vue Razor, les pages Razor, CORS, etc.

Pour l'instant, je suivrais ce que ton tutoriel suggère et m'en tiendrais à AddMvc() .


À partir d'ASP.NET Core 3.0, il existe des méthodes supplémentaires qui permettent de contrôler finement les parties du pipeline MVC qui sont disponibles pour votre application, par exemple :

Se référer à cet article et MSDN pour plus d'informations sur ce qu'ils font et quand les utiliser.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X