2012-09-21 32 views
63

Esiste un elenco completo che spiega tutte le nuove funzionalità di MVC4 e cosa è cambiato da MVC3?Differenza tra ASP.NET MVC 3 e 4?

(Il release notes non sono molto utili)

+2

Guardate le note di rilascio: http://www.asp.net/whitepapers/mvc4-release-notes#_Toc303253808 –

+14

"Le note di rilascio non sono ... utile "..." Guarda le note di rilascio .. "??? –

risposta

61

copiato e incollato da MVC4 Release Notes:

modello di programmazione HTTP moderna: Direttamente accedere e manipolare le richieste HTTP e le risposte nelle vostre API Web utilizzando un nuovo, modello di oggetto HTTP fortemente tipizzato. Lo stesso modello di programmazione e la pipeline HTTP sono simmetricamente disponibili sul client attraverso il nuovo tipo HttpClient.

• Supporto completo per le route: l'API Web ASP.NET supporta il set completo di funzionalità di instradamento del routing ASP.NET, inclusi i parametri e i vincoli del percorso. Inoltre, utilizzare semplici convenzioni per associare le azioni ai metodi HTTP.

Negoziazione dei contenuti: il client e il server possono collaborare per determinare il formato corretto per i dati restituiti da un'API Web. L'API Web ASP.NET fornisce il supporto predefinito per i formati XML, JSON e Form URL-codificati ed è possibile estendere questo supporto aggiungendo i propri formattatori o addirittura sostituire la strategia di negoziazione del contenuto predefinita.

• vincolante modello e validazione: raccoglitori di modello forniscono un modo semplice per estrarre dati da varie parti di una richiesta HTTP e convertire quelle parti del messaggio in oggetti .NET che possono essere utilizzati dalle azioni Web API. La convalida viene eseguita anche su parametri di azione basati su annotazioni di dati.

Filtri: L'API Web ASP.NET supporta i filtri compresi i filtri noti come l'attributo [Autorizza]. È possibile creare e collegare i propri filtri per azioni, autorizzazione e gestione delle eccezioni.

Composizione query: utilizzare l'attributo del filtro [Queryable] su un'azione che restituisce IQueryable per abilitare il supporto per l'interrogazione dell'API Web tramite le convenzioni di query OData.

Testability migliorata: Invece di impostare i dettagli HTTP in oggetti di contesto statici, le azioni API Web funzionano con le istanze di HttpRequestMessage e HttpResponseMessage. Crea un progetto unit test insieme al tuo progetto API Web per iniziare rapidamente a scrivere test unitari per la tua funzionalità API Web.

Configurazione basata su codice: la configurazione dell'API Web ASP.NET viene eseguita esclusivamente tramite codice, lasciando i file di configurazione puliti. Utilizzare il modello di localizzazione del servizio di fornitura per configurare i punti di estensibilità.

supporto migliorato per inversione di contenitori di controllo (IOC): ASP.NET Web API fornisce grande supporto per contenitori IoC tramite un resolver astrazione perfezionata dipendenza

self-host: API Web possono essere ospitato nel tuo processo personale in aggiunta a IIS mentre utilizza ancora la piena potenza di percorsi e altre funzionalità dell'API Web.

creare la guida in costume e pagine di prova: Ora è possibile creare facilmente aiuto personalizzato e pagine di prova per le API web utilizzando il nuovo servizio IApiExplorer per ottenere una descrizione completa esecuzione dei vostri API web.

Monitoraggio e diagnostica: ASP.NET Web API fornisce ora il peso leggero tracciando le infrastrutture che lo rende facile da integrare con le soluzioni di registrazione esistenti, come System.Diagnostics, ETW e framework di terze parti di registrazione. È possibile abilitare la traccia fornendo un'implementazione ITraceWriter e aggiungendola alla configurazione dell'API Web.

Generazione del collegamento: utilizzare l'UrlHelper API Web ASP.NET per generare collegamenti alle risorse correlate nella stessa applicazione.

Modello di progetto API Web: selezionare il nuovo progetto di API Web dalla procedura guidata Nuovo progetto MVC 4 per ottenere rapidamente l'avvio e l'esecuzione con l'API Web ASP.NET.

Scaffolding: utilizzare la finestra di dialogo Aggiungi controller per impalcare rapidamente un controller API Web basato su un tipo di modello basato su Entity Framework.

+6

Ma questo è quasi tutto su web api .... c'è qualcosa di nuovo da imparare se non ho intenzione di usare web api? –

+0

mvc3 e mvc4 sono entrambi framework di sviluppo web. Intendevi .Net 4.5? –

+2

@JSKNS Web API è un framework basato su ASP.NET MVC per la creazione di API RESTful.Ciò che intende è che la maggior parte delle cose nelle note di rilascio è specifica per le API Web, piuttosto che essere generale a tutto ASP.NET MVC. –

42

copia e incolla dal Whats new in MVC4 - MVC3 Vs MVC4

cosa è nuovo in MVC4 - MVC3 Vs MVC4

Miglioramenti to Default template di progetto

Il modello utilizzato per creare nuova ASP. I progetti NET MVC 4 sono stati aggiornati per creare un sito dall'aspetto più moderno

.210

Template Progetto Mobile

Se stai iniziando un nuovo progetto e si desidera creare un sito appositamente per i browser mobili e tablet, è possibile utilizzare il nuovo modello di progetto Mobile Application. Questo si basa su jQuery Mobile, una libreria open-source per la costruzione di touch-optimized UI

modalità di visualizzazione

Il nuovo modi di esposizione caratteristica permette un'applicazione selezionare viste a seconda del browser che sta facendo la richiesta. Ad esempio, se un browser desktop richiede la pagina iniziale, l'applicazione potrebbe utilizzare il modello Views\Home\Index.cshtml. Se un browser mobile richiede la pagina iniziale, l'applicazione potrebbe restituire il modello Views\Home\Index.mobile.cshtml.

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

jQuery Mobile, la vista Switcher, e browser Override

jQuery Mobile è una libreria open source per la creazione di touch-optimized web UI. Se si desidera utilizzare jQuery Mobile con un'applicazione ASP.NET MVC 4, è possibile scaricare e installare un pacchetto NuGet che consente di iniziare. Per installarlo dalla console di Gestione pacchetti di Visual Studio, digitare il seguente comando: Pacchetto di installazione jQuery.Mobile.MVC Installa jQuery Mobile e alcuni file di supporto, tra cui: Visualizzazioni/Condivise/Layout.Mobile.cshtml, che è un layout basato su jQuery Mobile. Un componente dello switch di visualizzazione, costituito dalla vista parziale Views/Shared/ViewSwitcher.cshtml e dal controller ViewSwitcherController.cs. Dopo aver installato il pacchetto, eseguire l'applicazione utilizzando un browser mobile (o equivalente, come il componente aggiuntivo di Firefox User Agent Switcher). Vedrai che le tue pagine sono molto diverse, perché jQuery Mobile gestisce il layout e lo stile. Per approfittare di questo, puoi fare quanto segue Se i visitatori cliccano sul link, passano alla versione desktop della stessa pagina. Poiché il layout del desktop non include uno switcher di visualizzazione per impostazione predefinita, i visitatori non avranno un modo per accedere alla modalità mobile. A tal fine, aggiungere il seguente riferimento alla _ViewSwitcher per il layout del desktop, appena dentro l'elemento:

@Html.Partial("_ViewSwitcher") 

... Browser principale è una caratteristica fondamentale di ASP.NET MVC 4 ed è disponibile anche se si non installare il pacchetto jQuery.Mobile.MVC. Tuttavia, influenza solo la vista, il layout e la selezione della vista parziale: non influisce su alcuna altra funzionalità ASP.NET che dipende dall'oggetto Request.Browser.

Ricette per la generazione di codice in Visual Studio

La nuova funzione di ricette consente di Visual Studio per generare codice specifico soluzione basata su pacchetti che è possibile installare utilizzando NuGet. Il framework Recipes consente agli sviluppatori di scrivere facilmente plug-in di generazione del codice, che è possibile utilizzare anche per sostituire i generatori di codice incorporati per Aggiungi area, Aggiungi controller e Aggiungi vista. Poiché le ricette vengono distribuite come pacchetti NuGet, possono essere facilmente controllate nel controllo del codice sorgente e condivise automaticamente con tutti gli sviluppatori del progetto. Sono anche disponibili in base alla soluzione.

Task Support per i controller asincroni

È ora possibile scrivere metodi d'azione asincroni come metodi singoli che restituiscono un oggetto di tipo attività o attività.

Ad esempio, se si sta utilizzando Visual C# 5 (o utilizzando il CTP Async), è possibile creare un metodo di azione asincrona che è simile al seguente:

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

Nel metodo azione precedente, il chiama newsService.GetHeadlinesAsync e sportsService.GetScoresAsync sono chiamati in modo asincrono e non bloccano un thread dal pool di thread.

I metodi di azione asincroni che restituiscono le istanze di attività possono anche supportare i timeout. Per rendere il metodo di azione cancellabile, aggiungi un parametro di tipo CancellationToken alla firma del metodo di azione. L'esempio seguente mostra un metodo di azione asincrono con un timeout di 2500 millisecondi e che visualizza una vista TimedOut sul client se si verifica un timeout.

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

Spero che questo aiuti.Grazie

1

MVC 3

  1. integrato Ponteggi estensibile sistema tramite NuGet
  2. HTML 5 abilitato modelli di progetto
  3. espressiva Visualizzazioni compreso il nuovo rasoio vista motore
  4. Ganci potenti con iniezione delle dipendenze e Filtri azione globali
  5. supporto
  6. Rich JavaScript con discreto JavaScript, jQuery convalida, e JSON vincolante

MVC 4

  1. ASP.NET Web API
  2. Rinnovati e modernizzato progetto predefinito modelli
  3. nuovo cellulare modello di progetto
  4. Molte nuove funzionalità per supportare le app mobili
  5. Supporto migliorato per i metodi asincroni

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

0

Una delle caratteristica importante introdotta in MVC 4.0 è stato di controller asincroni che consente di scrivere i metodi di azione asincroni. Il controller asincrono consente di eseguire un'operazione senza rendere inattivo il thread di lavoro.

Quando viene invocato un'azione asincrona, le seguenti operazioni si verificano:

Il server Web ottiene un thread dal pool di thread (il thread di lavoro) e gli orari che per gestire una richiesta in arrivo. Questo thread di lavoro avvia un'operazione asincrona. Il thread di lavoro viene restituito al pool di thread per soddisfare un'altra richiesta Web. Quando l'operazione asincrona è completa, notifica ASP.NET. Il server Web ottiene un thread di lavoro dal pool di thread (che potrebbe essere un thread diverso dal thread che ha avviato l'operazione asincrona) per elaborare il resto della richiesta, incluso il rendering della risposta.

Conversione Metodi azione sincroni a asincroni Metodi azione

seguito è l'esempio di metodo dell'azione sincrona e la sua versione equivalente asincrono.

sincrono:

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

asincrono variante di funzionamento sopra:

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

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

Passi:

  • controllori sincroni sono le classi derivate dalla classe Controller di attuare un AsyncController invece di derivare il dal controller, derivarlo dalla classe AsyncController. I controllori che derivano da AsyncController abilitano ASP.NET alle richieste asincrone del processo e possono ancora eseguire i metodi di azione sincroni .

  • corrispondente al metodo azione sincrona in sincrono controllore è necessario creare due metodi per l'azione in metodo controller.First asincrona che avvia il processo asincrono deve avere un nome che consiste dell'azione e il suffisso "Async". L'altro metodo invocato quando termina il processo asincrono (il metodo di callback) deve avere un nome composto da dell'azione e il suffisso "Completato".

    Nell'esempio di esempio precedente, l'azione Index è stata trasformata in due metodi in controller asincrono: IndexAsync e IndexCompleted.

    Il metodo IndexAsync restituisce void mentre il metodo IndexCompleted restituisce un'istanza ActionResult. Sebbene l'azione sia composta da due metodi , è possibile accedere utilizzando lo stesso URL di un metodo di azione sincrono (ad esempio, Controller/Indice).

tenere presente quanto segue metodi d'azione asincroni:

Se il nome dell'azione è di esempio, il quadro cercherà metodi SampleAsync e SampleCompleted.

Le pagine di visualizzazione devono essere denominate Sample.aspx anziché SampleAsync.aspx o SampleCompleted.aspx. (Il nome dell'azione è Sample, non SampleAsync)

Un controller non può contenere un metodo asincrono denominato SampleAsync e un metodo sincrono denominato Sample. In tal caso, viene generata un'eccezione AmbiguousMatchException perché il metodo di azione SampleAsync e il metodo di azione Sample hanno la stessa firma della richiesta.

Per maggiori dettagli clicca qui: http://www.counsellingbyabhi.com/2014/05/asynchronous-controllers-in-aspnet-mvc.html

+0

I controller asincroni sono menzionati in altre risposte (da 2 anni fa) –

+1

Ma il controller asincrono non è menzionato qui che è stato introdotto in MVC 4. è per questo che ho menzionato qui. –