# ASP.NET MVC

ASP.NET MVC est un framework de programmation des applications web en style MVC ajouté à ASP.NET en 2009. Il a été créé en 2007 par Scott Guthrie, un des auteurs d'ASP.Net puis a été incorporé à ASP.NET et est devenu un produit officiel de Microsoft avec la sortie de ASP.Net MVC 1.0. Le code source d'ASP.Net MVC est publié sous licence libre Microsoft Public License.
Les sites web Stack Overflow et CodePlex ont été créés avec ASP.NET MVC.

## Description

Depuis 2002 ASP.NET comporte le framework Web forms qui permet de mettre en œuvre une interface graphique à l'aide d'un groupe d'objets qui peuvent être transformés en HTML. ASP.NET MVC est un framework inspiré de produits comme Ruby on Rails, proposé depuis 2009 comme alternative à Web forms. Il applique le style Modèle-Vue-Contrôleur (abr. MVC) - un style lancé en 1978 et devenu populaire pour les applications web. Contrairement à Web forms, le framework ASP.Net MVC offre un contrôle complet du HTML généré par l'application web, ce qui simplifie l'utilisation de bibliothèques comme JQuery ou Bootstrap.
En style MVC une application comporte des modèles, des vues et des contrôleurs
* un modèle décrit des données métier. Les caractéristiques des données ainsi que les opérations sont encapsulées dans des modèles.
* une vue est destinée à transformer un modèle en quelque chose de visuel. Dans les applications web cela signifie générer du HTML.
* un contrôleur contrôle l'utilisation des vues et des modèles. Reçoit les actions de l'utilisateur, lance les modifications du modèle et utilise les vues pour obtenir le résultat présenté à l'utilisateur.
ASP.NET MVC suit le principe de convention plutôt que configuration: au lieu de proposer des paramètres de configuration, ASP.NET MVC part du principe que l'ingénieur qui s'en sert suivra un certain nombre de conventions. Par exemple ASP.NET MVC part du principe que les répertoires Models, Views et Controllers d'une application web seront utilisés pour enregistrer le code source des modèles, des vues / resp. des contrôleurs.
Razor est le générateur de page web dynamique par défaut d'ASP.NET MVC depuis la version 3: les pages web sont générées à partir de fichiers hybrides qui comportent à la fois des balises HTML et du code source à la syntaxe Razor. Ces fichiers sont ensuite compilés et exécutés à la volée. En syntaxe Razor, le caractère "@" sert à délimiter le code source, éventuellement accompagné d'accolades "{" et "}". Le code source peut être en langage C# ou Visual Basic.NET. L'utilisation de ces caractères, peu usuels dans le HTML, facilite la lecture en permettant de facilement faire la distinction entre le code source et le contenu HTML de la vue.

## Histoire

Lors de sa sortie en 2002, ASP.Net comportait un framework Web forms qui permettait de mettre en œuvre une interface graphique à l'aide d'un groupe d'objets qui peuvent être transformés en HTML. Par ce framework Microsoft a tenté de faire abstraction du langage HTML et du protocole HTTP auquel les ingénieurs n'étaient pas encore familiers. Web forms permettait aux ingénieurs de créer des interfaces graphiques selon le procédé classique événementiel.
Depuis 2002, les technologies web ont évolué vers un plus strict respect des standards. HTML5 est devenu populaire, et des nouvelles bibliothèques Javascript telles que AngularJS et JQuery ont facilité le travail des ingénieurs. L'architecture REST est devenue populaire, et ce style a amené à des applications web qui manipulent non seulement du HTML mais également des documents JSON ou XML et s'utilisent avec des scripts Ajax et des smartphones.
Des frameworks en architecture MVC tels que Ruby on Rails ont fait leur apparition. Ce dernier offre un strict respect des standards et permet de construire des applications en style REST et MVC.
ASP.Net MVC a été créé en 2007 par Scott Guthrie, un des auteurs d'ASP.Net, durant un voyage en avion. Il a ensuite été incorporé à ASP.NET et est devenu un produit officiel de Microsoft en 2009 avec la sortie de ASP.Net MVC 1.0.

## Razor

Razor est une syntaxe utilisée pour créer des pages web dynamiques avec les langages C# ou Visual Basic.NET, qui a été intégrée à Visual Studio en 2011. Razor propose une structure simple de génération de vue et a été intégrée dans ASP.NET MVC 3 et le jeu d'outils WebMatrix.

### Histoire

Razor fut développé à partir de 2010 et introduit dans Microsoft Visual Studio 2010 en janvier 2011.

### Structure

La syntaxe Razor est composée de balises de moteur de template, basée sur le langage de programmation C#, permettant au développeur de générer un flux HTML. On évite ainsi d'utiliser la syntaxe <%= %> annonçant habituellement un bloc de code dans les pages web ASP.NET (.aspx) nécessitant une construction plus lourde, car Razor annonce le début d'un bloc simplement avec le caractère @ d'une part et d'autre part ne nécessite pas de balise de fermeture.
L'idée derrière Razor est de proposer une syntaxe optimisée pour la génération de code HTML, avec une approche centrée sur le langage de template, avec une transition minimaliste entre ce dernier et HTML. Ce principe réduit significativement le nombre de caractère et la saisie, et améliore le processus de développement par le fait de ne pas recourir explicitement à un marquage des blocs au sein du code HTML. Autres avantages notables :
* Support de l'auto-complétion IntelliSense
* Test unitaire
* Support des "layouts" (une alternative au concept de "master page" avec les pages web ASP.NET (.aspx) classiques)