2012-09-21 25 views
63

¿Existe una lista completa que explique todas las nuevas características de MVC4 y todo lo que ha cambiado de MVC3?¿Diferencia entre ASP.NET MVC 3 y 4?

(El release notes no son muy útiles)

+2

mirada a las notas de: http://www.asp.net/whitepapers/mvc4-release-notes#_Toc303253808 –

+14

"Las notas de la versión no son útiles ... "..." Mira las notas de la versión .. "??? –

Respuesta

61

copiado y pegado de MVC4 Release Notes:

HTTP moderno modelo de programación: Directamente acceder y manipular peticiones y respuestas HTTP en sus APIs Web utilizando una nueva, modelo de objetos HTTP fuertemente tipado. El mismo modelo de programación y canalización HTTP está disponible simétricamente en el cliente a través del nuevo tipo HttpClient.

Compatibilidad total con las rutas: ASP.NET Web API admite el conjunto completo de capacidades de enrutamiento de ASP.NET, incluidos los parámetros de ruta y las restricciones. Además, use convenciones simples para asignar acciones a métodos HTTP.

Negociación de contenido: El cliente y el servidor pueden trabajar juntos para determinar el formato correcto para los datos que se devuelven desde una API web. ASP.NET Web API proporciona compatibilidad predeterminada para XML, JSON y formatos codificados con URL de formulario y puede ampliar este soporte agregando sus propios formateadores o incluso reemplazar la estrategia de negociación de contenido predeterminada.

• vinculante del modelo y la validación: enlazadores de modelos proporcionan una manera fácil de extraer datos de varias partes de una petición HTTP y convertir esas partes del mensaje en objetos .NET que pueden ser utilizados por las acciones de la API Web. La validación también se realiza en parámetros de acción basados ​​en anotaciones de datos.

Filtros: ASP.NET Web API admite filtros que incluyen filtros bien conocidos como el atributo [Autorizar]. Puede crear y conectar sus propios filtros para acciones, autorizaciones y manejo de excepciones.

composición de consulta: Utilice el atributo de filtro [consultables] en una acción que devuelve IQueryable para habilitar el soporte para la consulta de su API web a través de las convenciones de consulta OData.

Capacidad de prueba mejorada: En lugar de configurar detalles de HTTP en objetos de contexto estáticos, las acciones de API web funcionan con instancias de HttpRequestMessage y HttpResponseMessage. Cree un proyecto de prueba unitaria junto con su proyecto de API web para comenzar rápidamente a escribir pruebas de unidad para su funcionalidad de API web.

Configuración basada en código: La configuración de la API web ASP.NET se realiza únicamente a través del código, dejando limpios sus archivos de configuración. Use el patrón del localizador de servicios proporcionados para configurar los puntos de extensibilidad.

• Soporte mejorado para Inversión de Control de contenedores (COI): API Web ASP.NET proporciona un gran apoyo para los contenedores COI mediante una abstracción de resolución mejorada dependencia

• Auto-anfitrión: Web APIs pueden ser alojado en su propio proceso además de IIS mientras aún se usa toda la potencia de las rutas y otras características de la API web.

• Crear ayuda personalizada y páginas de prueba: ahora se puede construir fácilmente ayuda personalizada y páginas de prueba para sus APIs web mediante el uso del nuevo servicio IApiExplorer para obtener una descripción completa de tiempo de ejecución de sus APIs web.

Monitoreo y diagnóstico: API Web ASP.NET proporciona ahora un peso ligero rastreo de infraestructura que hace que sea fácil de integrar con soluciones de registro existentes, tales como System.Diagnostics, ETW y marcos de registro de terceras partes. Puede habilitar el rastreo al proporcionar una implementación de ITraceWriter y agregarla a la configuración de su API web.

Generación de enlaces: utilice el UrlHelper de la API web de ASP.NET para generar enlaces a recursos relacionados en la misma aplicación.

Plantilla de proyecto de API web: Seleccione el nuevo proyecto de API web del asistente Nuevo proyecto MVC 4 para comenzar a trabajar rápidamente con ASP.NET Web API.

Andamios: use el cuadro de diálogo Agregar controlador para andamiar rápidamente un controlador API web basado en un tipo de modelo basado en Entity Framework.

+6

Pero eso es casi todo acerca de la API web ... ¿hay algo nuevo que aprender si no estoy planeando usar la API web? –

+0

mvc3 y mvc4 son ambos frameworks de desarrollo web. ¿Quiso decir .Net 4.5? –

+2

@JSKNS Web API es un marco construido sobre ASP.NET MVC para construir API RESTful.Lo que quiere decir es que la mayoría de las cosas en las notas de la versión son específicas de la API web, en lugar de ser generales para todo ASP.NET MVC. –

42

copiar y pegar de Whats new in MVC4 - MVC3 Vs MVC4

Qué hay de nuevo en MVC4 - MVC3 Vs MVC4

Mejoras a Default plantillas de proyecto

La plantilla que se utiliza para crear un nuevo ASP. Los proyectos NET MVC 4 se han actualizado para crear un sitio web más moderno

plantilla de proyecto móvil

Si vas a empezar un nuevo proyecto y desea crear un sitio específicamente para navegadores móviles y tabletas, puede utilizar la nueva plantilla de proyecto de aplicaciones móviles. Esto se basa en jQuery Mobile, una biblioteca de código abierto para la construcción de la interfaz de usuario táctil optimizada

los modos de visualización

El nuevo modos de exhibición característica permite una aplicación seleccionar vistas en función del navegador que está haciendo la solicitud. Por ejemplo, si un navegador de escritorio solicita la página de inicio, la aplicación puede usar la plantilla Views\Home\Index.cshtml. Si un navegador móvil solicita la página de inicio, la aplicación puede devolver la plantilla Views\Home\Index.mobile.cshtml.

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

jQuery Mobile, el selector de visualización, y el navegador Anulación de

jQuery Mobile es una biblioteca de código abierto para la creación táctil optimizada interfaz de usuario web. Si desea usar jQuery Mobile con una aplicación ASP.NET MVC 4, puede descargar e instalar un paquete NuGet que lo ayuda a comenzar. Para instalarlo desde Visual Studio Package Manager Console, escriba el siguiente comando: Install-Package jQuery.Mobile.MVC Esto instala jQuery Mobile y algunos archivos auxiliares, incluidos los siguientes: Views/Shared/Layout.Mobile.cshtml, que es un diseño basado en jQuery Mobile. Un componente view-switcher, que consiste en la vista parcial Views/Shared/ViewSwitcher.cshtml y el controlador ViewSwitcherController.cs. Después de instalar el paquete, ejecute su aplicación usando un navegador móvil (o equivalente, como el complemento del complemento de agente de usuario de Firefox). Verá que sus páginas se ven bastante diferentes, porque jQuery Mobile maneja el diseño y el estilo. Para aprovechar esto, puede hacer lo siguiente Si los visitantes hacen clic en el enlace, cambian a la versión de escritorio de la misma página. Debido a que su diseño de escritorio no incluirá un selector de vista de forma predeterminada, los visitantes no podrán acceder al modo móvil. Para permitir esto, añadir la siguiente referencia a _ViewSwitcher a su diseño de escritorio, justo en el interior del elemento:

@Html.Partial("_ViewSwitcher") 

... navegador principal es una característica fundamental de ASP.NET MVC 4 y está disponible incluso si no instale el paquete jQuery.Mobile.MVC. Sin embargo, afecta solo a la vista, el diseño y la selección de vista parcial; no afecta a ninguna otra característica de ASP.NET que dependa del objeto Request.Browser.

Recetas para la generación de código en Visual Studio

La nueva característica permite Recetas Visual Studio para generar código específica para soluciones basadas en paquetes que puede instalar utilizando NuGet. El marco Recipes hace que sea más fácil para los desarrolladores escribir complementos de generación de código, que también puede usar para reemplazar los generadores de código incorporados para Agregar área, Agregar controlador y Agregar vista. Debido a que las recetas se implementan como paquetes NuGet, pueden verificarse fácilmente en el control de origen y compartirse con todos los desarrolladores en el proyecto automáticamente. También están disponibles por solución.

Soporte de tareas para los controladores asincrónicos

Ahora puede escribir métodos de acción asíncronos como métodos individuales que devuelven un objeto de tipo de tarea o tareas.

Por ejemplo, si está utilizando Visual C# 5 (o el uso de la CTP asíncrono), puede crear un método de acción asincrónica que se parece a lo siguiente:

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

En el método de la acción anterior, el las llamadas a newsService.GetHeadlinesAsync y sportsService.GetScoresAsync se llaman de forma asincrónica y no bloquean un hilo del grupo de subprocesos.

Métodos de acción asincrónica que devuelven instancias de tareas también pueden admitir tiempos de espera. Para que su método de acción sea cancelable, agregue un parámetro del tipo CancellationToken a la firma del método de acción. El siguiente ejemplo muestra un método de acción asíncrono que tiene un tiempo de espera de 2500 milisegundos y que muestra una vista de TimedOut al cliente si se produce un tiempo de espera.

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

Espero que esto ayude.Gracias

1

MVC 3

  1. Integrado Andamio extensible sistema a través de NuGet
  2. HTML 5 habilitado plantillas de proyecto
  3. expresivo Vistas incluyendo la nueva maquinilla de afeitar Ver motor
  4. Ganchos potentes con Dependency Injection y Global Action Filters
  5. apoyo
  6. Rich JavaScript discreta con JavaScript, jQuery Validación, y JSON vinculante

MVC 4

  1. API Web ASP.NET
  2. renovado y modernizado proyecto predeterminado plantillas
  3. Nuevo móvil Plantilla de proyecto
  4. Muchas características nuevas para admitir aplicaciones móviles
  5. Soporte mejorado para los métodos asíncronos

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

0

Una de las características importante introducida en MVC 4.0 era de controladores asincrónicos, que permite escribir los métodos de acción asíncronos. El controlador asíncrono permite realizar una operación sin hacer que el hilo de trabajo esté inactivo.

Cuando se invoca una acción asíncrona, ocurre lo siguiente:

El servidor Web consigue un hilo desde el grupo de subprocesos (el subproceso de trabajo) y la programa para manejar una petición entrante. Este subproceso de trabajo inicia una operación asincrónica. El subproceso de trabajo se devuelve al grupo de subprocesos para atender otra solicitud web. Cuando se completa la operación asincrónica, notifica a ASP.NET. El servidor web obtiene un subproceso de trabajo del grupo de subprocesos (que puede ser un subproceso diferente del subproceso que inició la operación asincrónica) para procesar el resto de la solicitud, incluida la representación de la respuesta.

la conversión de los métodos de acción síncronos a métodos de acción asíncronos

siguiente es el ejemplo de método de acción síncrona y la su versión equivalente asíncrono.

controlador síncrono:

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

variante asíncrona de operación anterior:

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

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

Pasos:

  • controladores síncronos son las clases derivadas de la clase del controlador Para implementar un AsyncController en lugar de derivar el controlador de Controller, deriva de la clase AsyncController. Los controladores que se derivan de AsyncController habilitan ASP.NET a solicitudes asincrónicas de proceso, y aún pueden dar servicio a los métodos de acción sincrónicos .

  • En correspondencia con el método de acción síncrona en el controlador síncrono es necesario crear dos métodos para la acción en método controller.First asincrónico que inicia el proceso asíncrono debe tener un nombre que consiste en la acción y el sufijo "Async". El otro método que se invoca cuando finaliza el proceso asincrónico (el método de devolución de llamada) debe tener un nombre que conste de de la acción y el sufijo "Completado".

    En el ejemplo de ejemplo anterior, la acción del índice se ha convertido en dos métodos en el controlador asíncrono: IndexAsync y IndexCompleted.

    El método IndexAsync devuelve vacío mientras que el método IndexCompleted devuelve una instancia de ActionResult. Aunque la acción consta de dos métodos , se accede utilizando la misma URL que para un método de acción sincrónico (por ejemplo, Controlador/Índice).

en cuenta lo siguiente acerca de los métodos de acción asíncronos:

Si el nombre de la acción es la Muestra, el marco buscará métodos SampleAsync y SampleCompleted.

Las páginas de vista deben llamarse Sample.aspx en lugar de SampleAsync.aspx o SampleCompleted.aspx. (El nombre de la acción es Muestra, no SampleAsync)

Un controlador no puede contener un método asincrónico denominado SampleAsync y un método síncrono llamado Sample. Si lo hace, se lanza una excepción AmbiguousMatchException porque el método de acción SampleAsync y el método de acción Sample tienen la misma firma de solicitud.

Para más detalles haga clic aquí: http://www.counsellingbyabhi.com/2014/05/asynchronous-controllers-in-aspnet-mvc.html

+0

Los controladores asincrónicos se mencionan en otras respuestas (desde hace 2 años) –

+1

Pero el controlador asíncrono no se menciona aquí y se presenta en MVC 4. Es por eso que mencioné aquí. –

Cuestiones relacionadas