Опубликован список задач, которые намечены к реализации в четвертой версии ASP.NET MVC.
По этому поводу в блоге Хила Хаака (Phil Haack) появилась небольшая заметка. В ней особо подчеркивается, что заявленные цели не являются окончательными. Сообщество ASP.NET MVC разработчиков может повлиять на них, публикуя свои замечания и предложения на официальном форуме. Кроме того, в документе не отмечены некоторые улучшения движка представлений Razor и другие возможности, которые будут доступны в следующей версии ASP.NET Web Pages.
Основная цель разработчиков – сделать ASP.NET MVC лучшей платформой для создания современных веб-приложений. Для её достижения составлен список задач. Вот некоторые его пункты.
Рецепты (Recipe)
По сути, это развитие идеи заготовок (scaffolding). Основное отличие заключается в большей ориентированности на решение конкретных задач. При этом рецепт предоставляет полноценное решение заданной проблемы: авторизации OAuth, создания таблицы с поддержкой Ajax и т.д. В результате, разработчик получит исходный код и блоки пользовательского интерфейса. Для их генерации рецепт может запрашивать необходимые параметры у разработчика.
Поддержка мобильных устройств
Приложения, использующие шаблон по умолчанию, теперь будут лучше выглядеть на мобильных устройствах. Это достигнуто доработкой разметки страниц и CSS.
Также будет представлен специальный шаблон для приложений, ориентированных в первую очередь на смартфоны, небольшие планшеты и т.д.
Кроме того, появятся возможность создания отдельных Представлений для мобильных устройств. Они будут отмечены суффиксом Mobile. Например, в папке View\Home можно создать два Представления Index.cshtml и Index.Modile.cshtml. Тогда при обращении к Действию Index с компьютера будет автоматически использоваться первый вариант. А в случае использования смартфона – второй. Кроме того, будет поддерживается переключение межу ними "на лету".
Поддержка вспомогательных методов, использующих синтаксис Razor
В данный момент возможно размещение вспомогательных методов, использующих синтаксис Razor, в папке App_Code. Для этого достаточно создать там файл с расширением .cshtml or .vbhtml. Но в этом случае в их коде не будет возможности обратиться к контексту ASP.NET MVC (ViewContext) или специфичным помощникам (например, HtmlHelper).
В ASP.NET MVC 4 этот недостаток будет устранён. Кроме того, рассматривается возможность создания библи��тек классов, состоящих из таких методов. Это позволит писать для них модульные тесты.
Поддержка асинхронных операций
В ASP.NET MVC 3 поддержка асинхронных операций требует относительно большого объема кода:
public void IndexAsync(string city) {
AsyncManager.OutstandingOperations.Increment(2);
NewsService newsService = new NewsService();
newsService.GetHeadlinesCompleted += (sender, e) =>
{
AsyncManager.Parameters["headlines"] = e.Value;
AsyncManager.OutstandingOperations.Decrement();
};
newsService.GetHeadlinesAsync();
SportsService sportsService = new SportsService();
sportsService.GetScoresCompleted += (sender, e) =>
{
AsyncManager.Parameters["scores"] = e.Value;
AsyncManager.OutstandingOperations.Decrement();
};
sportsService.GetScoresAsync();
}
public ActionResult IndexCompleted(string[] headlines, string[] scores, string[] forecast) {
return View("Common", new PortalViewModel {
NewsHeadlines = headlines,
SportsScores = scores,
});
}
ASP.NET MVC 4 будет поддерживать возможности, которые были представлены в Visual Studio Async CTP и войдут в C# 5. Тогда предыдущий пример можно будет переписать вот так:
public async Task<ActionResult> Index(string city) {
var newsService = new NewsService();
var sportsService = new SportsService();
return View("Common",
new PortalViewModel {
NewsHeadlines = await newsService.GetHeadlinesAsync(),
SportsScores = await sportsService.GetScoresAsync()
});
}
Объединение CSS и JavaScript файлов
ASP.NET MVC 4 сможет объединять используемые в проекте css и js в один общий файл. При этом будут удаляться комментарии и ненужные пробелы. Это увеличит скорость и уменьшит объём загрузки, что приведет к более быстрому отображению страницы на у клиента.
Поддержка миграции данных для Entity Framework Code First.
В данный момент, модификация классов Модели ведет к изменению схемы базы данных. Как следствие, требуется пересоздание таблиц, что приводит к потери уже сохраненных в них данных. В ASP.NET MVC 4 этого можно будет избежать.
Другие планируемые возможности
- Поддержка:
- WCF Web API.
- HTML 5 в шаблонах и вспомогательных методах (HTML helpers).
- Улучшенная поддержка тестирования кода.
- Более тесное и простое взаимодействие с Ajax.
- Кэширование Представлений Razor и поддержка для Windows Server App Fabric caching provider.
- Новый атрибут AreaAttribute для улучшения безопасности областей.
Ознакомиться со списком задач на английском языке можно тут: ASP.NET MVC 4 Roadmap. Кроме того, стоит еще раз напомнить, что свои замечания и предложения можно оставить на официальном форуме.