Разница между ASP.NET MVC 3 и 4? [закрытый]


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

(The заметки не очень полезно)

6 63

6 ответов:

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

*современная модель программирования HTTP: прямой доступ и управление HTTP-запросами и ответами в веб-API с помощью новой строго типизированной объектной модели HTTP. Одна и та же модель программирования и конвейер HTTP симметрично доступны на клиенте через новый тип HttpClient.

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

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

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

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

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

*улучшение тестируемости: вместо того, чтобы установить подробности HTTP в статическом контексте объекты, действия веб-API работы с экземплярами объектами httprequestmessage и HttpResponseMessage. Создание проекта модульного теста вместе с вашим проектом веб-API, чтобы начать быстро писать модульные тесты для функциональности веб-API.

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

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

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

*создание пользовательских справочных и тестовых страниц: теперь вы можете легко создавать пользовательские справочные и тестовые страницы для своих веб-API с помощью новой службы IApiExplorer, чтобы получить полное описание времени выполнения вашего веб-интерфейса Апис.

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

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

*шаблон проекта Web API: выберите новый проект веб-API форма мастера создания нового проекта MVC 4, Чтобы быстро приступить к работе с веб ASP.NET API-интерфейс.

*лесов: используйте диалоговое окно добавить контроллер, чтобы быстро построить контроллер веб-API на основе типа модели Entity Framework.

копировать и вставлять из что нового в MVC4-MVC3 против MVC4

что нового в MVC4-MVC3 против MVC4

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

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

Шаблон Мобильного Проекта

если вы начинаете новый проект и хотите создать сайт специально для мобильных и планшетных браузеров, вы можете использовать новый шаблон проекта мобильного приложения. Это основано на 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-пакет jQuery.Мобильный.MVC Это устанавливает jQuery Mobile и некоторые вспомогательные файлы, в том числе следующие: Вид / Общий / Макет.Мобильный.cshtml, который является мобильным макетом jQuery. Компонент view-switcher, который состоит из Views/Shared/ViewSwitcher.частичное представление cshtml и ViewSwitcherController.контроллер КС. После установки пакета запустите приложение с помощью мобильного браузера (или его эквивалента, например дополнения Firefox User Agent Switcher). Вот увидишь. ваши страницы выглядят совсем по-другому, потому что jQuery Mobile обрабатывает макет и стиль. Чтобы воспользоваться этим, вы можете сделать следующее Если посетители переходят по ссылке, они переключаются на настольную версию той же страницы. Поскольку макет рабочего стола по умолчанию не будет включать переключатель видов, посетители не смогут перейти в мобильный режим. Для этого добавьте следующую ссылку на _ViewSwitcher к макету рабочего стола, только внутри элемента:

@Html.Partial("_ViewSwitcher")

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

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

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

поддержка асинхронных задач Контроллеры

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

например, если вы используете Visual C# 5 (или используете асинхронный 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 вызываются асинхронно и не блокируют поток от пул потоков.

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

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

надеюсь, что это помогает. Спасибо

MVC 3

  1. интегрированная система лесов расширяемая через NuGet
  2. HTML 5 включены шаблоны проектов
  3. выразительные виды, включая новый вид бритвы Двигатель
  4. мощные крючки с инъекцией зависимостей и Глобальные Фильтры Действий
  5. богатая поддержка JavaScript с ненавязчивым JavaScript, проверкой jQuery и привязкой JSON

MVC 4

  1. ASP.NET паутина API
  2. обновленный и модернизированный проект по умолчанию шаблоны
  3. новый шаблон мобильного проекта
  4. много новых функций для поддержки мобильных приложений
  5. расширенная поддержка асинхронных методов

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

одной из важных особенностей, введенных в 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-адреса, что и для a синхронный метод действия (например, контроллер/индекс).

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

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

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

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

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