De la "création de l'Architecture moderne des applications web avec asp.net de base" (pdf ici):
MVC: en Utilisant les contrôleurs et les vues, il était courant pour les applications ont très
grand contrôleurs qui a travaillé avec de nombreuses dépendances et les modèles de vue et est retourné plusieurs
différents points de vue. Cela a entraîné beaucoup de complexité et aboutit souvent à des contrôleurs qui n'ont pas suivi
l' Single Responsibility Principle
ou Open/Closed Principles
efficacement.
Rasoir Pages les adresses de cette
question par l'encapsulation de la logique côté serveur pour une logique de "page", dans une application web. Un Rasoir Page qui n'a pas de logique côté serveur peut simplement se composent d'un fichier de Rasoir (eg. "L'Index.cshtml"). Cependant, la plupart des non-trivial de Rasoir Pages sont associés à un modèle de page
de la classe, qui par convention est le même nom que le fichier de Rasoir avec un ".cs" extension (par exemple, "l'Index.cshtml.cs"). La présente page de la classe du modèle combine les responsabilités d'un Contrôleur et d'un ViewModel. Au lieu de traiter les demandes avec le contrôleur des méthodes d'action, modèle de la page gestionnaires comme "OnGet()" sont
exécuté, ce qui rend leur page associée par défaut.
Rasoir pages de simplifier le processus de création
pages individuelles dans un ASP.NET Core application, tout en offrant toutes les caractéristiques de l'architecture de ASP.NET Core, MVC. Ils sont un bon choix par défaut pour la nouvelle page basée sur la fonctionnalité.
Lors de l'utilisation de MVC:
Si vous êtes en train de construire des Api web, le modèle MVC est plus judicieux que d'essayer d'utiliser de Rasoir Pages.
Si votre projet ne fera que révéler l'API web points d'accès, vous devrait idéalement commencer à partir de l'API Web du projet
modèle, mais sinon il est facile d'ajouter des contrôleurs et des API associée à tout les points de terminaison ASP.NET de Base
app. Vous devez également utiliser le point de vue basé sur MVC approche si vous êtes de la migration d'une application existante
à partir de ASP.NET MVC 5 ou version antérieure à ASP.NET Core, MVC et vous souhaitez le faire avec le moins de
des efforts. Une fois que vous avez fait de la migration initiale, vous pouvez évaluer si il est logique d'adopter
Rasoir Pages pour de nouvelles fonctionnalités ou même comme un marché de gros de la migration.
Note:
Si vous choisissez de créer votre application web à l'aide de Rasoir Pages ou MVC vue, votre application sera
des performances similaires, et comprend le soutien pour l'injection de dépendances, de filtres, de la liaison de modèle, validation, etc.
Mise à jour: Quelques raisons de plus j'ai lu sur ce github question commenté par scott sauber:
Nous sommes à l'aide de Rasoir Pages pour un [complexe] l'Assurance-Santé de portail... Nous avons+ de 60 pages et je peux dire que pour le Serveur de rendu HTML, je ne vais jamais revenir à la MVC. Il n'est également pas juste pour les choses simples. L'Assurance-Santé de domaine est en soi complexe et combinez cela avec le fait que c'est un multi-locataire application (nous vendre le produit à d'autres compagnies d'assurance), ce qui ajoute de la complexité à mesure que l'application est hautement configurable que les différentes compagnies d'assurance de faire les choses un peu différemment.
Pourquoi l'utiliser?
Rasoir Pages est plus sécurisé par défaut. Rasoir Pages vous donne AntiForgeryToken de validation par défaut. De Plus, vous optez pour les propriétés que vous souhaitez être modèle lié par [BindProperty] ce qui limite l'exposition à la sur-l'affichage des attaques.
Rasoir Pages a une meilleure structure de dossier par défaut qui s'adapte mieux. Dans MVC, le dossier par défaut de la structure n'est tout simplement pas à l'échelle. Des dossiers séparés pour les Vues, Contrôleurs, et souvent Viewmodel quand tous les trois sont, en définitive, étroitement liés l'un à l'autre est un énorme pain PITA de travailler avec. En fin de compte vous rebondir à tous les 3 dossiers et la navigation d'un tas à tout moment vous avez besoin d'ajouter ou de modifier une fonction. C'est horrible. C'est pourquoi j'ai plaidé pour la Fonctionnalité de Dossiers. Avec Rasoir Pages, votre Pagemodèle (Contrôleur + ViewModel) sont dans le même dossier que votre point de Vue. Vous pouvez appuyez simplement sur la touche F7 pour basculer entre elles qui est aussi super pratique.
Conduit à une plus facile à gérer le code qui s'adapte mieux. Avec MVC, il a été super facile à gonfler un Contrôleur avec+ de 10 Actions. Souvent, ces Actions ne sont même pas liés l'un à l'autre dans tous les cas (sauf peut-être une Redirection entre les deux). De ce fait naviguer le Contrôleur de trouver un code très difficile. C'était pire que si il y avait des méthodes privées dans le Contrôleur de trop, ajoutant ainsi à la méthode de la météorisation. Avec Rasoir de Pages, il est presque impossible de gonfler votre Modèle de Page sans rapport avec les méthodes de votre page. Tout ce que vous mettez dans votre Pagemodèle est lié à votre Page.
Le Test unitaire est plus facile. Avec un Contrôleur, vous pouvez avoir 8 Actions et de certains de vos dépendances vous injecter en étaient uniquement liées à une ou deux Actions. Ainsi, lorsque le test d'unité d'une même Action soit vous en avez besoin pour se moquer de ceux inutilement ou de passer un nul, qui se sent brut (cela peut être résolu un peu avec le Générateur de pattern). Avec Rasoir Pages, les dépendances que vous injectez dans 100% sont liés à OBTENIR et les actions POST vous travaillez avec. Il se sent juste naturel.
Le routage est plus facile. Par défaut dans les Pages Razor, routage seulement correspond à votre structure de dossier. Cela fait de l'imbrication des dossiers de manière plus facile à accomplir. Par exemple, l'ensemble de nos RH pages d'administration sont sous l' /Administrator
le dossier et tous les Employés pages sont sous l' /Employee
le dossier. Nous pouvons autoriser un dossier entier et dire que la personne doit être un Administrateur pour obtenir à n'importe quel sous-dossier /Administrator
, ce qui était plus facile à faire qu'avec les Contrôleurs multiples qui composent les fonctionnalités d'Administrateur.
Je pense que c'est le grand truc.
Mise à jour 2:
C'est au sujet d'une certaine complexité du modèle MVC, ne répond pas directement à la question, mais peut être utile: Un ingénieur chez Facebook, a dit (ici) pour leur "suffisamment" de grandes bases de programmation et organisation de grande taille, "MVC est devenu vraiment compliqué, très rapidement," la conclusion que le MVC n'est pas à l'échelle. La complexité du système est exponentielle chaque fois qu'ils tentaient d'ajouter une nouvelle fonctionnalité du code "fragile et imprévisible." C'était à devenir un sérieux problème pour les développeurs de nouvelles à un certain code de base parce qu'ils avaient peur de toucher au code de peur qu'ils pourraient se casser quelque chose. Le résultat a été MVC était en train de s'effondrer pour Facebook.