ASP.NET MVC 4 Roadmap

Опубликован список задач, которые намечены к реализации в четвертой версии ASP.NET MVC.

По этому поводу в блоге Хила Хаака (Phil Haack) появилась небольшая заметка. В ней особо подчеркивается, что заявленные цели не являются окончательными. Сообщество ASP.NET MVC разработчиков может повлиять на них, публикуя свои замечания и предложения на официальном форуме. Кроме того, в документе не отмечены некоторые улучшения движка представлений Razor и другие возможности, которые будут доступны в следующей версии ASP.NET Web Pages.

Основная цель разработчиков – сделать ASP.NET MVC лучшей платформой для создания современных веб-приложений. Для её достижения составлен список задач. Вот некоторые его пункты.

Рецепты (Recipe)

По сути, это развитие идеи заготовок (scaffolding). Основное отличие заключается в большей ориентированности на решение конкретных задач. При этом рецепт предоставляет полноценное решение заданной проблемы: авторизации OAuth, создания таблицы с поддержкой Ajax и т.д. В результате, разработчик получит исходный код и блоки пользовательского интерфейса. Для их генерации рецепт может запрашивать необходимые параметры у разработчика.

Поддержка мобильных устройств

Приложения, использующие шаблон по умолчанию, теперь будут лучше выглядеть на мобильных устройствах. Это достигнуто доработкой разметки страниц и CSS.

Сравнение ASP.NET MVC 3 и 4

Также будет представлен специальный шаблон для приложений, ориентированных в первую очередь на смартфоны, небольшие планшеты и т.д.

Шаблон для мобильных веб-приложений в ASP.NET MVC 4

Преставления для мобильных устройствКроме того, появятся возможность создания отдельных Представлений для мобильных устройств. Они будут отмечены суффиксом 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. Кроме того, стоит еще раз напомнить, что свои замечания и предложения можно оставить на официальном форуме.

Комментарии (11) -

Артур 15.07.2011 18:30:36

Я бы хотел какой-нибудь транслятор с C# на js, ну или хотя бы просто на нем описывать работу с DOM и AJAX, ну или хотя бы коннектор к jQuery - никак не могу заняться изучением этого js. Как это на английском сказать?

Это не относится напрямую к ASP.NET MVC. Да и транслятор C# -> JS дело не благодарное. Так что совет один - учить JS (к слову, мне он тоже не очень нравится).

Артур 18.07.2011 12:09:15

Лузерский ответ какой-то.

Ага, языки программирования учат только лузеры Smile Давайте не будем.

Даже и не вериться что осуществится моддержка миграций для code first. Уже больше полугода она "вот вот будет"

Andrey Taritsyn 26.07.2011 16:46:32

Транслятор кода C# на JavaScript уже существует – это проект Script# (http://projects.nikhilk.net/ScriptSharp). Script# разработан одним из создателей ASP.Net AJAX – Нихилом Котари (Nikhil Kothari). В качестве примера использования данного транслятора можно привести скрипт MicrosoftMvcValidation.js, который входит в стандартную поставку ASP.Net MVC.

Интересно. А есть опыт использования в проектах?

Andrey Taritsyn 26.07.2011 17:37:09

Честно говоря, сам его никогда не использовал, т.к. очень хорошо владею JavaScript и предпочитаю писать JS-код руками. Я узнал о Script# случайно, когда скачивал дистрибутив Web Development Helper.  
Большинство российских разработчиков не знают о существовании Script# и это вполне объяснимо, т.к. отечественные MVP и евангелисты практически не писали о нем. Из материалов на русском вспоминается только блог Александра Шера (http://gotdotnet.ru/blogs/Aib/tags/?script%23).

Александр 25.12.2011 18:42:03

>Артур

Учите F# и юзайте WebSharper. http://www.websharper.com/
Добавил к методу атрибут [<JavaScript>] и это уже скрипт.

[<JavaScript>]
    let Main () =
        let welcome = P [Text "Welcome"]
        Div [
            welcome
            Button [Text "Click Me!"]
            |>! OnClick (fun e args ->
                welcome.Text <- "Hello, world!")
        ]

15.07.2011 17:30:36 #
Я бы хотел какой-нибудь транслятор с C# на js,

Poprobuy SharpKit http://sharpkit.net/

kstate napisal moi znakomi )

kstate polzuem ego shas v nashih projectah )
zabil zapyatuu - ne proshel compilation Laughing
voobshem veselo ) no opyat zhe - vso zaviset ot konkretnoy zadachi -
esli pisat prostoi client to luche pisat javascript kak on est.
mi naprimer dlya dvizhkov etu techniku polzuem - estestvenno ves java script pishem na C# v .cs file )

Добавить комментарий