.NET Core 3 получает графический интерфейс


Возможно, Microsoft все-таки прислушивается, но все же может послушать посильнее. Сдержанное и почти незамеченное объявление на Build 2018 показывает, что .NET Core 3 будет поддерживать графический интерфейс, но только в Windows.

С тех пор, как Microsoft начала работать с .NET с открытым исходным кодом, в мире .NET все было немного странно. .NET Core с открытым исходным кодом является кроссплатформенным, и это хорошо, но у него нет большей части инфраструктуры, необходимой для написания приложения Windows. В частности, в нем отсутствует какая-либо структура пользовательского интерфейса. Это означает, что, хотя он подходит для создания кроссплатформенных программ и служб командной строки, он не подходит для большинства предыдущих задач программирования .NET.
Несмотря на то, что их поощряли рассматривать .NET Core как будущее .NET, большинство программистов, работающих с Windows, действительно не могли его использовать. Во всяком случае, это просто вызвало страх и замешательство, потому что будущее явно не принадлежало им.
Добавление графического интерфейса в .NET Core предлагалось в течение долгого времени, и теперь кажется, что версия 3 получит эту возможность. Это хорошие новости, но команда Microsoft не может не продвинуть маркетинговый аспект, в частности, на средства управления WinRT и UWP. Это также мешает им четко заявить о том, что происходит. Независимо от того, что в объявлении может быть озаглавлено как важное, действительно важно то, что, похоже, будут поддерживаться как WPF, так и Windows Forms.
Это хорошая новость, потому что WPF по-прежнему претендует на звание самой сложной доступной инфраструктуры пользовательского интерфейса, и мысль о том, что Microsoft более или менее отказывается от нее в пользу недостаточно развитой инфраструктуры UWP, удручает. Windows Forms, с другой стороны, никогда не выиграет призов, но он прост и существует с момента появления Windows.
Как указывается в объявлении, WPF зависит от DirectX для своей графики, а Windows Forms использует GDI +, ни один из которых не является кроссплатформенным. Итак, как .NET Core может включать WPF и Windows Forms? Ответ — «Пакеты для настольных ПК». Вы устанавливаете .NET Core 3, а затем дополняете его пакетами для настольных ПК, которые работают только под Windows, что делает все это специфичным для Windows.

Конечно, DirectX и GDI не являются частью пакетов и должны предоставляться Windows, в частности Windows 10.
Итак, можем ли мы ожидать, что наши существующие приложения будут просто работать? Кажется, мы можем:
В нашей лаборатории работает версия Paint.NET. Фактически, у нас не было доступа к исходному коду Paint.NET. У нас есть существующие двоичные файлы Paint.NET, работающие над .NET Core. У нас не было специальной сборки WPF, поэтому мы просто использовали двоичные файлы WPF в каталоге .NET Framework на нашем лабораторном компьютере. Кроме того, в этом упражнении была обнаружена неизвестная ранее ошибка в потоках в .NET Core, которая была исправлена для .NET Core 2.1. Отличная работа, Paint.NET!
Поразмыслив, это не кажется таким уж удивительным. В конце концов, .NET Core 3 должен быть версией .NET Standard с открытым исходным кодом, и если бы это было не так, это была бы в лучшем случае плохая копия.
Есть еще несколько дополнительных функций. Похоже, что EF6 (Entity Framework 6) должен быть включен и UWP. Кроме того, WPF сможет размещать элементы управления UWP — не знаю почему.
На всякий случай, если вы интерпретируете это как открытый исходный код WPF и Windows Forms, это не так. На данный момент кажется, что решение не принято, но, судя по прошлым свидетельствам, существует большое сопротивление, в частности, WPF с открытым исходным кодом. Однако, если Microsoft действительно прислушивается, а не просто следует своим путем по причинам, которые не представляют особого интереса для большинства .NET-программистов, тогда было бы неплохо использовать WPF с открытым исходным кодом. Это стимулировало бы новую разработку и вдохнуло жизнь в достойный UI Framework и, возможно, исправило бы часть уже нанесенного ущерба.
Итак, давайте на мгновение отступим и оценим, что только что произошло, потому что шумиха возбуждает вас, даже если реальность не так уж и интересна:

Мы начали с .NET, Windows Forms и WPF, работая в большинстве версий Windows.
Мы открыли исходный код .NET и создали .NET Core, у которого не было графического интерфейса.
Теперь мы добавляем Windows Forms и WPF в .NET Core, но только в Windows.
Итак, теперь у нас есть .NET (Core), работающий с Windows Forms, и WPF, работающий в Windows 10.

Долгий путь, чтобы вернуться не совсем туда, откуда мы начали, и, о да, .NET Core все еще не имеет графического интерфейса, если он не работает в Windows.
Без кроссплатформенного графического интерфейса .NET Core не имеет значения для программистов, не работающих с Windows.
Microsoft все еще, похоже, не оправилась от своего безумия, и теперь вы должны думать, что руководящие люди даже не понимают, откуда они пришли, не говоря уже о том, куда они идут.
Больше информации
.NET Core 3 и поддержка настольных приложений Windows
Статьи по Теме
Microsoft просит помощи о будущем .NET — с чего начать?
Blazor .NET в браузере
Мост Silverlight к приложениям UWP
Не выгружать .NET — метод Microsoft
Сброс .NET — безумие Microsoft
Microsoft Open Sources .NET?
Был ли .NET ошибкой?
Война с Microsoft — управляемое против неуправляемого
Windows и .NET — надвигающаяся буря
WPF жив!
Microsoft против разработчиков

Чтобы быть в курсе новых статей на I Programmer, подпишитесь на нашу еженедельную новостную рассылку, подпишитесь на RSS-канал и подпишитесь на нас в Twitter, Facebook или Linkedin.

Комментарии
Оставьте комментарий или просмотрите существующие комментарии с помощью Disqus
или отправьте свой комментарий по адресу: comments@i-programmer.info


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