wake-up-neo.com

Unterschied zwischen ASP.NET MVC 3 und 4?

Gibt es eine umfassende Liste, die alle neuen Funktionen von MVC4 erläutert und was sich seit der MVC3 geändert hat? 

(Die Versionshinweise sind nicht sehr hilfreich)

63

Kopieren und Einfügen aus MVC4 Versionshinweise :

Modernes HTTP-Programmiermodell: Mit einem neuen, stark typisierten HTTP-Objektmodell können Sie direkt auf HTTP-Anforderungen und -Antworten in Ihren Web-APIs zugreifen und diese bearbeiten. Das gleiche Programmiermodell und dieselbe HTTP-Pipeline ist auf dem Client über den neuen HttpClient-Typ symmetrisch verfügbar.

Volle Unterstützung für Routen: ASP.NET-Web-API unterstützt alle Routenfunktionen von ASP.NET-Routing, einschließlich Routenparameter und -einschränkungen. Verwenden Sie außerdem einfache Konventionen, um Aktionen HTTP-Methoden zuzuordnen.

Content Negotiation: Client und Server können zusammenarbeiten, um das richtige Format für Daten zu bestimmen, die von einer Web-API zurückgegeben werden. ASP.NET Web API bietet Standardunterstützung für XML-, JSON- und formular-URL-kodierte Formate. Sie können diese Unterstützung erweitern, indem Sie eigene Formatierer hinzufügen oder sogar die Standardstrategie für Inhaltsaushandlungen ersetzen.

Modellbindung und Validierung: Mit Modellbindern können Sie auf einfache Weise Daten aus verschiedenen Teilen einer HTTP-Anforderung extrahieren und diese Nachrichtenteile in .NET-Objekte konvertieren, die von den Web-API-Aktionen verwendet werden können. Die Validierung wird auch für Aktionsparameter basierend auf Datenanmerkungen durchgeführt.

filters: Die ASP.NET-Web-API unterstützt Filter, einschließlich bekannter Filter wie dem Attribut [Authorize]. Sie können eigene Filter für Aktionen, Autorisierung und Ausnahmebehandlung erstellen und einfügen.

Abfragezusammensetzung: Verwenden Sie das Filterattribut [Queryable] für eine Aktion, die IQueryable zurückgibt, um Unterstützung für die Abfrage Ihrer Web-API über die OData-Abfragekonventionen zu aktivieren.

Verbesserte Testbarkeit: Anstatt HTTP-Details in statischen Kontextobjekten festzulegen, arbeiten Web-API-Aktionen mit Instanzen von HttpRequestMessage und HttpResponseMessage. Erstellen Sie ein Komponententestprojekt zusammen mit Ihrem Web-API-Projekt, um schnell mit Komponententests für Ihre Web-API-Funktionalität zu beginnen.

Code-basierte Konfiguration: Die Konfiguration der ASP.NET-Web-API erfolgt ausschließlich über Code. Dadurch bleiben Ihre Konfigurationsdateien sauber. Verwenden Sie das Dienst-Locator-Muster, um Erweiterungspunkte zu konfigurieren.

Verbesserte Unterstützung für Inversion of Control-Container (IoC-Container): ASP.NET-Web-API bietet eine hervorragende Unterstützung für IoC-Container durch eine verbesserte Abstraktion von Abhängigkeiten

Self-Host: Web-APIs können in Ihrem eigenen Prozess zusätzlich zu IIS gehostet werden, während Sie weiterhin die volle Leistungsfähigkeit von Routen und anderen Funktionen der Web-API nutzen.

Benutzerdefinierte Hilfeseiten und Testseiten erstellen: Sie können jetzt leicht benutzerdefinierte Hilfs- und Testseiten für Ihre Web-APIs erstellen, indem Sie den neuen IApiExplorer-Dienst verwenden, um eine vollständige Laufzeitbeschreibung Ihrer Web-APIs zu erhalten.

Überwachung und Diagnose: ASP.NET-Web-API bietet jetzt eine Infrastruktur für die leichtere Ablaufverfolgung, die die Integration in vorhandene Protokollierungslösungen wie System.Diagnostics, ETW und Protokollierungsframeworks von Drittanbietern vereinfacht. Sie können die Ablaufverfolgung aktivieren, indem Sie eine ITraceWriter-Implementierung bereitstellen und sie Ihrer Web-API-Konfiguration hinzufügen.

Link-Generierung: Verwenden Sie die ASP.NET-Web-API-URL, um Links zu zugehörigen Ressourcen in derselben Anwendung zu generieren.

Web-API-Projektvorlage: Wählen Sie das neue Web-API-Projekt mit dem Assistenten für neue MVC 4-Projekte aus, um die ASP.NET-Web-API schnell einzurichten.

Scaffolding: Verwenden Sie das Dialogfeld "Controller hinzufügen", um einen Web-API-Controller basierend auf einem Entity Framework-basierten Modelltyp schnell zu erstellen.

61
JSK NS

Kopieren und Einfügen aus Was ist neu in MVC4 - MVC3 und MVC4

Was ist neu in MVC4 - MVC3 und MVC4

Verbesserungen an Standardprojektvorlagen

Die Vorlage, die zum Erstellen neuer ASP.NET MVC 4-Projekte verwendet wird, wurde aktualisiert, um eine modernere Website zu erstellen

Mobile Projektvorlage

Wenn Sie ein neues Projekt starten und eine Website speziell für mobile Browser und Tablet-Browser erstellen möchten, können Sie die neue Projektvorlage für mobile Anwendungen verwenden. Dies basiert auf jQuery Mobile, einer Open-Source-Bibliothek zum Erstellen einer touchoptimierten Benutzeroberfläche

Anzeigemodi

Mit der neuen Funktion "Anzeigemodi" kann eine Anwendung Ansichten abhängig von dem Browser auswählen, der die Anforderung stellt. Wenn ein Desktop-Browser beispielsweise die Startseite anfordert, verwendet die Anwendung möglicherweise die Vorlage Views\Home\Index.cshtml. Wenn ein mobiler Browser die Homepage anfordert, gibt die Anwendung möglicherweise die Vorlage Views\Home\Index.mobile.cshtml zurück.

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

jQuery Mobile, der View Switcher und das Browser-Überschreiben

jQuery Mobile ist eine Open Source-Bibliothek zum Erstellen einer touch-optimierten Web-Benutzeroberfläche. Wenn Sie jQuery Mobile mit einer ASP.NET MVC 4-Anwendung verwenden möchten, können Sie ein NuGet-Paket herunterladen und installieren, das Ihnen den Einstieg erleichtert. Geben Sie den folgenden Befehl ein, um ihn von der Visual Studio Package Manager-Konsole aus zu installieren: Install-Package jQuery.Mobile.MVC Dadurch werden jQuery Mobile und einige Hilfedateien einschließlich der folgenden Dateien installiert: Ansichten/Freigegeben/Layout.Mobile.cshtml, ein auf jQuery Mobile basierendes Layout . Eine View-Switcher-Komponente, die aus der Teilansicht Views/Shared/ViewSwitcher.cshtml und dem Controller ViewSwitcherController.cs ..__ besteht Führen Sie die Anwendung des Pakets über einen mobilen Browser aus (oder ein ähnliches Programm wie das Add-On für Firefox User Agent Switcher). Sie werden feststellen, dass Ihre Seiten ganz anders aussehen, weil jQuery Mobile das Layout und die Gestaltung übernimmt. Um dies zu nutzen, können Sie Folgendes tun: __ Wenn Besucher auf den Link klicken, wechseln sie zur Desktopversion derselben Seite. __ Da Ihr Desktop-Layout standardmäßig keinen Ansichtsumschalter enthält, werden Besucher kann nicht in den mobilen Modus wechseln. Um dies zu aktivieren, fügen Sie Ihrem Desktop-Layout den folgenden Verweis auf _ ViewSwitcher hinzu, nur innerhalb des Elements:

@Html.Partial("_ViewSwitcher")

... Browser-Überschreibung ist eine Kernfunktion von ASP.NET MVC 4 und ist auch verfügbar, wenn Sie das Paket jQuery.Mobile.MVC nicht installieren. Sie wirkt sich jedoch nur auf die Ansicht, das Layout und die Teilansicht aus. Sie hat keine Auswirkungen auf andere ASP.NET-Features, die vom Request.Browser-Objekt abhängen.

Rezepte für die Codegenerierung in Visual Studio

Mit der neuen Rezeptfunktion kann Visual Studio lösungsspezifischen Code basierend auf Paketen generieren, die Sie mit NuGet installieren können. Das Recipes-Framework erleichtert Entwicklern das Schreiben von Code-Generierungs-Plug-Ins, mit denen Sie auch die integrierten Codegeneratoren für "Add Area", "Add Controller" und "Add View" ersetzen können. Da Rezepte als NuGet-Pakete bereitgestellt werden, können sie problemlos in der Quellcodeverwaltung eingecheckt und automatisch für alle Entwickler im Projekt freigegeben werden. Sie sind auch pro Lösung verfügbar.

Taskunterstützung für asynchrone Controller

Sie können asynchrone Aktionsmethoden jetzt als Einzelmethoden schreiben, die ein Objekt vom Typ Task oder Task zurückgeben.

Wenn Sie beispielsweise Visual C # 5 (oder Async-CTP) verwenden, können Sie eine asynchrone Aktionsmethode erstellen, die wie folgt aussieht:

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()
    });
}

In der vorherigen Aktionsmethode werden die Aufrufe von newsService.GetHeadlinesAsync und sportsService.GetScoresAsync asynchron aufgerufen und blockieren keinen Thread aus dem Threadpool.

Asynchrone Aktionsmethoden, die Taskinstanzen zurückgeben, können auch Timeouts unterstützen. Um Ihre Aktionsmethode stornierbar zu machen, fügen Sie der Signatur der Aktionsmethode einen Parameter vom Typ CancellationToken hinzu. Das folgende Beispiel zeigt eine asynchrone Aktionsmethode mit einem Timeout von 2500 Millisekunden, die dem Client eine TimedOut-Ansicht anzeigt, wenn ein Timeout auftritt.

[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)
    });
}

Hoffe das hilft. Vielen Dank

42
Display Name
2
Afazal

MVC 3

  1. Integriertes Gerüstsystem erweiterbar über NuGet
  2. HTML 5-fähige Projektvorlagen
  3. Ausdrucksstarke Ansichten einschließlich der neuen Razor View Engine
  4. Leistungsstarke Hooks mit Dependency Injection undGlobal Action Filter
  5. Umfangreiche JavaScript-Unterstützung mit unauffälliger JavaScript-, jQuery-Validierung- und JSON-Bindung

MVC 4

  1. ASP.NET-Web-API
  2. Aktualisierte und modernisierte Standardprojektvorlagen .__
  3. Neue mobile Projektvorlage
  4. Viele neue Funktionen zur Unterstützung mobiler Apps
  5. Erweiterte Unterstützung für asynchrone Methoden

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

1
Mukesh Kumar
0
Rahul

Eine der wichtigsten Funktionen in MVC 4.0 waren asynchrone Controller, mit denen asynchrone Aktionsmethoden geschrieben werden können. Asynchroner Controller ermöglicht die Ausführung einer Operation, ohne dass der funktionierende Thread inaktiv wird.

Wenn eine asynchrone Aktion aufgerufen wird, werden folgende Schritte ausgeführt:

Der Webserver erhält einen Thread aus dem Threadpool (dem Arbeitsthread) und plant ihn so, dass er eine eingehende Anforderung behandelt. Dieser Arbeitsthread initiiert eine asynchrone Operation. Der Arbeitsthread wird an den Thread-Pool zurückgegeben, um eine andere Webanforderung zu bearbeiten. Wenn der asynchrone Vorgang abgeschlossen ist, benachrichtigt er ASP.NET. Der Webserver erhält eine Worker-Thread aus dem Thread-Pool (der möglicherweise ein anderer Thread ist als der Thread, der den asynchronen Vorgang gestartet hat), um den Rest der Anforderung zu verarbeiten, einschließlich des Renderns der Antwort.

Konvertieren synchroner Aktionsmethoden in asynchrone Aktionsmethoden

Das folgende Beispiel zeigt die Methode der synchronen Aktion und die entsprechende asynchrone Version.

Synchronsteuerung:

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

Asynchrone Variante der obigen Operation:

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

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

Schritte:

  • Synchrone Controller sind die Klassen, die von der Controller-Klasse Abgeleitet werden, um einen AsyncController zu implementieren, anstatt den Controller von Controller abzuleiten. Leiten Sie ihn von der AsyncController-Klasse ab. Controller, die von AsyncController abgeleitet sind, ermöglichen es ASP.NET. verarbeiten asynchrone Anforderungen, und sie können weiterhin synchrone Aktionsmethoden bedienen.

  • Entsprechend der synchronen Aktionsmethode in Synchroner Controller müssen Sie zwei Methoden für die Aktion in asynchroner Controller erstellen. Die erste Methode, die den asynchronen Prozess startet, muss einen Namen haben, der aus der Aktion und dem Suffix besteht "Async". Die andere Methode, die aufgerufen wird, wenn der asynchrone .__-Prozess (die Callback-Methode) abgeschlossen ist, muss einen Namen haben, der aus der Aktion Und dem Suffix "Completed" besteht.

    Im obigen Beispiel wurde die Index-Aktion in zwei Methoden in asynchronem Controller umgewandelt: IndexAsync und IndexCompleted.

    Die IndexAsync-Methode gibt void zurück, während die IndexCompleted-Methode Eine ActionResult-Instanz zurückgibt. Obwohl die Aktion aus zwei -Methoden besteht, wird über dieselbe URL wie für eine synchrone -Aktionsmethode (z. B. Controller/Index) zugegriffen.

Beachten Sie Folgendes zu asynchronen Aktionsmethoden:

Wenn der Aktionsname Sample lautet, sucht das Framework nach den Methoden SampleAsync und SampleCompleted.

Ansichtsseiten sollten als Sample.aspx und nicht als SampleAsync.aspx oder SampleCompleted.aspx bezeichnet werden. (Der Aktionsname ist Sample und nicht SampleAsync.)

Ein Controller kann keine asynchrone Methode mit dem Namen SampleAsync und eine synchrone Methode mit dem Namen Sample enthalten. Wenn dies der Fall ist, wird eine AmbiguousMatchException-Ausnahme ausgelöst, da die Aktionsmethode SampleAsync und die Aktionsmethode Sample dieselbe Anforderungssignatur aufweisen.

Für weitere Informationen klicken Sie hier: http://www.counsellingbyabhi.com/2014/05/asynchronous-controllers-in-aspnet-mvc.html

0