company_banner

Обновления ASP.NET Core в .NET 6 Preview 1

    Новая версия .NET, 6 Preview 1, уже доступна и готова к вашей оценке. Это первая предварительная версия .NET 6, следующего крупного обновления платформы .NET. Ожидается, что .NET 6 поступит в полноценный доступ в ноябре этого года и будет выпуском с долгосрочной поддержкой (LTS).

    Если вы работаете с Windows и используете Visual Studio, мы рекомендуем установить последнюю предварительную версию Visual Studio 2019 16.9. Если вы используете macOS, мы рекомендуем установить последнюю предварительную версию Visual Studio 2019 для Mac 8.9.

    Основная работа, запланированная с ASP.NET Core в .NET 6

    .NET 6 использует открытый процесс планирования, поэтому вы можете изучить все основные темы, запланированные для этого релиза, на Blazor-веб-сайте themesof.net. В дополнение к этим верхнеуровневым темам мы собираемся также предоставить множество улучшений, ориентированных на пользователей. Вы можете найти список основных задач, запланированных для ASP.NET Core в .NET 6, в нашем выпуске дорожной карты. Вот некоторые из основных функций ASP.NET Core, запланированных для выпуска .NET 6:

    • Горячая перезагрузка: быстро обновляйте пользовательский интерфейс и код для работающих приложений без потери состояния приложения для более быстрой и продуктивной разработки.

    • Микро API: Упростите создание конечных точек API с гораздо меньшим количеством кода и церемоний.

    • Публикация в виде одного файла: создавайте небольшие автономные высокопроизводительные приложения и службы.

    • Компиляция WebAssembly с опережением времени (AoT): компилируйте код .NET в приложениях Blazor WebAssembly непосредственно в WebAssembly при публикации для значительного повышения производительности во время выполнения.

    • Обновленная поддержка одностраничных приложений (SPA). Обновите интеграцию SPA в ASP.NET Core для бесперебойной работы с последними современными интерфейсными платформами JavaScript.

    • Гибридные настольные приложения Blazor: объедините лучшее из пользовательского интерфейса многоплатформенных приложений Blazor и .NET для создания кроссплатформенных гибридных настольных приложений.

    • HTTP/3: добавьте поддержку HTTP/3 и QUIC на поддерживаемые серверы ASP.NET Core.

    Мы приветствуем отзывы и участие в процессе планирования и создания на GitHub.

    Что нового в ASP.NET Core в .NET 6 Preview 1?

    • Поддержка IAsyncDisposable в MVC

    • DynamicComponent

    • InputElementReference разделен на релевантные компоненты

    • dotnet watch теперь является dotnet watch run по дефолту

    • Nullable reference type annotations

    Начало работы

    Чтобы начать работу с ASP.NET Core в .NET 6 Preview 1, установите .NET 6 SDK.

    Обновление существующего проекта

    Чтобы обновить существующее приложение ASP.NET Core с .NET 5 до .NET 6 Preview 1:

    • Обновите целевую платформу для вашего приложения, до net6.0.

    • Обновите все ссылки на пакеты Microsoft.AspNetCore.* до 6.0.0-preview.1.*.

    • Обновите все ссылки на пакеты Microsoft.Extensions.* до 6.0.0-preview.1.*.

    См. полный список критических изменений в ASP.NET Core для .NET 6 здесь.

    DynamicComponent

    DynamicComponent - это новый встроенный компонент Blazor, который можно использовать для динамической визуализации компонента, указанного по типу.

    <DynamicComponent Type="@someType" />

    Параметры могут быть переданы визуализируемому компоненту с помощью dictionary:

    <DynamicComponent Type="@someType" Parameters="@myDictionaryOfParameters" />
    
    @code {
        Type someType = ...
        IDictionary<string, object> myDictionaryOfParameters = ...
    }

    InputElementReference разделен на релевантные компоненты

    Соответствующие встроенные компоненты Blazor ввода теперь предоставляют удобную ссылку ElementReference для базового ввода, что упрощает распространенные сценарии, такие как установка фокуса пользовательского интерфейса на вводе. Затронутые компоненты: InputCheckbox, InputDate, InputFile, InputNumber, InputSelect, InputText и InputTextArea.

    dotnet watch теперь является dotnet watch run по дефолту

    Запуск dotnet watch теперь будет запускать dotnet watch run по умолчанию, экономя драгоценное время ввода.

    Nullable Reference Type Annotations

    Мы применяем аннотации обнуляемости к частям ASP.NET Core. Значительное количество новых API было аннотировано в .NET 6 Preview 1.

    Используя новую функцию C# 8, ASP.NET Core может обеспечить дополнительную безопасность во время компиляции при обработке ссылочных типов, например защиту от исключений нулевых ссылок. Проекты, которые выбрали использование аннотаций, допускающих значение NULL, могут видеть новые предупреждения во время сборки от API-интерфейсов ASP.NET Core.

    Чтобы включить ссылочные типы, допускающие значение NULL, вы можете добавить в файл проекта следующее свойство:

    <PropertyGroup>
        <Nullable>enable</Nullable>
    </PropertyGroup>

    Подробности читайте здесь.

    Microsoft
    Microsoft — мировой лидер в области ПО и ИТ-услуг

    Комментарии 20

      0

      В треде пол микро API, люди пишут, что фильтры и DI — это слишком сложно и надо позволить писать без всего этого.
      Как-то это все странно.

        +3
        После кидалова с Silverlight, вряд ли кто-то захочет использовать Blazor вообще.
          +1
          Blazor не требует от конечного пользователя каких либо дополнительных манипуляций (плагина там или еще чего), является открытым и использует общепринятные веб-технологии. Можно сказать, это такой себе ангуляр, только под веб-ассембли. Хотя осадочек всё же есть, Вы правы.
          Мое первое впечателние весьма не плохое, лучше, чем от ангулярки. Уже начали появляться вакансии на рынке с этой технологией. Может займет какую либо нишу среди фуллстеков.
            0
            Мне лично в Blazor не нравится четкое разделение на или все на сервере, или все на клиенте. Вариант все на клиенте не рассматривается, ибо килограммы кода тащить, потом ждать компиляцию, бета-тестировать WebAssembly.

            Т.е. остается только сервер. Но даже тот сайт, который они сделали (themesof.net) заметно лагает на открытии узлов дерева. Каждый клик мыши идет на сервер по веб-сокетам и получает UI дельту.

            Я понимаю, что в некоторых случаях это даже неплохо, но для современного веба, такая заторможенная реакция UI — не айс.

            Плюс, Microsoft такой Microsoft. Когда написание компонентов на Blazor можно было сделать реально легковесным, типо
            @component MyComponent
            @{ 
            
            public string Name, LastName; 
            }
            <div>
            {Name}<br>{LastName}
            </div>
            

            Они пошли по дороге — опишите все поля как свойства, навешайте на них специальных атрибутов, ведь так не понятно, что публичные свойства они на то и публичные, что они отовсюду видны, а вот мы в Blazor Team не понимаем.

            Короче, как обычно. Можно было сделать зашибенный React для C#, а получился восьминогий семихрен…
              0
              Т.е. остается только сервер.

              Без рест апи все равно не обойтись, а интерфейс уже строить на блейзоре, т.е. все таки юзать «все на клиенте»? Мне лично очень нравится вся «мошь» шарпа.

              навешайте на них специальных атрибутов, ведь так не понятно

              мне кажется, что это никто не понимает
              import { Input} from '@angular/core';
              ...
              @Input() publicProperty : string;
              

              или
              export default {
                name: "Item",
                props: {
                  city: {}
                }
              }
              



              Идеального фреймфорка для фронта еще не придумали ):
                –2
                Придумали. Называется React.

                export const MyComponent = ({name, lastName}) =>
                  <div>{name}<br>{lastName}</div>
                
                  0
                  Свойства передаются от родительских компонентов к дочерним. Компоненты получают свойства как множество неизменяемых (англ. immutable) значений, поэтому компонент не может напрямую изменять свойства, но может вызывать изменения через callback-функции. Такой механизм называют «свойства вниз, события наверх».

                  Это сложно назвать идеальным фреймфорком для фронта (как по мне)
                    0

                    React и правда тяжело назвать идеальным фреймворком, но вот процитированная вами часть — это единственный адекватный способ работы со свойствами ( с поправкой на то, что неизменяемость значений понимается как мелкая, а не глубокая).

                      –1
                      В это и есть его идеальность. Что изменять все можно только единственно правильным способом — через мутацию корневого элемента данных.

                      Правильная структура этого элемента — залог здорового ререндеринга.
                        +1
                        Они пошли по дороге — опишите все поля как свойства, навешайте на них специальных атрибутов, ведь так не понятно, что публичные свойства они на то и публичные, что они отовсюду видны, а вот мы в Blazor Team не понимаем.

                        У каждого своя идеальность, но по мне проще прилепить аттрибут на свойство, чем городить по-сути ридонли переменные в контрукторах и колбэки. Имхо, MVVM, при правильной реализации, лучшее, что есть для UI.
                          –2

                          MVVM — это лучшее, что придумал Microsoft, но не лучшее из того, что вообще придумали.


                          За 10 лет MVVM, я склоняюсь к мнению, что callback-и и простые immutable объекты вкупе с Flux принципами — самое простое и эффективное решение. Минимум концепций, максимум возможностей для суперэффективного рендеринга и высокой производительности.


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


                          Microsoft опять изобрел велосипед, причем не самый лучший. А были все шансы

                            –1
                            Судя по downvote-ам всех моих сообщений, в комментариях этой статьи пасутся исключительно пользователи продуктов MS, коим я тоже долгое время был и еще буду.

                            Не забывайте одного, мир на MS не заканчивается. Будьте открыты к новому, думайте своей головой, не бойтесь пробовать.

                            В MS работают обыкновенные люди, не лучше и не хуже вас. Когда они делают что-то хорошо, это заслуживает похвалы. Когда они косячат, нужно сразу им говорить, иначе поезд уедет совсем не туда, и всем будет только хуже.
                              0
                              Не забывайте одного, мир на MS не заканчивается. Будьте открыты к новому, думайте своей головой, не бойтесь пробовать.

                              Можете применить Ваш же совет и открыться для Blazor. Успешно используем Blazor уже сейчас и экономим время на разработке SPA приложений. Скорость получается выше чем на React, код легче читать и понимать для новичков. Это не панацея и не всегда он будет подходить, но в целом продукт отличный, а если осуществлят планы, которые освещали, то будет очень-очень круто. Нужен конкурент Javascript'у.
                                –1
                                Я уже открывался. Не убедил он меня. Они пошли по пути наименьших затрат, надстроились над Razor, хотя тот сам по себе ужастик.

                                Мне вот что интересно. Сколько у вас маркапа в коде компонентов? А сколько кода в маркапе? Может быть удобнее расширить C# и добавить в него маркап конструкции, как в VB когда-то? Сделать что-то типо методов расширений, чтобы маркап превратился в их вызовы? Что бы можно было подключить другой namespace и вуаля — другая реализация DOM/XML/HTML?
                                  0
                                  Мы у себя приняли разделение компонента на два файла — верстку (razor) и код (отдельный c# файл partial). В самом razor у нас остается только конструкции if, foreach и т.д.

                                  Я лично не в курсе, как было сделано в VB, поэтому не могу ничего по этому поводу сказать.
            0
            Обалдеть, теперь и микромягкое не утруждается над переводом короткой статьи и считает достаточным загнать текст оригинала в промпт
              0
              Меня всё ещё интересует один вопрос. Будет ли Blazor загружаться и работать быстрее, чем к примеру React с его Virtual DOM? Пока что React лидирует.
                –1
                В случае с Реактом, виртуальный дом строится на клиенте и патчится на клиенте, т.е. чисто клиентские дела будут работать быстрее, чем Blazor, который потащит дельту с удаленного сервера по сокетам. Если речь о чистых данных, то в этом случае Реакт тоже выигрывает, т.к. идет передача только самих данных, без UI и сотен DOM-атрибутов, как в случае Blazor, когда по проводу ходят не только данные, но и патчи к UI.

                Кто-то скажет, UI патчи идут в бинарном формате, это быстро, модно, молодежно. Но в случае Реакта вам тоже ведь никто не навязывает JSON по RESTу гонять, можно и по-взрослому — бинарные данные по сокетам. BSON и другие форматы вам в помощь, библиотек уже хватает. Компрессию тоже можно на сервере включить, посмотреть.
                  0
                  Blazor может работать без сервера, чисто на клиенте.
                    0
                    Это серверный вариант работы. Я имел ввиду webassembly версию, когда данные грузятся 1 раз, а дальше всё делается в браузере.

                Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                Самое читаемое