[Win8] DirectUI, WinRT на замену WinApi
От: Vladek Россия Github
Дата: 22.06.11 00:43
Оценка: 21 (7)
Две познавательных ветки, рассказывающих нам про новые дотнетовские и нативные API в Window 8: Win8 M3 (7955), Win8 (7989). А здесь статья с кучей других ссылок для дальнейшего изучения вопроса в ожидании конференции BUILD.

Вкратце, в Windows есть нативный движок/библиотека DirectUI (XP/7/8, dui*.dll или DirectUI*.dll в папке system32), который используется внутри Микрософта и по архитектуре очень похож на WPF — он так же поддерживает декларативное описание интерфейса. Судя по всему, именно он в облагороженном виде придёт на замену старого доброго лампового WinApi, кроме того он же будет использоваться и для дотнетовских приложений через управляемые обёртки. Возможно, совместимость на уровне исходников сохранится с чистыми WPF/Silverlight/XAML.

И помните, всё это пока на 99% гадание на кофейной гуще.

27.06.11 20:01: Перенесено модератором из '.NET GUI' — TK
Re: [Win8] DirectUI, WinRT на замену WinApi
От: dmitry_npi Россия  
Дата: 23.06.11 17:15
Оценка:
Здравствуйте, Vladek, Вы писали:

V>Вкратце, в Windows есть нативный движок/библиотека DirectUI (XP/7/8, dui*.dll или DirectUI*.dll в папке system32), который используется внутри Микрософта и по архитектуре очень похож на WPF — он так же поддерживает декларативное описание интерфейса. Судя по всему, именно он в облагороженном виде придёт на замену старого доброго лампового WinApi, кроме того он же будет использоваться и для дотнетовских приложений через управляемые обёртки. Возможно, совместимость на уровне исходников сохранится с чистыми WPF/Silverlight/XAML.


Но зачем это нужно?(ну для native еще понятно) Но зачем .net приложениям использовать этот движок?
Атмосферная музыка — www.aventuel.net
Re[2]: [Win8] DirectUI, WinRT на замену WinApi
От: Silver_S Ниоткуда  
Дата: 23.06.11 19:06
Оценка:
Здравствуйте, dmitry_npi, Вы писали:

_>Но зачем это нужно?(ну для native еще понятно) Но зачем .net приложениям использовать этот движок?

А что .net приложениям использовать? WPF по какой-то шкале лежит ближе к HTML, как и IE+HTML не могут заменить WinAPI+GDI, так и WPF пока не может. А WinForms уже устарел, и продолжает стремительно устаревать.
Только вот будет ли новый API, или как сейчас — какие-то недокументированные dll'ки лежат для внутренего использования.
Хотелось бы чтобы он был тесно интегрирован с Direct2D/3D , т.е. чтобы можно было их использовать и напрямую.
WPF сам Direct использует (хотя и не очень эффективно), а программам не дает.
Вобщем как называют условно: WPF — Retained графикой, D2D — Immediate графикой.
Нужны и Immediate возможности для UI API.
Re[2]: [Win8] DirectUI, WinRT на замену WinApi
От: Vladek Россия Github
Дата: 23.06.11 19:21
Оценка:
Здравствуйте, dmitry_npi, Вы писали:

_>Здравствуйте, Vladek, Вы писали:


V>>Вкратце, в Windows есть нативный движок/библиотека DirectUI (XP/7/8, dui*.dll или DirectUI*.dll в папке system32), который используется внутри Микрософта и по архитектуре очень похож на WPF — он так же поддерживает декларативное описание интерфейса. Судя по всему, именно он в облагороженном виде придёт на замену старого доброго лампового WinApi, кроме того он же будет использоваться и для дотнетовских приложений через управляемые обёртки. Возможно, совместимость на уровне исходников сохранится с чистыми WPF/Silverlight/XAML.


_>Но зачем это нужно?(ну для native еще понятно) Но зачем .net приложениям использовать этот движок?


Сам не понимаю, если поглядеть эти сборки с описаниями типов из пространства имён Windows.UI.* (лежат в %WINDIR%\System32\WinMetadata в утекщих сборка ОС) — они по сути снова копируют API от WPF/Silverlight. Может быть, этот движок будет использоваться под капотом WPF, заменив собой прежнюю реализацию.
Re[2]: [Win8] DirectUI, WinRT на замену WinApi
От: Vladek Россия Github
Дата: 24.06.11 03:27
Оценка: 5 (4)
Здравствуйте, dmitry_npi, Вы писали:

_>Здравствуйте, Vladek, Вы писали:


V>>Вкратце, в Windows есть нативный движок/библиотека DirectUI (XP/7/8, dui*.dll или DirectUI*.dll в папке system32), который используется внутри Микрософта и по архитектуре очень похож на WPF — он так же поддерживает декларативное описание интерфейса. Судя по всему, именно он в облагороженном виде придёт на замену старого доброго лампового WinApi, кроме того он же будет использоваться и для дотнетовских приложений через управляемые обёртки. Возможно, совместимость на уровне исходников сохранится с чистыми WPF/Silverlight/XAML.


_>Но зачем это нужно?(ну для native еще понятно) Но зачем .net приложениям использовать этот движок?


Вот статья, раскрывающая некоторые исторические детали о взаимоотношениях WinAPI и .NET.
Re[2]: [Win8] DirectUI, WinRT на замену WinApi
От: Евгений Акиньшин grapholite.com
Дата: 24.06.11 03:46
Оценка: +1
Здравствуйте, dmitry_npi, Вы писали:

_>Здравствуйте, Vladek, Вы писали:


V>>Вкратце, в Windows есть нативный движок/библиотека DirectUI (XP/7/8, dui*.dll или DirectUI*.dll в папке system32), который используется внутри Микрософта и по архитектуре очень похож на WPF — он так же поддерживает декларативное описание интерфейса. Судя по всему, именно он в облагороженном виде придёт на замену старого доброго лампового WinApi, кроме того он же будет использоваться и для дотнетовских приложений через управляемые обёртки. Возможно, совместимость на уровне исходников сохранится с чистыми WPF/Silverlight/XAML.


_>Но зачем это нужно?(ну для native еще понятно) Но зачем .net приложениям использовать этот движок?


ну так в дот-нете как раз с гуем проблема:

— winforms уже на момент создания был устаревшим, просто по быстрому слепили обертку вокруг win-api, соответственно любой шаг вправо-влево только через win-api, никакого декларативного гуи, все через код — ни нормальных биндингов, ни шаблонов\стилей — ничего, никакой переносимости на другие платформы итд.

— wpf, вроде бы концептуально все хорошо, но:
— тормозной и прожорливый до невозможности
— тулзовины для визуального редактирования гуя, скажем так, есть куда улучшать
— оказался сложноватым для простых разработчиков

— сильверлайт — фактически упрощенный WPF, все замечательно, но:
— работает только в песочнице, что не для всех приложений приемлемо
— кое-где слишком доупрощались, нет многих совершенно необходимых вещей — ручной отрисовки графики, нормального рич-текста, мульти-биндингов итд. И главное сэмулировать эти вещи с нормальной производительностью нельзя
— практически не используется хардверное ускорение графики, многие вещи которые на wpf летают, на сильверлайте практически не реализуемы
— опять же недоделанные тулзовины

ну и, на чем интерфейс то делать?
Не шалю, никого не трогаю, починяю примус Diagrams Designer for iPad and Windows 10
Re[3]: [Win8] DirectUI, WinRT на замену WinApi
От: Silver_S Ниоткуда  
Дата: 24.06.11 14:46
Оценка: +3
Здравствуйте, Vladek, Вы писали:

_>>Но зачем это нужно?(ну для native еще понятно) Но зачем .net приложениям использовать этот движок?


V>Вот статья, раскрывающая некоторые исторические детали о взаимоотношениях WinAPI и .NET.


Это уже действительно новый API, не тот поверх которого WPF работает — milcore(или его псевдонимы).

There will be a new native user interface library, DirectUI, that builds on top of the native Direct2D and DirectWrite APIs that were introduced with Windows 7.


Это уже интересно если поверх D2D, DW.
В идеале еще бы DX12 выпустили в Win8, и следующую версию Direct2D сделали уже DX12. И хорошую .NET обертку вокруг DirectUI,Direct2D которую бы включили в состав NET 4.5 . Тогда бы в винде наступил графический рай, по сравнению с сегодняшним бардаком.
Re: [Win8] DirectUI, WinRT на замену WinApi
От: Silver_S Ниоткуда  
Дата: 24.06.11 18:24
Оценка: 2 (1)
Здравствуйте, Vladek, Вы писали:

Еще вот интересная информация: здесь

Новый WinAPI — WinRT (не только GUI, а похоже весь WinAPI собрались так переписывать), хоть написан на C++ но есть файлы метаданных *.WinMD . И эти файлы можно подключать к .NET проектам, типа автоматической генерации Interop кода.
Соответствено вопрос. Это что еще один способ взаимодействия Managed и Unmanaged кода придумали, в дополнение к Com,DllImport[] ?
Это только в Win8 , или я что-то пропустил и *.WinMD есть в Win7?
Re[2]: [Win8] DirectUI, WinRT на замену WinApi
От: Silver_S Ниоткуда  
Дата: 24.06.11 18:33
Оценка:
S_S>Еще вот интересная информация: здесь

Там хоть и написано: "ALL SPECULATION", но у него куча каких-то скриншотов с кодом.
Re[3]: [Win8] DirectUI, WinRT на замену WinApi
От: hattab  
Дата: 24.06.11 19:14
Оценка:
Здравствуйте, Silver_S, Вы писали:

SS> S_S>Еще вот интересная информация: здесь


SS> Там хоть и написано: "ALL SPECULATION", но у него куча каких-то скриншотов с кодом.

SS> http://farm3.static.flickr.com/2680/5834405320_d6d04c6773_b.jpg

ILSpy? Очень похоже.
avalon 1.0rc3 rev 419, zlib 1.2.3
Re[2]: [Win8] DirectUI, WinRT на замену WinApi
От: Vladek Россия Github
Дата: 24.06.11 19:15
Оценка:
Здравствуйте, Silver_S, Вы писали:

S_S>Здравствуйте, Vladek, Вы писали:


S_S>Еще вот интересная информация: здесь


S_S>Новый WinAPI — WinRT (не только GUI, а похоже весь WinAPI собрались так переписывать), хоть написан на C++ но есть файлы метаданных *.WinMD . И эти файлы можно подключать к .NET проектам, типа автоматической генерации Interop кода.

S_S> Соответствено вопрос. Это что еще один способ взаимодействия Managed и Unmanaged кода придумали, в дополнение к Com,DllImport[] ?
S_S>Это только в Win8 , или я что-то пропустил и *.WinMD есть в Win7?

Это и есть COM, формат этих файлов стандартный.
Re[3]: [Win8] DirectUI, WinRT на замену WinApi
От: Vladek Россия Github
Дата: 24.06.11 23:06
Оценка:
Здравствуйте, Silver_S, Вы писали:

S_S>>Еще вот интересная информация: здесь


S_S>Там хоть и написано: "ALL SPECULATION", но у него куча каких-то скриншотов с кодом.


Это как раз те самые *.winmd файлы.
Re[3]: [Win8] DirectUI, WinRT на замену WinApi
От: MxMsk Португалия  
Дата: 25.06.11 12:15
Оценка:
Здравствуйте, Silver_S, Вы писали:

S_S>>Еще вот интересная информация: здесь

S_S>Там хоть и написано: "ALL SPECULATION", но у него куча каких-то скриншотов с кодом.
Что-то смущает меня огромное наличие extern-ов. А как делать свои контролы? В них будут DependencyProperty из .Net? Не окажутся ли они в проигрышной ситуации по отношению к extern свойствам? Не окажется ли в итоге так, что контролы выгоднее писать в unmanaged, а для managed только обертками ограничиваться.
Re[4]: [Win8] DirectUI, WinRT на замену WinApi
От: MxMsk Португалия  
Дата: 25.06.11 12:16
Оценка:
Здравствуйте, hattab, Вы писали:

H>ILSpy? Очень похоже.

Ты что здесь делаешь? Это не КСВ
Re[3]: [Win8] DirectUI, WinRT на замену WinApi
От: Silver_S Ниоткуда  
Дата: 25.06.11 12:24
Оценка:
Здравствуйте, Vladek, Вы писали:

V>Это и есть COM, формат этих файлов стандартный.

Очень хорошо что они в Винде предустановлены по умолчанию. Значит и так дизайнить будут, чтобы косяков не было с .Net совместимостью (хоть и WinMD скорее всего автоматом генерятся). Если бы лежали всякие *.tlb , то это бы еще ни чего не гарантировало.
А то для Win7 уже 2 года пишут руками обертку "WindowsAPI CodePack", и до сих пор еще не все обернули и не все баги исправили, а в нем всего лишь DirectX и некоторые фичи Win7.
Они бы так могли бы и новый DirectX задизайнить, тогда бы все эти самоделки SharpDX,SlimDX,WinAPICodepack стали бы не нужны.
Re[5]: [Win8] DirectUI, WinRT на замену WinApi
От: hattab  
Дата: 25.06.11 12:34
Оценка:
Здравствуйте, MxMsk, Вы писали:

MM> H>ILSpy? Очень похоже.


MM> Ты что здесь делаешь? Это не КСВ


Я тебе уже говорил, я офигительно разносторонний человек
avalon 1.0rc3 rev 419, zlib 1.2.3
Re[4]: [Win8] DirectUI, WinRT на замену WinApi
От: Vladek Россия Github
Дата: 25.06.11 22:00
Оценка:
Здравствуйте, Silver_S, Вы писали:

S_S>Здравствуйте, Vladek, Вы писали:


S_S> А то для Win7 уже 2 года пишут руками обертку "WindowsAPI CodePack", и до сих пор еще не все обернули и не все баги исправили, а в нем всего лишь DirectX и некоторые фичи Win7.


Эта штука уже потихоньку перекочёвывает в WPF vNext — в Windows 8, например, класс WindowChrome уже встроен в WPF из .NET 4.5.
Re[5]: [Win8] DirectUI, WinRT на замену WinApi
От: Tissot Россия  
Дата: 25.06.11 22:04
Оценка:
Здравствуйте, Vladek, Вы писали:

V>Эта штука уже потихоньку перекочёвывает в WPF vNext — в Windows 8, например, класс WindowChrome уже встроен в WPF из .NET 4.5.


.NET 4.5
Re[6]: [Win8] DirectUI, WinRT на замену WinApi
От: Vladek Россия Github
Дата: 25.06.11 23:01
Оценка:
Здравствуйте, Tissot, Вы писали:

T>Здравствуйте, Vladek, Вы писали:


V>>Эта штука уже потихоньку перекочёвывает в WPF vNext — в Windows 8, например, класс WindowChrome уже встроен в WPF из .NET 4.5.


T>.NET 4.5


Ну пока там номинально всё та же версия 4.0, но вот номер ревизии вырос: 4.0.30319.225 -> 4.0.30319.16749.
Re[3]: [Win8] DirectUI, WinRT на замену WinApi
От: Aviator  
Дата: 26.06.11 20:49
Оценка:
Здравствуйте, Vladek, Вы писали:
V>Это и есть COM, формат этих файлов стандартный.

Интересно, что предложат разработчикам на нативном с++ в качестве библиотеки и средств разработки... Неужели MFC 2.0
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.