web-dev-qa-db-fra.com

Pages ASP.NET Core 2.0 Razor vs Full MVC Core

Il y a eu une question à SO Pourquoi Razor Pages est-il l'approche recommandée pour créer une interface utilisateur Web dans Asp.net Core 2.0?)? où Steve Smith a gentiment expliqué les avantages d'utiliser Razor Pages sur MVC complet du point de vue d'avoir moins de fichiers.

J'utilise Razor Pages depuis un moment et je constate que malgré l'avantage de la simplicité de Razor Page, il est un peu compliqué de faire un routage personnalisé, de structurer des dossiers et de créer un modèle de vue complexe (le modèle de page semble encombré).

Alors, les questions sont:

  1. S'il y a autre chose que la simplicité d'une page, préférer Razor Pages à Controllers/Views - spécifiquement, je suis intéressé par la performance des deux frameworks?
  2. Est-il acceptable de combiner simultanément Razor Pages et Controllers/Views?

J'apprécierais également que des personnes expérimentées fassent part de leurs réflexions (pour et contre) sur l'utilisation de Razor Pages pour mieux comprendre ce cadre.

43
Ivan Zaruba

Nous avons récemment lancé une application de taille assez décente utilisant Razor Pages pour le contrôleur frontal et les contrôleurs MVC pour l'API pour les composants côté client. Mon expérience a été la suivante:

Le paradigme des pages fonctionne bien lorsque votre contenu est structuré autour de l'idée de "pages" réelles sur le site. Pensez à des choses comme un contact ou un sujet ou même une page de connexion. Bien sûr, cela pourrait être fait via MVC, mais MVC est vraiment inutile. Une simple page suffira. Laissez les contrôleurs à plus de contrôleurs, comme un catalogue de produits ou une base de données d'utilisateurs.

Si votre architecture MVC s'articule autour de la structure de votre vue, les pages rasoir sont probablement un bon choix. Vous pouvez toujours utiliser les bits MVC pour les éléments liés à l'API, mais l'avantage des pages réside dans le fait que votre structure frontale devient plus explicite et moins implicite ("basée sur des conventions"), comme avec MVC où chaque action peut ou non avoir une vue qui est généralement nommé d'après l'action.

38
Chris