Здравствуйте. А где бы почитать про low-level устройство WPF? Я примерно понимаю, как работает обычный GDI, с его окнами и оконными сообщениями. Примерно понимаю, как система вычисляет необходимые для перерисовки окна. Но, ведь вся эта машинерия работает в ядре, не так ли? А WPF — он только managed. Как вообще он встроен в систему, например — у меня в процессе два WPF-окна, видных на таскбаре, я одно перетащил над другим — кто будет вычислять "грязные" регионы, ядро или WPF внутри процесса? Что это за окна вообще — обычный объект GDI, внутри которого directx'ом что-то рисуется?
Есть ли какие-то подобные фреймворки, которые оперировали бы не сообщениями и device contexts, а графическими примитивами? В линуксе, например.
Здравствуйте, Слава, Вы писали:
С>Здравствуйте. А где бы почитать про low-level устройство WPF?
Примерно так (+ ещё немного деталей). Более подробных постов не попадалось.
С>Как вообще он встроен в систему, например — у меня в процессе два WPF-окна, видных на таскбаре, я одно перетащил над другим — кто будет вычислять "грязные" регионы, ядро или WPF внутри процесса? http://blogs.msdn.com/b/greg_schechter/archive/2006/06/09/623566.aspx
и ещё немного в .pro wpf programming
Здравствуйте, Слава, Вы писали:
С>Но, ведь вся эта машинерия работает в ядре, не так ли?
Если ядро имеется ввиду kernel то нет. GDI поверх работает в основном.
С>кто будет вычислять "грязные" регионы?
WPF/DirectX рисует в swap buffer (bitmap фактически). Т.е. WM_PAINT в WPF нет. Приложение рисует в буфер. Который переключается (swap) когда он готов.
С>Есть ли какие-то подобные фреймворки, которые оперировали бы не сообщениями и device contexts, а графическими примитивами? В линуксе, например.
Мой Sciter например.
Это в принципе тот же WPF только вместо XAML используется HTML/CSS. Ну и работает на всех desktop platforms в отличие от.
Здравствуйте, Sinix, Вы писали:
С>>Как вообще он встроен в систему, например — у меня в процессе два WPF-окна, видных на таскбаре, я одно перетащил над другим — кто будет вычислять "грязные" регионы, ядро или WPF внутри процесса? S>http://blogs.msdn.com/b/greg_schechter/archive/2006/06/09/623566.aspx S>и ещё немного в .pro wpf programming
Че-та по ссылкам не говорится о том, что WPF рисует не в DirectX, а кодирует последовательность вызовов для отрисовки сцены в виде данных, затем передает эти данные нейтивному "плееру", который затем проигрывает сию последовательность в отдельном потоке. Вернее, наоборот, WPF вынужден создавать отдельный поток для обработки событий и отрисовки сцены, а главному шлёт вот этот закодированный алгоритм-данные для отрисовки в нейтивном GUI, в свою очередь, главный поток пуляет в этот дополнительный пришедшие события мыши, клавы и прочего. Вот такая херня, малята. )) Трафик GC порой просто невменяемый от просто движений мышью над сложной сценой. Отсюда все тормоза.
Здравствуйте, vdimas, Вы писали:
V>Че-та по ссылкам не говорится о том, что WPF рисует не в DirectX, а кодирует последовательность вызовов для отрисовки сцены в виде данных, затем передает эти данные нейтивному "плееру", который затем проигрывает сию последовательность в отдельном потоке. Вернее, наоборот, WPF вынужден создавать отдельный поток для обработки событий и отрисовки сцены, а главному шлёт вот этот закодированный алгоритм-данные для отрисовки в нейтивном GUI, в свою очередь, главный поток пуляет в этот дополнительный пришедшие события мыши, клавы и прочего. Вот такая херня, малята. )) Трафик GC порой просто невменяемый от просто движений мышью над сложной сценой. Отсюда все тормоза.
Ничоси. Интересно, есть ли хоть один нетормозной композитный фреймворк?
Здравствуйте, Слава, Вы писали:
С>Здравствуйте. А где бы почитать про low-level устройство WPF?
Если не изменяет память, то на https://www.techdays.ru/ проскальзывала пара докладов в которых более менее рассказывалось про работу всего стека (от xaml до драйвера видиокарты).
Здравствуйте, Слава, Вы писали:
С>Ничоси. Интересно, есть ли хоть один нетормозной композитный фреймворк?
Нейтивные браузерные — большинство с открытыми исходниками. Ну еще встроенный WinRT, начиная с Windows 8.0 — рендерит прямо из того же потока, в котором выполняется логика layout сцены, поэтому заметно пошустрее. GUI-cобытия, опять же, не надо перекачивать из потока в поток...
Здравствуйте, Слава, Вы писали:
С>Ничоси. Интересно, есть ли хоть один нетормозной композитный фреймворк?
Нашел кого слушать. Он уже не раз писал бред про WPF, в котором ни черта не разбирается. Лучше сам покопайся, если интересно. Да и с GC я тесты проводил — его там менее 1% про профайлеру.
CS>Мой Sciter например. CS>Это в принципе тот же WPF только вместо XAML используется HTML/CSS. Ну и работает на всех desktop platforms в отличие от.
А в чем преимущество вашего подхода перед Desktop Applications и Web Applications?
Мне почему то всегда казалось что ваше решение это объединение наихудшых решений что можно было взять у Desktop Applications и Web Applications одновременно — то есть ваше решение не может полноценно заменить ни Desktop Application и также не может полноценно заменить и Web Application. В чем профит?
При этом они перешли таким безболезненным образом с XP на Win 10 с его flat, Metro alike UI.
Это конечно своебразный UI, но вот и чисто утилитарный GitHub UI явно укладывется в HTML/CSS
Ну или вот чистый HTML/CSS desktop UI:
Atom / Electron editor
или вот Brackets editor
Кстати в Украине со Sciter активно работают (из тех что я знаю) несколько команд в softserve inc (Львов) и comodo (Одесса).
UA>>В чем профит? CS>Profit тот же что и у WPF, только как я уже сказал это HTML/CSS что заведомо лучше чем XAML. На всех desktop platforms
Разметка это дело десятое (например в Delphi ее вообще никто не видел), главное чтобы было удобство прописать байдинги и все такое.
В WPF можно интерактивность приложения наварачивать до усирачки, тогда как HTML даже сейчас это довольно статический контент из текста и картинок. То есть ваш подход явно проигрывает Desktop решениям, в том числе и WPF.
А если взять WebApplication, то там HTML разметки можно и не увидеть за серверными контролами который отдается клиенту или прикрутить как сейчас модно JavaScipt контролы — а у вас так можно делать? Думаю что нет.
Я не знаю почему антивирусы застряли на HTML-like UI, ведь если есть грамотный UI чел, то навернуть можно в разы круче и удобнее, а они сами себя добровольно урезают в возможностях своего UI выходит.
Здравствуйте, UA, Вы писали: UA>>>В чем профит? CS>>Profit тот же что и у WPF, только как я уже сказал это HTML/CSS что заведомо лучше чем XAML. На всех desktop platforms UA>Разметка это дело десятое (например в Delphi ее вообще никто не видел), главное чтобы было удобство прописать байдинги и все такое.
"удобство прописать байдинги" тоже дело относительное. Это кому что удобно.
Кто-то считает что AngularJS (или +plus в Sciter) это высшая форма duplex data binding и лучше просто ничего не бывает. UA>В WPF можно интерактивность приложения наварачивать до усирачки, тогда как HTML даже сейчас это довольно статический контент из текста и картинок. То есть ваш подход явно проигрывает Desktop решениям, в том числе и WPF.
В Sciter можно делать заведомо больше того что можно в WPF. Ну вот скажем примеры из Sciter SDK:
UA>А если взять WebApplication, то там HTML разметки можно и не увидеть за серверными контролами который отдается клиенту или прикрутить как сейчас модно JavaScipt контролы — а у вас так можно делать? Думаю что нет.
А как WebApplication и WPF соотносится?
Ну да ладно...
Есть такое понятие — Single Page Web Applications (SPA). Там сервер отдает одну единственную статическую web page и реализует набор REST интерфейсов.
А клиент уже создает content. Всякие AngularJS, EmberJS, ReactJS и прочие они все про это.
SPA это классичесий вариант client-server архитектуры c толстым кдиентом.
Так вот SPA это и есть модель desktop приложения. Где в качестве server выступает business logic and data layer самого приложения.
В случае Sciter это или native code или код на C#, Go, D или, прости хоспидя, Delphi. UA>... там HTML разметки можно и не увидеть ...
Много ты там видишь из того что на картинке? UI того <richtext> создается в скрипте котоый подключается стилем @import url(richtext.css); UA>Я не знаю почему антивирусы застряли на HTML-like UI, ведь если есть грамотный UI чел, то навернуть можно в разы круче и удобнее, а они сами себя добровольно урезают в возможностях своего UI выходит.
Ну почему только антивирусы ...
ICQ знаешь? Ну дык Sciter нонче...
И у меня в клиентах есть например World Bank Organization, или Kindred Healthcare (50 тыс сотрудников в US).
У них там дофига интересного деется на Sciter. С одним и тем же UI на разных платформах...
UA>>В WPF можно интерактивность приложения наварачивать до усирачки, тогда как HTML даже сейчас это довольно статический контент из текста и картинок. То есть ваш подход явно проигрывает Desktop решениям, в том числе и WPF.
CS>Вот глянь на screenshots здесь https://cyberraiden.wordpress.com/2014/09/28/norton-internet-security-2015-review-settings/ CS>Это не всё, там реально 40-50 форм и вариаций разных. Интерактивных настолько что рядовым проктологам и не снилось. Это всё HTML/CSS. Уже 10 лет как. Ибо это Sciter UI.
И где интерактивность? Обычный статический текст с картинками и кнопочками.
CS>А как WebApplication и WPF соотносится? CS>Ну да ладно...
Мне не совсем понятна ваша ниша, вот если брать Qt — понятно, wxWidgets — тоже понятно, PhoneGap — понятно, и так далее. А вы где то посредине ни к десктопу ни к вебу.
CS>Есть такое понятие — Single Page Web Applications (SPA). Там сервер отдает одну единственную статическую web page и реализует набор REST интерфейсов.
SPA значит что нету постбэков с полной перезагрузкой страницы. А подгружать или замещать куски UI через .ajax никто не запрещает.
CS>А клиент уже создает content. Всякие AngularJS, EmberJS, ReactJS и прочие они все про это.
Это сегодняшняя мода такая, но UI можно делать и на сервере и отдавать уже готовым на клиента которому только отрендерить.
CS>SPA это классичесий вариант client-server архитектуры c толстым кдиентом.
Это зависит от реализации, можно сделать и тонким клиентом.
CS>Так вот SPA это и есть модель desktop приложения. Где в качестве server выступает business logic and data layer самого приложения. CS>В случае Sciter это или native code или код на C#, Go, D или, прости хоспидя, Delphi.
Это бывает удобнее чтобы завернуть веб-приложение через PhoneGap и отдать его под видом desktop приложения, но все же понимают что это далеко не desktop приложение и оно имеет кучу ограничений.
Здравствуйте, c-smile, Вы писали:
CS>Profit тот же что и у WPF, только как я уже сказал это HTML/CSS что заведомо лучше чем XAML. На всех desktop platforms Мягко говоря, спорное утверждение. По мне так XAML заруливает любые другие аналоги с большим отрывом. HTML/CSS — вообще самое большое убожество, придуманное человечеством. И только обильное добавление жабаскриптовых либ делает его более-менее юзабельным.
Я конечно понимаю, что тебе нужно пиарить свой продукт, но всё же...
Здравствуйте, koandrew, Вы писали:
K>Здравствуйте, c-smile, Вы писали:
CS>>Profit тот же что и у WPF, только как я уже сказал это HTML/CSS что заведомо лучше чем XAML. На всех desktop platforms K>Мягко говоря, спорное утверждение. По мне так XAML заруливает любые другие аналоги с большим отрывом. HTML/CSS — вообще самое большое убожество, придуманное человечеством. И только обильное добавление жабаскриптовых либ делает его более-менее юзабельным.
То что в HTML/CSS люди добавляют тучи разных frameworks и подходов я классифицирую как достоинство. Значит основа достаточно гибкая.
Вокруг HTML/CSS мы наблюдаем кучу всяких технологий и идей, те же jquery, angular, react и прочее. WPF же... ну всё в том же состоянии...
Да даже MS от него как-то дистанциируется. Ну сделали вот WPF с рисованием в DirectX...
Но буквально через пару лет сделали Direct2D с тем же принципом. Только без этого странного XML нагромождения...
Хотя могли бы продолжать развивать WPF и переписать на нем desktop. Но не стали. Ужаснулись на реальных примерах ?
WPF/XAML это в принципе точно такое же DOM tree как тот же HTML или SVG. Словарь другой, а так в принципе то же самое.
Но у WPF архитектуры есть две основные проблемы:
1. Дикое нарушение принципа separation of concerns. Всё в куче и стили и биндинги и разметка.
На самом деле WPF это всё те же .FRM файлы от VisualBasic только вместо YAML-alike формата использован XML. Такой вот наивный рефактринг во времена когда было XML-наще-фсё.
2. Стили в WPF это вообще грустно. Особенно в сравнении с CSS и его cascading и селекторами. Ну вот не получается в WPF применить другую систему layout или стилей без переписывания всего и вся. Всё приколочено гвоздями. Фактичски та же проблема что и у WinForms.
Т.е. не получается как с HTML когда backend/server выдает абстрактный список <ul><li>, а уже CSS раскладывает его вертикально и горизонтально — как надо.
И тут много всякого под этим.
K>Я конечно понимаю, что тебе нужно пиарить свой продукт, но всё же...
Я хоть и участвовал как Invited Expert в W3C в разаработке HTML5 спецификации, но ни HTML ни CSS не являются моими продуктами.
Т.е. тут "пиарить" мне нечего.
Здравствуйте, c-smile, Вы писали:
CS>То что в HTML/CSS люди добавляют тучи разных frameworks и подходов я классифицирую как достоинство. Значит основа достаточно гибкая.
Неверно — это значит, что оригинал настолько убог, что без костылей его использовать невозможно.
CS>Вокруг HTML/CSS мы наблюдаем кучу всяких технологий и идей, те же jquery, angular, react и прочее. WPF же... ну всё в том же состоянии...
См. выше. Плюс тут сказалось жёсткое легаси. Собственно jquery изначально зародилась как способ предоставить браузеро-независимое API для жабаскриптов.
CS>Да даже MS от него как-то дистанциируется. Ну сделали вот WPF с рисованием в DirectX... CS>Но буквально через пару лет сделали Direct2D с тем же принципом. Только без этого странного XML нагромождения... CS>Хотя могли бы продолжать развивать WPF и переписать на нем desktop. Но не стали. Ужаснулись на реальных примерах ?
Месье понимает разницу между композицией и рендером?
CS>WPF/XAML это в принципе точно такое же DOM tree как тот же HTML или SVG. Словарь другой, а так в принципе то же самое.
Принцип действительно похожий, только XAML намного мощнее за счёт дата-шаблонов и байндинга.
CS>1. Дикое нарушение принципа separation of concerns. Всё в куче и стили и биндинги и разметка.
Байндинг и дата-темплейты — это как раз ОГРОМНОЕ преимущество XAML и то, чего так не хватает в HMTL. Не зря же появилась куча жабаскриптовых библиотек для этих фич — потому что искаропки в HTML ничего этого нет.
CS>На самом деле WPF это всё те же .FRM файлы от VisualBasic только вместо YAML-alike формата использован XML. Такой вот наивный рефактринг во времена когда было XML-наще-фсё.
Это (а также остальные пункты) только говорит об уровне твоих знаний о WPF.
CS>2. Стили в WPF это вообще грустно. Особенно в сравнении с CSS и его cascading и селекторами. Ну вот не получается в WPF применить другую систему layout или стилей без переписывания всего и вся. Всё приколочено гвоздями. Фактичски та же проблема что и у WinForms.
Разные лейауты реализуются разными XAMLами. При этом благодаря байндингам у дизайнера полная свобода в размещении элементов — такое HTML/CSS даже не снилось. При этом никакого кода писать не нужно — всё подцепляется само.
CS>Т.е. не получается как с HTML когда backend/server выдает абстрактный список <ul><li>, а уже CSS раскладывает его вертикально и горизонтально — как надо.
А как насчёт замены списка на, скажем, комбобокс? В XAML — пара строчек разметки. А в HTML/CSS опять упс. CS>И тут много всякого под этим.
CS>Я хоть и участвовал как Invited Expert в W3C в разаработке HTML5 спецификации, но ни HTML ни CSS не являются моими продуктами. CS>Т.е. тут "пиарить" мне нечего.
А мы конечно не видим ссылку на твой сайт в профиле, и не заметили прямую рекламу в одном из предыдущих постов. Ты за кого нас держишь?
Здравствуйте, koandrew, Вы писали:
K>Здравствуйте, c-smile, Вы писали:
CS>>То что в HTML/CSS люди добавляют тучи разных frameworks и подходов я классифицирую как достоинство. Значит основа достаточно гибкая. K>Неверно — это значит, что оригинал настолько убог, что без костылей его использовать невозможно.
Если следовать такой логике то "С++ настолько убог что без библиотек его использовать невозможно".
Или я не правильно мысль твою уловил?
CS>>Вокруг HTML/CSS мы наблюдаем кучу всяких технологий и идей, те же jquery, angular, react и прочее. WPF же... ну всё в том же состоянии... K>См. выше. Плюс тут сказалось жёсткое легаси. Собственно jquery изначально зародилась как способ предоставить браузеро-независимое API для жабаскриптов.
jquery уже давно не про браузеро-независимость.
Но вот кстати в чём парадокс... HTML/CSS работает на куче платформ ...
Про WPF я так понимаю ты опять стыдливо промолчишь.
CS>>Да даже MS от него как-то дистанциируется. Ну сделали вот WPF с рисованием в DirectX... CS>>Но буквально через пару лет сделали Direct2D с тем же принципом. Только без этого странного XML нагромождения... CS>>Хотя могли бы продолжать развивать WPF и переписать на нем desktop. Но не стали. Ужаснулись на реальных примерах ? K> Месье понимает разницу между композицией и рендером?
О да, слова я такие знаю только причем они здесь?
CS>>WPF/XAML это в принципе точно такое же DOM tree как тот же HTML или SVG. Словарь другой, а так в принципе то же самое. K>Принцип действительно похожий, только XAML намного мощнее за счёт дата-шаблонов и байндинга.
Нужен тебе data binding? Подключай angular.js, vue.js или knockout какой.
Не нужен — ничего не подключай и ни за что платить не будешь в плане performance.
Нужны тебе шаблоны? {{mustache}}, handlebars, angular, react, polymer и иже с ними...
На любой вкус, цвет и настроение.
CS>>1. Дикое нарушение принципа separation of concerns. Всё в куче и стили и биндинги и разметка. K>Байндинг и дата-темплейты — это как раз ОГРОМНОЕ преимущество XAML и то, чего так не хватает в HMTL. Не зря же появилась куча жабаскриптовых библиотек для этих фич — потому что искаропки в HTML ничего этого нет.
Всё там есть и в ассортименете.
CS>>На самом деле WPF это всё те же .FRM файлы от VisualBasic только вместо YAML-alike формата использован XML. Такой вот наивный рефактринг во времена когда было XML-наще-фсё. K>Это (а также остальные пункты) только говорит об уровне твоих знаний о WPF.
Верну ка я сию претензию в твой адрес обратно, но про современный web stack.
CS>>2. Стили в WPF это вообще грустно. Особенно в сравнении с CSS и его cascading и селекторами. Ну вот не получается в WPF применить другую систему layout или стилей без переписывания всего и вся. Всё приколочено гвоздями. Фактичски та же проблема что и у WinForms. K>Разные лейауты реализуются разными XAMLами. При этом благодаря байндингам у дизайнера полная свобода в размещении элементов — такое HTML/CSS даже не снилось. При этом никакого кода писать не нужно — всё подцепляется само.
Ты давно не интересовался state of affairs в web технологиях.
CS>>Т.е. не получается как с HTML когда backend/server выдает абстрактный список <ul><li>, а уже CSS раскладывает его вертикально и горизонтально — как надо. K>А как насчёт замены списка на, скажем, комбобокс? В XAML — пара строчек разметки. А в HTML/CSS опять упс. CS>>И тут много всякого под этим.
CS>>Я хоть и участвовал как Invited Expert в W3C в разаработке HTML5 спецификации, но ни HTML ни CSS не являются моими продуктами. CS>>Т.е. тут "пиарить" мне нечего. K>А мы конечно не видим ссылку на твой сайт в профиле, и не заметили прямую рекламу в одном из предыдущих постов. Ты за кого нас держишь?
Это про что? А вообще чего так глубоко залазить? Тут вот рядом есть форум "Продукты Terra Informatica", это всё про Sciter и уж триста лет как.
Зачем мне что-то еще?
Вот помнится Evernote 3.5 вышел на WPF...
Абстракции были зашибись, всё там правильно было, и binding и rendering и composition.
А реализацию правильных патернов можно было на стенку вешать за для красоты...
Но понимаешь какое дело... Не шевелилось, оно...
4 месяца дистрибуция или около того продержалась. Быстро на native переписали...
И вообще в Канаде работы по WPF нет. В смысле вообще нет. О чём сие говорит как думаешь?
Здравствуйте, c-smile, Вы писали:
CS>Если следовать такой логике то "С++ настолько убог что без библиотек его использовать невозможно". CS>Или я не правильно мысль твою уловил?
Абсолютно правильно.
CS>jquery уже давно не про браузеро-независимость. CS>Но вот кстати в чём парадокс... HTML/CSS работает на куче платформ ... CS>Про WPF я так понимаю ты опять стыдливо промолчишь.
Нет — просто мне платформы, где он не работает, не интересны.
CS>О да, слова я такие знаю только причем они здесь?
А подумать?
CS>Нужен тебе data binding? Подключай angular.js, vue.js или knockout какой. CS>Не нужен — ничего не подключай и ни за что платить не будешь в плане performance. CS>Нужны тебе шаблоны? {{mustache}}, handlebars, angular, react, polymer и иже с ними... CS>На любой вкус, цвет и настроение.
Вот и я о чём. А в XAML всё это искаропки, не нужно никаких велосипедов.
CS>Всё там есть и в ассортименете.
Только при устновке 100500 библиотек. Я предпочитаю искоробочное решение, т.к. все эти библиотеки кривые.
CS>Верну ка я сию претензию в твой адрес обратно, но про современный web stack.
Ну то есть ты не отрицаешь, что имеешь наглостьсмелость критиковать XAML, даже не потрудившись его как следует изучить?
CS>Ты давно не интересовался state of affairs в web технологиях.
Я каждый день ими интересуюсь, и пока я вижу только костыль на костыле и костылём подгоняет.
CS>Это про что? А вообще чего так глубоко залазить? Тут вот рядом есть форум "Продукты Terra Informatica", это всё про Sciter и уж триста лет как. CS>Зачем мне что-то еще?
Откуда я знаю зачем? Я не умею читать чужие мысли...
CS>Вот помнится Evernote 3.5 вышел на WPF... CS>Абстракции были зашибись, всё там правильно было, и binding и rendering и composition. CS>А реализацию правильных патернов можно было на стенку вешать за для красоты... CS>Но понимаешь какое дело... Не шевелилось, оно... CS>4 месяца дистрибуция или около того продержалась. Быстро на native переписали...
Тоже видимо такие же "профи" были WPF фигово работает в руках идиотов — тут руки прямые нужны, да голова ясная.
CS>И вообще в Канаде работы по WPF нет. В смысле вообще нет. О чём сие говорит как думаешь?
Правда чтоли? Значит мне мои контракты на WPF приснились?
Здравствуйте, koandrew, Вы писали:
CS>>И вообще в Канаде работы по WPF нет. В смысле вообще нет. О чём сие говорит как думаешь? K>Правда чтоли? Значит мне мои контракты на WPF приснились?
Я не знаю кого ты больше обманываешь, себя или окружащих.