Две познавательных ветки, рассказывающих нам про новые дотнетовские и нативные 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
Здравствуйте, Vladek, Вы писали:
V>Вкратце, в Windows есть нативный движок/библиотека DirectUI (XP/7/8, dui*.dll или DirectUI*.dll в папке system32), который используется внутри Микрософта и по архитектуре очень похож на WPF — он так же поддерживает декларативное описание интерфейса. Судя по всему, именно он в облагороженном виде придёт на замену старого доброго лампового WinApi, кроме того он же будет использоваться и для дотнетовских приложений через управляемые обёртки. Возможно, совместимость на уровне исходников сохранится с чистыми WPF/Silverlight/XAML.
Но зачем это нужно?(ну для native еще понятно) Но зачем .net приложениям использовать этот движок?
Здравствуйте, 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.
Здравствуйте, 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, заменив собой прежнюю реализацию.
Здравствуйте, dmitry_npi, Вы писали:
_>Здравствуйте, Vladek, Вы писали:
V>>Вкратце, в Windows есть нативный движок/библиотека DirectUI (XP/7/8, dui*.dll или DirectUI*.dll в папке system32), который используется внутри Микрософта и по архитектуре очень похож на WPF — он так же поддерживает декларативное описание интерфейса. Судя по всему, именно он в облагороженном виде придёт на замену старого доброго лампового WinApi, кроме того он же будет использоваться и для дотнетовских приложений через управляемые обёртки. Возможно, совместимость на уровне исходников сохранится с чистыми WPF/Silverlight/XAML.
_>Но зачем это нужно?(ну для native еще понятно) Но зачем .net приложениям использовать этот движок?
Вот статья, раскрывающая некоторые исторические детали о взаимоотношениях WinAPI и .NET.
Здравствуйте, 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 летают, на сильверлайте практически не реализуемы
— опять же недоделанные тулзовины
Здравствуйте, 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 . Тогда бы в винде наступил графический рай, по сравнению с сегодняшним бардаком.
Новый WinAPI — WinRT (не только GUI, а похоже весь WinAPI собрались так переписывать), хоть написан на C++ но есть файлы метаданных *.WinMD . И эти файлы можно подключать к .NET проектам, типа автоматической генерации Interop кода.
Соответствено вопрос. Это что еще один способ взаимодействия Managed и Unmanaged кода придумали, в дополнение к Com,DllImport[] ?
Это только в Win8 , или я что-то пропустил и *.WinMD есть в Win7?
Здравствуйте, 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?
Здравствуйте, Silver_S, Вы писали:
S_S>>Еще вот интересная информация: здесь
S_S>Там хоть и написано: "ALL SPECULATION", но у него куча каких-то скриншотов с кодом.
Здравствуйте, Silver_S, Вы писали:
S_S>>Еще вот интересная информация: здесь S_S>Там хоть и написано: "ALL SPECULATION", но у него куча каких-то скриншотов с кодом.
Что-то смущает меня огромное наличие extern-ов. А как делать свои контролы? В них будут DependencyProperty из .Net? Не окажутся ли они в проигрышной ситуации по отношению к extern свойствам? Не окажется ли в итоге так, что контролы выгоднее писать в unmanaged, а для managed только обертками ограничиваться.
Здравствуйте, Vladek, Вы писали:
V>Это и есть COM, формат этих файлов стандартный.
Очень хорошо что они в Винде предустановлены по умолчанию. Значит и так дизайнить будут, чтобы косяков не было с .Net совместимостью (хоть и WinMD скорее всего автоматом генерятся). Если бы лежали всякие *.tlb , то это бы еще ни чего не гарантировало.
А то для Win7 уже 2 года пишут руками обертку "WindowsAPI CodePack", и до сих пор еще не все обернули и не все баги исправили, а в нем всего лишь DirectX и некоторые фичи Win7.
Они бы так могли бы и новый DirectX задизайнить, тогда бы все эти самоделки SharpDX,SlimDX,WinAPICodepack стали бы не нужны.
Здравствуйте, Silver_S, Вы писали:
S_S>Здравствуйте, Vladek, Вы писали:
S_S> А то для Win7 уже 2 года пишут руками обертку "WindowsAPI CodePack", и до сих пор еще не все обернули и не все баги исправили, а в нем всего лишь DirectX и некоторые фичи Win7.
Эта штука уже потихоньку перекочёвывает в WPF vNext — в Windows 8, например, класс WindowChrome уже встроен в WPF из .NET 4.5.
Здравствуйте, Vladek, Вы писали:
V>Эта штука уже потихоньку перекочёвывает в WPF vNext — в Windows 8, например, класс WindowChrome уже встроен в WPF из .NET 4.5.
Здравствуйте, 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.