web-dev-qa-db-fra.com

Asp.Net Webforms Vs Asp.Net WebSite (Razor) Vs Asp.Net MVC

Je pense que Microsoft doit avoir une raison pour améliorer ASP.Net avec la syntaxe RAZOR.

Dans la boîte de dialogue Créer un nouveau site Web de Visual Studio, il existe une autre option pour créer ASP.Net (Razor). La première fois que j'ai rencontré le terme Razor était quand j'ai lu un livre sur Asp.Net MVC, je ne savais pas qu'il existait pour ASP.Net

enter image description here

Je sais à quoi sert la syntaxe Razor, introduite dans MVC 3. Avant de poser cette question, j'ai décidé de créer un projet de test pour ASP.Net (Razor) et de voir en quoi il diffère des formulaires Web ASP.Net normaux et ASP.Net MVC. Je n'ai découvert aucun dossier Model/View/Controllers comme nous en avons dans MVC.

J'ai découvert que la page maître est spécifiée différemment et que la page maître est plus propre, pas plus <asp:ContentPlaceHolder />

Mais mes questions sont:

  • Je remarque qu'il utilise .cshtml, n'y a-t-il plus de codebehinds?
  • similitudes et différences entre ASP.Net (Razor) et ASP.Net MVC
  • Peut-il être étendu pour fonctionner comme ASP.Net MVC, par exemple ajout d'un contrôleur? Affichage/modèle, routage personnalisé je suppose?
  • Pourquoi cela existe-t-il lorsque nous avons ASP.Net MVC? Cela n'encouragerait-il pas la réticence à passer à ASP.Net MVC?
  • et pourquoi choisiriez-vous ASP.Net + Razor plutôt qu'ASP.Net MVC?

MISE À JOUR: les pages Web ASP.NET en particulier ont été conçues pour permettre aux personnes qui connaissent déjà HTML d'ajouter un traitement serveur à leurs pages. C'est un bon choix pour les étudiants, les amateurs, les gens en général qui sont nouveaux dans la programmation. Il peut également être un bon choix pour les développeurs qui ont de l'expérience avec les technologies Web non ASP.NET

Mise à jour Pages Web ASP.NET Les pages Web ASP.NET ciblent les développeurs qui souhaitent une histoire de développement Web simple, dans le sens de PHP. Dans le modèle de pages Web, vous créez des pages HTML, puis ajoutez du code basé sur le serveur à la page afin de contrôler dynamiquement le rendu de ce balisage. Les pages Web sont spécifiquement conçues pour être un cadre léger, et c'est le point d'entrée le plus simple dans ASP.NET pour les personnes qui connaissent le HTML mais qui n'ont peut-être pas une vaste expérience en programmation - par exemple, les étudiants ou les amateurs. C'est également un bon moyen pour les développeurs Web qui connaissent PHP ou des cadres similaires de commencer à utiliser ASP.NET.

Pages Web Asp.Net

S'il vous plaît, j'ai besoin de votre avis technique. Merci.

26
codingbiz

C'est une excellente question. Tout d'abord, permet de caractériser Razor.

Razor est un moteur qui analyse le code côté serveur et émet du code HTML, tout comme les formulaires Web ASP.NET uniquement avec une syntaxe différente et sans doute plus rationalisée et laconique.

Razor v. Web Forms Sidebar: Dans ASP.NET Web Forms, vous devez identifier le moment où vous souhaitez commencer à écrire le code du serveur avec '<%', puis lorsque vous avez terminé d'écrire le code du serveur, vous devez l'identifier avec '%>'. J'adore les formulaires Web ASP.NET, mais c'est maladroit. Avec Razor, vous identifiez le moment où vous souhaitez commencer à écrire le code du serveur avec '@', puis la prochaine fois que vous commencez à écrire une balise de serveur (commençant par '<'), il "comprend" que vous avez terminé avec le code du serveur. C'est une façon plus concise d'écrire du HTML mélangé à du code serveur.

Les pages Web ASP.NET sont un cadre pour la création d'applications Web simples. ASP.NET MVC est un cadre de création d'applications Web avec le moteur Web Forms ou Razor à l'aide du modèle Model-View-Controller (MVC). ASP.NET Web Forms est un cadre de création d'applications Web à l'aide du moteur de rendu Web Forms.

En fin de compte, l'objectif est de fournir un choix basé sur la sophistication de l'application en cours de création. Comprendre chacun d'eux vous aide à faire le bon choix pour votre application.

Liens supplémentaires:

17
Glenn Ferrie

Dans le modèle MVC, M est le modèle, C est le contrôleur et V est la vue. Donc, tout naturellement, dans le modèle ASP.NET MVC, il y a le concept d'un View Engine . Le rasoir est simplement l'un des moteurs de visualisation fournis. L'autre fourni dès le départ est le "vieux" WebForms (vous pouvez également écrire votre propre View Engine en passant). Razor n'a donc pas la notion de code-behind qui reste dans les limites du moteur de vue WebForms.

Donc, cela dit tout. Razor gère la partie View de MVC (si vous choisissez de l'utiliser à la place de WebForms). Cela n'a rien à voir avec M ou C.

Personnellement, j'opterais certainement pour le moteur de visualisation Razor si vous choisissez le modèle ASP.NET MVC, ou utilisez des WebForms simples sans MVC, car Razor a été conçu pour être moins verbeux, plus simple à utiliser que celui des Webforms. Il est aussi tout simplement plus récent, donc il essaie d'être ... simplement meilleur :-)

En remarque, le Razor Parser peut également être utilisé en dehors d'ASP.NET MVC. Il est implémenté dans un assembly qui ne repose pas du tout sur MVC ni sur les assemblys Web. Voir ici pour plus d'informations à ce sujet: http://www.west-wind.com/weblog/posts/2010/Dec/27/Hosting-the-Razor-Engine-for-Templating-in-NonWeb-Applications

19
Simon Mourier

Il n'y a pas de code-behind par défaut, mais vous pouvez facilement faire hériter votre fichier de rasoir de votre classe personnalisée:

@inherits Index

puis

public class Index : WebViewPage { }

(Plus d'informations ici: http://www.compiledoughtts.com/2011/01/aspnet-mvc3-creating-razor-view-engine.html )

Cela ressemble plus à une façon à l'ancienne de faire du Web, plus comme asp3. La différence avec mvc est que mvc fournit un cadre énorme qui prend en charge les applications du monde réel (en utilisant le routage, le contrôleur et les actions, et pas seulement "coder là dans le balisage").

Je pense qu'il existe pour faire des choses vraiment simples, mais je ne sais pas vraiment ...

Enfin, je choisirais toujours asp.net mvc avec un rasoir.

J'espère que ça aide

5
Ivo

Eh bien, vous avez deux options:

  1. Utilisez WebForms: utilisez des contrôles prêts à l'emploi côté serveur (balisage mixte et codes commerciaux) et utilisez des pages maîtres et des habillages, mais faites face à une certaine complexité liée à ces commodités! :)

  2. Utilisez MVC: ou utilisez un modèle de conception séparé qui vous donne une base de code plus organisée. vous pouvez d'abord faire un prototype de conception, ou d'abord créer des codes d'entreprise, puis construire l'autre aspect, assez facilement. même vous pouvez donner au designer plus de contrôle sur son travail, lui donnant la possibilité de faire tout ce qu'il veut. -> celui-ci est mon choix préféré car il me donne plus de contrôle sur mon code, rend mon code plus concis et plus propre.

Si vous avez sélectionné le modèle MVC, vous êtes confronté à une autre option ... Afficher les moteurs

  1. Ancien MVC View Engine: ce n'est pas mal, mais c'est un peu bavard
  2. Razor Engine: il fait la même chose que le n ° 1, pourquoi ne voulez-vous jamais l'utiliser?! il ne remplace rien du modèle MVC. c'est aussi plus concis et facile, vous avez à la fois la puissance de MVC et la simplicité du Razor Engine. Razor est une syntaxe de balisage plus intelligente, qui vous aide à rester concentré sur votre entreprise, plutôt que d'écrire "<%" s! en utilisant la syntaxe de rasoir, vous bénéficiez d'un avantage, la pleine puissance de MVC est à portée de main!

Vous pouvez également écrire de simples pages Web asp.net uniquement avec la syntaxe de rasoir (C # ou VB). (tout comme php)

  • Mon choix personnel serait MVC + Razor, la meilleure combinaison!
2
Scorp
  1. Il n'y a pas de "code-behind" dans MVC, point. Ce que vous avez, ce sont des contrôleurs, qui existent à la fois pour Razor et non-Razor.
  2. Ce ne sont que deux types de balisage différents. (Voir la réponse suivante)
  3. Il ne remplace pas MVC, c'est juste une autre option. Le balisage traditionnel est très verbeux. La syntaxe du rasoir est succincte.
0
Paolo del Mundo

Pour sortir de toute confusion par webform, MVC, Razor, WebPages et bien d'autres à venir de Microsoft, je préfère html -> javascript -> webapi.

0
Zeni