web-dev-qa-db-fra.com

Différence entre ASP.NET MVC 3 et 4?

Existe-t-il une liste complète qui explique toutes les nouvelles fonctionnalités de MVC4 et ce qui a changé depuis MVC3? 

(Les notes de version ne sont pas très utiles)

63
Akshat Jiwan Sharma

Copié et collé à partir de Notes de version de MVC4 :

• Modèle de programmation HTTP moderne: accédez et manipulez directement les demandes et les réponses HTTP dans vos API Web à l'aide d'un nouveau modèle d'objet HTTP fortement typé. Le même modèle de programmation et le même pipeline HTTP sont disponibles de manière symétrique sur le client via le nouveau type HttpClient.

Prise en charge complète des itinéraires: l'API Web ASP.NET prend en charge l'ensemble des fonctionnalités de routage du routage ASP.NET, y compris les paramètres et les contraintes de routage. En outre, utilisez des conventions simples pour mapper les actions aux méthodes HTTP.

Négociation de contenu: le client et le serveur peuvent travailler ensemble pour déterminer le bon format pour les données renvoyées par une API Web. L'API Web ASP.NET fournit une prise en charge par défaut pour les formats codés au format XML, JSON et Form URL. Vous pouvez étendre cette prise en charge en ajoutant vos propres formateurs, ou même remplacer la stratégie de négociation de contenu par défaut.

Liaison et validation de modèle: les classeurs de modèle constituent un moyen simple d'extraire des données de différentes parties d'une requête HTTP et de convertir ces parties de message en objets .NET pouvant être utilisés par les actions de l'API Web. La validation est également effectuée sur les paramètres d'action en fonction des annotations de données.

Filters: L'API Web ASP.NET prend en charge les filtres, notamment ceux connus, tels que l'attribut [Authorize]. Vous pouvez créer et brancher vos propres filtres pour les actions, les autorisations et la gestion des exceptions.

Query composition: utilisez l'attribut de filtre [Queryable] sur une action qui renvoie IQueryable pour activer la prise en charge de votre API Web via les conventions de requête OData.

Amélioration de la testabilité: plutôt que de définir les détails HTTP dans des objets de contexte statiques, les actions de l'API Web fonctionnent avec des instances de HttpRequestMessage et HttpResponseMessage. Créez un projet de test unitaire avec votre projet API Web pour commencer rapidement à écrire des tests unitaires pour la fonctionnalité de votre API Web.

Configuration basée sur du code: la configuration de l'API Web ASP.NET s'effectue uniquement via du code, vos fichiers de configuration sont donc propres. Utilisez le modèle de localisation de service fourni pour configurer les points d'extensibilité.

Prise en charge améliorée des conteneurs Inversion of Control (IoC): L'API Web ASP.NET offre une prise en charge optimale des conteneurs IoC grâce à une abstraction améliorée du résolveur de dépendances.

Self-Host: les API Web peuvent être hébergées dans votre propre processus, en plus de IIS, tout en utilisant toute la puissance des itinéraires et autres fonctionnalités de l'API Web.

Créer des pages d'aide et de test personnalisées: vous pouvez désormais créer facilement des pages d'aide et de test personnalisées pour vos API Web en utilisant le nouveau service IApiExplorer pour obtenir une description complète de l'exécution de vos API Web.

Surveillance et diagnostics: L'API Web ASP.NET fournit désormais une infrastructure de traçage légère facilitant l'intégration aux solutions de journalisation existantes telles que System.Diagnostics, ETW et les infrastructures de journalisation tierces. Vous pouvez activer le traçage en fournissant une implémentation ITraceWriter et en l'ajoutant à la configuration de votre API Web.

Génération de liens: utilisez l'URLHelper de l'API Web ASP.NET pour générer des liens vers des ressources connexes dans la même application.

• Modèle de projet API Web: sélectionnez le nouveau projet d'API Web dans l'assistant de création de projet MVC 4 pour vous familiariser rapidement avec les API Web ASP.NET.

Scaffolding: utilisez la boîte de dialogue Ajouter un contrôleur pour échafauder rapidement un contrôleur API Web basé sur un type de modèle basé sur Entity Framework.

61
JSK NS

Copier et coller depuis Quoi de neuf dans MVC4 - MVC3 Vs MVC4

Quoi de neuf dans MVC4 - MVC3 Vs MVC4

Améliorations apportées aux modèles de projet par défaut

Le modèle utilisé pour créer de nouveaux projets ASP.NET MVC 4 a été mis à jour pour créer un site Web plus moderne.

Modèle de projet mobile

Si vous démarrez un nouveau projet et souhaitez créer un site spécifiquement pour les navigateurs mobiles et tablettes, vous pouvez utiliser le nouveau modèle de projet Application mobile. Ceci est basé sur jQuery Mobile, une bibliothèque open-source pour la construction d'une interface utilisateur optimisée pour le toucher

Modes d'affichage

La nouvelle fonctionnalité Modes d'affichage permet à une application de sélectionner des vues en fonction du navigateur à l'origine de la demande. Par exemple, si un navigateur de bureau demande la page d'accueil, l'application peut utiliser le modèle Views\Home\Index.cshtml. Si un navigateur mobile demande la page d'accueil, l'application peut renvoyer le modèle Views\Home\Index.mobile.cshtml.

DisplayModes.Modes.Insert(0, new DefaultDisplayMode("iPhone")
{
  ContextCondition = (context => context.Request.UserAgent.IndexOf
    ("iPhone", StringComparison.OrdinalIgnoreCase) >= 0)
});

jQuery Mobile, le sélecteur de vues et le remplacement du navigateur

jQuery Mobile est une bibliothèque open source permettant de créer une interface utilisateur Web optimisée pour les fonctionnalités tactiles. Si vous souhaitez utiliser jQuery Mobile avec une application ASP.NET MVC 4, vous pouvez télécharger et installer un package NuGet qui vous aidera à démarrer. Pour l'installer à partir de la console Visual Studio Package Manager, tapez la commande suivante: Install-Package jQuery.Mobile.MVC Ceci installe jQuery Mobile et certains fichiers auxiliaires, notamment: Views/Shared /. Layout.Mobile.cshtml, qui est une présentation basée sur jQuery Mobile . Un composant commutateur de vue, composé de la vue partielle Views/Shared/ViewSwitcher.cshtml et du contrôleur ViewSwitcherController.cs . Après l'installation le package, exécutez votre application à l’aide d’un navigateur mobile (ou équivalent, tel que l’add-on Firefox User Agent Switcher). Vous constaterez que vos pages ont un aspect très différent, car jQuery Mobile gère la mise en page et le style. Pour en tirer parti, vous pouvez procéder comme suit Si les visiteurs cliquent sur le lien, ils basculent vers la version de bureau de la même page Parce que la disposition de votre bureau n'inclut pas de commutateur de vue par défaut, les visiteurs n'aura aucun moyen de passer en mode mobile. Pour l'activer, ajoutez la référence suivante à _ ViewSwitcher à la disposition de votre bureau, juste à l'intérieur de l'élément:

@Html.Partial("_ViewSwitcher")

... La substitution de navigateur est une fonctionnalité essentielle de ASP.NET MVC 4 et est disponible même si vous n'installez pas le package jQuery.Mobile.MVC. Toutefois, il affecte uniquement la sélection d'affichage, de présentation et de vue partielle. Aucune autre fonctionnalité ASP.NET qui dépend de l'objet Request.Browser n'est affectée.

Recettes pour la génération de code dans Visual Studio

La nouvelle fonctionnalité Recipes permet à Visual Studio de générer du code spécifique à la solution en fonction des packages que vous pouvez installer à l'aide de NuGet. Le framework Recipes permet aux développeurs d’écrire facilement des plugins de génération de code, que vous pouvez également utiliser pour remplacer les générateurs de code intégrés pour Ajouter une zone, Ajouter un contrôleur et Ajouter une vue. Les recettes étant déployées sous forme de packages NuGet, elles peuvent facilement être archivées dans le contrôle de source et partagées automatiquement avec tous les développeurs du projet. Ils sont également disponibles solution par solution.

Prise en charge des tâches pour les contrôleurs asynchrones

Vous pouvez maintenant écrire des méthodes d'action asynchrones en tant que méthodes uniques qui renvoient un objet de type Tâche ou Tâche.

Par exemple, si vous utilisez Visual C # 5 (ou utilisez le CTP asynchrone), vous pouvez créer une méthode d'action asynchrone ressemblant à ceci:

public async Task Index(string city) {
    var newsService = new NewsService();
    var sportsService = new SportsService();

    return View("Common", new PortalViewModel {
      NewsHeadlines = await newsService.GetHeadlinesAsync(),
      SportsScores = await sportsService.GetScoresAsync()
    });
}

Dans la méthode d'action précédente, les appels à newsService.GetHeadlinesAsync et à sportsService.GetScoresAsync sont appelés de manière asynchrone et ne bloquent pas un thread du pool de threads.

Les méthodes d'action asynchrones qui renvoient des instances de tâche peuvent également prendre en charge les délais d'expiration. Pour rendre votre méthode d’action annulable, ajoutez un paramètre de type CancellationToken à la signature de la méthode d’action. L'exemple suivant montre une méthode d'action asynchrone dont le délai d'expiration est de 2 500 millisecondes et qui affiche une vue TimedOut sur le client en cas d'expiration du délai.

[AsyncTimeout(2500)]
[HandleError(ExceptionType = typeof(TaskCanceledException), View = "TimedOut")]
public async Task Index(string city, CancellationToken cancellationToken) {
    var newsService = new NewsService();
    var sportsService = new SportsService();

    return View("Common", new PortalViewModel {
      NewsHeadlines = await newsService.GetHeadlinesAsync(cancellationToken),
      SportsScores = await sportsService.GetScoresAsync(cancellationToken)
    });
}

J'espère que cela t'aides. Merci

42
Display Name
2
Afazal

MVC 3

  1. Système d'échafaudage intégré extensible via NuGet
  2. Modèles de projet activés par HTML 5
  3. Vues expressives, y compris le nouveau Razor View Engine
  4. Crochets puissants avec injection de dépendance et filtres d'action globaux
  5. Prise en charge étendue de JavaScript avec JavaScript non intrusif, validation jQuery et liaison JSON

MVC 4

  1. API Web ASP.NET
  2. Projet par défaut actualisé et modernisé Templates
  3. Nouveau modèle de projet mobile
  4. Beaucoup de nouvelles fonctionnalités pour supporter les applications mobiles
  5. Prise en charge améliorée des méthodes asynchrones

Réf: http://dotnet-developers-cafe.blogspot.in/2013/09/difference-between-aspnet-mvc-3-and-mvc.html

1
Mukesh Kumar
0
Rahul

Une des fonctionnalités importantes introduites dans MVC 4.0 concerne les contrôleurs asynchrones, qui permettent d’écrire les méthodes d’action asynchrones. Le contrôleur asynchrone permet d'effectuer une opération sans rendre le thread actif inactif.

Lorsqu'une action asynchrone est appelée, les étapes suivantes se produisent:

Le serveur Web obtient un thread du pool de threads (le thread de travail) et le planifie pour gérer une demande entrante. Ce thread de travail initie une opération asynchrone . Le thread de travail est renvoyé au pool de threads pour traiter une autre requête Web . Une fois l'opération asynchrone terminée, il en avertit ASP.NET . Le serveur Web reçoit un Un thread de travail du pool de threads (qui peut être un thread différent de celui qui a démarré l'opération asynchrone) pour traiter le reste de la demande, y compris le rendu de la réponse.

Conversion de méthodes d'action synchrones en méthodes d'action asynchrones

Voici l'exemple de la méthode d'action synchrone et sa version asynchrone équivalente.

Contrôleur synchrone:

 public class TestController : Controller
 {
   public ActionResult Index()
    {
     return View(); 
    }
 }

Variante asynchrone de l'opération ci-dessus:

public class TestController : AsyncController
{
   public void IndexAsync()
   {
    return View();
   }

  public ActionResult IndexCompleted()
  {
   return View();
  }
}

Pas:

  • Les contrôleurs synchrones sont les classes dérivées de la classe Controller Permettant d'implémenter un AsyncController au lieu de dériver le contrôleur À partir du contrôleur, dérivez-le de la classe AsyncController traiter les demandes asynchrones, et ils peuvent toujours servir les méthodes d'action synchrones

  • Correspondant à la méthode d'action synchrone dans le contrôleur synchrone , Vous devez créer deux méthodes pour l'action dans Contrôleur asynchrone. La première méthode qui initie le processus. As. Asynchrone doit porter un nom comprenant l'action et le suffixe "Async". L'autre méthode appelée à la fin du processus Asynchrone (la méthode de rappel) doit avoir un nom composé de De l'action et du suffixe "Completed".

    Dans l'exemple ci-dessus, l'action Index a été transformée en Deux méthodes du contrôleur asynchrone: IndexAsync et IndexCompleted.

    La méthode IndexAsync renvoie la valeur vide, tandis que la méthode IndexCompleted .__ renvoie une instance ActionResult. Bien que l'action se compose de deux méthodes , Elle est accessible à l'aide de la même URL que pour une méthode d'action synchrone (Par exemple, Contrôleur/Index).

Notez les points suivants concernant les méthodes d'action asynchrones:

Si le nom de l'action est Sample, l'infrastructure recherchera les méthodes SampleAsync et SampleCompleted.

Les pages d'affichage doivent être nommées Sample.aspx plutôt que SampleAsync.aspx ou SampleCompleted.aspx. (Le nom de l'action est Sample, pas SampleAsync)

Un contrôleur ne peut pas contenir une méthode asynchrone nommée SampleAsync et une méthode synchrone nommée Sample. Si tel est le cas, une exception AmbiguousMatchException est renvoyée, car la méthode d'action SampleAsync et la méthode d'action Sample ont la même signature de demande.

Pour plus de détails, cliquez ici: http://www.counsellingbyabhi.com/2014/05/asynchronous-controllers-in-aspnet-mvc.html

0