Разница между ASP.NET MVC 3 и 4?

Есть ли исчерпывающий список, который объясняет все новые функции MVC4 и что все изменилось с MVC3?

(примечания к выпуску не очень полезны)

Ответ 1

Скопировано и вставлено из Замечания о выпуске MVC4:

Современная модель программирования HTTP. Непосредственный доступ и обработка HTTP-запросов и ответов в ваших веб-интерфейсах API с использованием новой, строго типизированной объектной модели HTTP. Эта же модель программирования и HTTP-конвейер симметрично доступны на клиенте с помощью нового типа HttpClient.

Полная поддержка маршрутов: ASP.NET Web API поддерживает полный набор маршрутных возможностей маршрутизации ASP.NET, включая параметры маршрута и ограничения. Кроме того, используйте простые соглашения для сопоставления действий с методами HTTP.

Консолидация контента. Клиент и сервер могут работать вместе, чтобы определить правильный формат для данных, возвращаемых из веб-API. ASP.NET Web API предоставляет стандартную поддержку форматов XML, JSON и Form URL-кодированных форматов, и вы можете расширить эту поддержку, добавив свои собственные форматирующие элементы или даже заменив стратегию согласования контента по умолчанию.

привязка и валидация модели. Взаимодействующие модели обеспечивают простой способ извлечения данных из различных частей HTTP-запроса и преобразования этих частей сообщений в объекты .NET, которые могут использоваться действиями веб-API, Проверка выполняется также с параметрами действия на основе аннотаций данных.

Фильтры. ASP.NET Web API поддерживает фильтры, включая известные фильтры, такие как атрибут [Авторизовать]. Вы можете создавать и фильтровать собственные фильтры для действий, авторизации и обработки исключений.

Состав запроса. Используйте атрибут фильтра [Queryable] для действия, которое возвращает IQueryable, чтобы включить поддержку запроса веб-API через соглашения о запросе OData.

Улучшенная тестируемость. Вместо того, чтобы устанавливать HTTP-данные в статических объектах контекста, действия веб-API работают с экземплярами HttpRequestMessage и HttpResponseMessage. Создайте проект unit test вместе со своим проектом веб-API, чтобы начать быстро писать модульные тесты для ваших функций веб-API.

Конфигурация на основе кода. Конфигурация веб-API ASP.NET выполняется исключительно с помощью кода, оставляя ваши файлы конфигурации чистыми. Для настройки точек расширяемости используйте шаблон предоставления службы сервиса.

Улучшена поддержка контейнеров с инверсией управления (IoC): ASP.NET Web API обеспечивает большую поддержку контейнеров IoC с помощью улучшенной абстракции распознавателя зависимостей

Self-host. Веб-интерфейсы могут быть размещены в вашем собственном процессе в дополнение к IIS, при этом используя все возможности маршрутов и других функций веб-API.

Создать пользовательскую справку и тестовые страницы. Теперь вы можете легко создавать пользовательские справки и тестовые страницы для ваших веб-API, используя новую службу IApiExplorer, чтобы получить полное описание своих веб-интерфейсов./p >

Мониторинг и диагностика. Веб-интерфейс ASP.NET теперь обеспечивает легкую инфраструктуру трассировки, которая позволяет легко интегрироваться с существующими решениями для ведения журналов, такими как System.Diagnostics, ETW и сторонние структуры ведения журнала. Вы можете включить трассировку, предоставив реализацию ITraceWriter и добавив ее в конфигурацию веб-API.

Генерация ссылок. Используйте ASP.NET Web API API UrlHelper для создания ссылок на связанные ресурсы в одном приложении.

Шаблон проекта веб-API. Выберите новый проект веб-API из мастера проекта New MVC 4, чтобы быстро запустить и запустить с помощью ASP.NET Web API.

Леса. Используйте диалоговое окно Add Controller для быстрого создания веб-контроллера API на основе типа модели на основе Entity Framework.

Ответ 2

Скопируйте и вставьте из Что нового в MVC4 - MVC3 Vs MVC4

Что нового в MVC4 - MVC3 Vs MVC4

Улучшения шаблонов проектов по умолчанию

Шаблон, который используется для создания новых проектов ASP.NET MVC 4, был обновлен для создания более современного веб-сайта

Шаблон мобильного проекта

Если вы начинаете новый проект и хотите создать сайт специально для мобильных и планшетных браузеров, вы можете использовать новый шаблон проекта Mobile Application. Это основано на jQuery Mobile, библиотеке с открытым исходным кодом для создания сенсорного оптимизированного пользовательского интерфейса

Режимы отображения

Новая функция "Режимы отображения" позволяет приложению выбирать представления в зависимости от браузера, делающего запрос. Например, если браузер рабочего стола запрашивает главную страницу, приложение может использовать шаблон Views\Home\Index.cshtml. Если мобильный браузер запрашивает главную страницу, приложение может вернуть шаблон Views\Home\Index.mobile.cshtml.

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

jQuery Mobile, коммутатор просмотра и обозреватель браузера

jQuery Mobile - это библиотека с открытым исходным кодом для создания веб-интерфейса с оптимизированным сенсорным интерфейсом. Если вы хотите использовать jQuery Mobile с приложением ASP.NET MVC 4, вы можете загрузить и установить пакет NuGet, который поможет вам начать работу. Чтобы установить его из консоли диспетчера пакетов Visual Studio, введите следующую команду: Install-Package jQuery.Mobile.MVC Это устанавливает jQuery Mobile и некоторые вспомогательные файлы, в том числе: Views/Shared/Layout.Mobile.cshtml, который представляет собой макет jQuery Mobile. Компонент view-switcher, который состоит из частичного представления Views/Shared/ViewSwitcher.cshtml и контроллера ViewSwitcherController.cs. После установки пакета запустите приложение с помощью мобильного браузера (или его эквивалента, например, дополнения для переключателя User Agent User Manager). Вы увидите, что ваши страницы выглядят совсем по-другому, потому что jQuery Mobile обрабатывает макет и стиль. Чтобы воспользоваться этим, вы можете сделать следующее Если посетители нажимают на ссылку, theyre переключается на настольную версию той же страницы. Поскольку ваш макет рабочего стола по умолчанию не будет включать переключатель просмотра, у посетителей не будет способа перейти в режим мобильной связи. Чтобы включить это, добавьте следующую ссылку: _ViewSwitcher для вашего рабочего стола, только внутри элемента:

@Html.Partial("_ViewSwitcher")

... Переопределение браузера является основной особенностью ASP.NET MVC 4 и доступно, даже если вы не устанавливаете пакет jQuery.Mobile.MVC. Однако он влияет только на выбор вида, макета и частичного просмотра - он не влияет на другую функцию ASP.NET, которая зависит от объекта Request.Browser.

Рецепты для генерации кода в Visual Studio

Новая функция Recipes позволяет Visual Studio генерировать определенный для решения код на основе пакетов, которые можно установить с помощью NuGet. Рамка Recipes позволяет разработчикам писать плагины для генерации кода, которые вы также можете использовать для замены встроенных генераторов кода для Add Area, Add Controller и Add View. Поскольку рецепты развертываются как пакеты NuGet, их можно легко проверить в исходном элементе управления и совместно использовать для всех разработчиков в проекте автоматически. Они также доступны для каждого решения.

Поддержка задач для асинхронных контроллеров

Теперь вы можете написать асинхронные методы действий как единые методы, которые возвращают объект типа Task или Task.

Например, если вы используете Visual С# 5 (или используя Async CTP), вы можете создать асинхронный метод действий, который выглядит следующим образом:

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

В предыдущем методе действия вызовы newsService.GetHeadlinesAsync и sportsService.GetScoresAsync вызываются асинхронно и не блокируют поток из пула потоков.

Асинхронные методы действий, которые возвращают экземпляры Task, также могут поддерживать тайм-ауты. Чтобы ваш метод действия был отменен, добавьте параметр типа CancellationToken к сигнатуре метода действия. В следующем примере показан метод асинхронного действия, который имеет время ожидания 2500 миллисекунд и отображает представление TimedOut клиенту, если происходит таймаут.

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

Надеюсь, это поможет. Благодаря

Ответ 4

MVC 3

  • Интегрированная система лесов, расширяемая через NuGet
  • Шаблоны проектов с поддержкой HTML 5
  • Выразительные представления, включая новый вид Razor Двигатель
  • Мощные крючки с впрыском зависимостей и Глобальные фильтры действий
  • Богатая поддержка JavaScript с ненавязчивым JavaScript, проверка JQuery и привязка JSON

MVC 4

  • Веб-API ASP.NET
  • Обновленный и модернизированный проект по умолчанию Шаблоны
  • Новый шаблон мобильного проекта
  • Многие новые функции для поддержки мобильных приложений
  • Расширенная поддержка асинхронных методов

Ссылка: http://dotnet-developers-cafe.blogspot.in/2013/09/difference-between-aspnet-mvc-3-and-mvc.html

Ответ 6

Одна из важных функций, представленных в MVC 4.0, - это асинхронные контроллеры, которые позволяют писать асинхронные методы действий. Асинхронный контроллер позволяет выполнить операцию без простоя рабочего потока.

При вызове асинхронного действия выполняются следующие шаги:

Веб-сервер получает поток из пула потоков (рабочий поток) и планирует его обработать входящий запрос. Этот рабочий поток инициирует асинхронную операцию. Рабочий поток возвращается в пул потоков для обслуживания другого веб-запроса. Когда асинхронная операция завершена, она уведомляет ASP.NET. Веб-сервер получает рабочий поток из пула потоков (который может быть другим потоком из потока, который запускал асинхронную операцию) для обработки оставшейся части запроса, включая отрисовку ответа.

Преобразование методов синхронного действия в методы асинхронного действия

Ниже приведен пример метода синхронного действия и его асинхронной эквивалентной версии.

Синхронный контроллер:

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

Асинхронный вариант вышеописанной операции:

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

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

Шаги:

  • Синхронные контроллеры - это классы, производные от контроллера класса для реализации AsyncController вместо получения контроллер от контроллера, вывести его из класса AsyncController. Контроллеры, которые производятся от AsyncController, позволяют ASP.NET обрабатывать асинхронные запросы, и они все еще могут обслуживать синхронные методы действий.

  • В соответствии с методом синхронного действия в синхронном режиме контроллеру необходимо создать два метода для действия в асинхронный контроллер. Первый метод, который инициирует асинхронный процесс должен иметь имя, состоящее из действия и суффикса "Асинхронный". Другой метод, который вызывается, когда асинхронный завершение процесса (метод обратного вызова) должно иметь имя, которое состоит из действия и суффикса "Завершено".

    В приведенном выше примере примера действие индекса было преобразовано в два метода в асинхронном контроллере: IndexAsync и IndexCompleted.

    Метод IndexAsync возвращает void, в то время как метод IndexCompleted возвращает экземпляр ActionResult. Хотя действие состоит из двух методов, к нему обращаются с использованием того же URL-адреса, что и для синхронного (например, Controller/Index).

Обратите внимание на следующие методы асинхронного действия:

Если именем действия является Sample, Framework будет искать методы SampleAsync и SampleCompleted.

Страницы просмотра должны быть названы Sample.aspx, а не SampleAsync.aspx или SampleCompleted.aspx. (Имя действия - Sample, а не SampleAsync)

Контроллер не может содержать асинхронный метод с именем SampleAsync и синхронный метод с именем Sample. Если это так, выбрано исключение AmbiguousMatchException, потому что метод действия SampleAsync и метод действия Sample имеют одну и ту же подпись запроса.

Для получения дополнительной информации нажмите здесь: http://www.counsellingbyabhi.com/2014/05/asynchronous-controllers-in-aspnet-mvc.html