WPF vs WinForms
От: x64 Россия http://x64blog.name
Дата: 23.03.10 18:30
Оценка: +2 -2
Я под WPF никогда не писал (под WinForms только опыт есть), а вот на днях попробовал форму хотя бы сделать простую и реально запутался. А у уж этот XAML мой моск вообще отказывается воспринимать. Т.е. вообще как-то странно получается, вроде занимаемся визуальным программированием, но при этом по-прежнему приходится ковырятся в каком-то (при чём незнакомом) языке. И возникает закономерный вопрос — а есть ли в этом XAML что-нибудь, что может заставить обычного шароварщика, скажем, писать свой UI именно под WPF? Особенно учитывая, что софт какой-нибудь системный больше и не требует никаких особых красивостей. Может быть там какие-то контролы есть новые на замену обычным системным? Что там такого есть, ради чего стоит таки потрахаться как следует с WPF-дизайнером и этим грёбанным XAML? Может хоть ссылочку дадите для начинающих в WPF? Особенно для тех, кто на него с WinForms переходит. Я пока даже не уверен вообще надо ли оно мне. Отговорите, а?
JID: x64j@jabber.ru
Re: WPF vs WinForms
От: Roman Odaisky Украина  
Дата: 23.03.10 20:04
Оценка:
Здравствуйте, x64, Вы писали:

x64>Я пока даже не уверен вообще надо ли оно мне. Отговорите, а?


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

Есть тут у нас одна фирма, сайт которой постоянно поднимает мне настроение. Например, вот это: http://it-dimension.com/service/new-ms-technologies/. Майкрософт очень уж любит стратегию, которую Джоэл называет «Fire and Motion». Если ты не видишь преимуществ от перехода, то зачем участвовать в крысиных бегах?

Да и велосипеды там очень любят. Например, «придется подождать
Автор: Sinclair
Дата: 19.05.06
еще четыре-пять лет, пока давление со стороны производителей высококачественных мониторов не вынудит микрософт таки нанять Максима или разработать растеризатор самостоятельно». То же самое кто-то на RSDN говорил касательно отрисовки шрифтов. Сама мысль о том, что можно просто перейти на (свободно распространяемые!) библиотеки AGG и FreeType кажется какой-то чуждой, хотя эти продукты на порядок лучше того, что используют в MS.

Насчет преимуществ: я, естественно, не использовал ни то, ни другое, но, насколько я знаю, WPF — единственная виндовая технология, которая правильно отрисовывает мой простенький типографический тест: http://qwertty.com/tmp/ScreenTypographyTest.html.
До последнего не верил в пирамиду Лебедева.
Re: WPF vs WinForms
От: Cyberax Марс  
Дата: 23.03.10 20:10
Оценка: :)
Здравствуйте, x64, Вы писали:

x64>Я под WPF никогда не писал (под WinForms только опыт есть), а вот на днях попробовал форму хотя бы сделать простую и реально запутался. А у уж этот XAML мой моск вообще отказывается воспринимать.

Пиши на HTMLayout
Sapienti sat!
Re: WPF vs WinForms
От: Tesh США  
Дата: 23.03.10 20:13
Оценка:
Здравствуйте, x64, Вы писали:

Я так понял что одна из идей WPF была: дизайнеры рисуют какой угодно интерфейс, а программист привязывает к нему логику.
Re: WPF vs WinForms
От: mrTwister Россия  
Дата: 23.03.10 20:43
Оценка: 6 (4) +4
Здравствуйте, x64, Вы писали:

Мощь WPF проявляется на сложном интерфейсе. Эта сила заключается в следующих аспектах: разделение визуального и логического дерева, возможность рисовать вообще что угодно где угодно (например, ничто не мешает сделать кнопку, внутри которой лежит комбобокс, каждый элемент которого содержит прогресс бар и все это крутится по часовой стрелке), мощная система разделяемых и наследуемых свойст и событий, event tunneling и event bubbling, мощнейшая система биндинга, позволяющая вообще отказаться от code-behind и полностью разнести логику пользовательского интерфейса с его внешним видом, система стилей, позволяющая кастомизировать (полностью поменять) внешний вид и визуальные эффекты чего угодно, очень мощный и сильно расширяемый XAML, позволяющий производить сложные манипуляции с интерфейсом с помощью текстового редактора и избежать таким образом тонны кликов мышью и мата при мержевании, очень сильная способность (круче, чем в HTML) создавать интерфейс со сложным и гибким layout'ом без привязки к пикселям и автоматически красиво подстраивающийся под любые размеры рабочей области, аппаратное ускорение.

Это то, что быстро вспомнил.
лэт ми спик фром май харт
Re[2]: WPF vs WinForms
От: Roman Odaisky Украина  
Дата: 23.03.10 21:00
Оценка: 1 (1) +1 :))) :))) :))) :))) :))
Здравствуйте, mrTwister, Вы писали:

T>Мощь WPF проявляется на сложном интерфейсе. Эта сила заключается в следующих аспектах: разделение визуального и логического дерева, возможность рисовать вообще что угодно где угодно (например, ничто не мешает сделать кнопку, внутри которой лежит комбобокс, каждый элемент которого содержит прогресс бар и все это крутится по часовой стрелке), мощная система разделяемых и наследуемых свойст и событий, event tunneling и event bubbling, мощнейшая система биндинга, позволяющая вообще отказаться от code-behind и полностью разнести логику пользовательского интерфейса с его внешним видом, система стилей, позволяющая кастомизировать (полностью поменять) внешний вид и визуальные эффекты чего угодно, очень мощный и сильно расширяемый XAML, позволяющий производить сложные манипуляции с интерфейсом с помощью текстового редактора и избежать таким образом тонны кликов мышью и мата при мержевании, очень сильная способность (круче, чем в HTML) создавать интерфейс со сложным и гибким layout'ом без привязки к пикселям и автоматически красиво подстраивающийся под любые размеры рабочей области, аппаратное ускорение.


Всё правильно, только опечатка, вместо WPF должно было быть Qt.
До последнего не верил в пирамиду Лебедева.
Re[3]: WPF vs WinForms
От: mrTwister Россия  
Дата: 23.03.10 21:01
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>Всё правильно, только опечатка, вместо WPF должно было быть Qt.


Что из этого есть в Qt?
лэт ми спик фром май харт
Re[2]: WPF vs WinForms
От: x64 Россия http://x64blog.name
Дата: 23.03.10 21:11
Оценка: 1 (1) +1 -1
T>Мощь WPF проявляется на сложном интерфейсе. Эта сила заключается в следующих аспектах: разделение визуального и логического дерева, возможность рисовать вообще что угодно где угодно (например, ничто не мешает сделать кнопку, внутри которой лежит комбобокс, каждый элемент которого содержит прогресс бар и все это крутится по часовой стрелке), мощная система разделяемых и наследуемых свойст и событий, event tunneling и event bubbling, мощнейшая система биндинга, позволяющая вообще отказаться от code-behind и полностью разнести логику пользовательского интерфейса с его внешним видом, система стилей, позволяющая кастомизировать (полностью поменять) внешний вид и визуальные эффекты чего угодно, очень мощный и сильно расширяемый XAML, позволяющий производить сложные манипуляции с интерфейсом с помощью текстового редактора и избежать таким образом тонны кликов мышью и мата при мержевании, очень сильная способность (круче, чем в HTML) создавать интерфейс со сложным и гибким layout'ом без привязки к пикселям и автоматически красиво подстраивающийся под любые размеры рабочей области, аппаратное ускорение.

Мда. Похоже, что мне ничего этого не нужно.
JID: x64j@jabber.ru
Re: WPF vs WinForms
От: MxKazan Португалия  
Дата: 23.03.10 21:18
Оценка: 4 (2)
Здравствуйте, x64, Вы писали:

x64>Я под WPF никогда не писал (под WinForms только опыт есть), а вот на днях попробовал форму хотя бы сделать простую и реально запутался. А у уж этот XAML мой моск вообще отказывается воспринимать. Т.е. вообще как-то странно получается, вроде занимаемся визуальным программированием, но при этом по-прежнему приходится ковырятся в каком-то (при чём незнакомом) языке. И возникает закономерный вопрос — а есть ли в этом XAML что-нибудь, что может заставить обычного шароварщика, скажем, писать свой UI именно под WPF? Особенно учитывая, что софт какой-нибудь системный больше и не требует никаких особых красивостей. Может быть там какие-то контролы есть новые на замену обычным системным? Что там такого есть, ради чего стоит таки потрахаться как следует с WPF-дизайнером и этим грёбанным XAML? Может хоть ссылочку дадите для начинающих в WPF? Особенно для тех, кто на него с WinForms переходит. Я пока даже не уверен вообще надо ли оно мне. Отговорите, а?

Как уже сказал mrTwister, WPF сейчас хорошо подходит там, где достаточно сложный интерфейс, если под сложностью понимать комбинирование различных визуальных элементов. WPF сильнее WinForms, если активно используются data binding, а также такой паттерн как MVVM. Плюс, система свойств WPF (dependency property) позволяет настраивать контролы под свои специфические нужды без наследования (это я про attached behavior). В WPF нет нативных контролов, все контролы в WPF написаны на C#, а их визуализация осуществляется низкоуровневым Media Integration Layer (нативная DLL), по сути надстройкой над DirectX. Кстати, в WPF можно создавать свои шейдерные эффекты. А так, разница между WPF и WinForms настолько велика, что в один постинг то не уместить.

В .NET GUI были подобные обсуждения, см:
Переход от WIndows Forms к WPF
Автор: Flying Dutchman
Дата: 08.02.09

Windows forms vs WPF
Автор: Vismut
Дата: 24.06.08


В-общем, думаю лучше спросить что-то более конкретное. И потом, насколько я понял, MS таки собирается двигать WPF как ведущую технологию для Windows GUI.
Re[3]: WPF vs WinForms
От: MxKazan Португалия  
Дата: 23.03.10 21:22
Оценка: +1 :)
Здравствуйте, Roman Odaisky, Вы писали:

RO>Всё правильно, только опечатка, вместо WPF должно было быть Qt.

Осталось добавить что-нибудь про Белазы, грибы и Мерседесы — сходство с одним известным товарищем стало бы стопроцентным.
Re[3]: WPF vs WinForms
От: mrTwister Россия  
Дата: 23.03.10 21:25
Оценка: 1 (1) +1
Здравствуйте, x64, Вы писали:

x64>Мда. Похоже, что мне ничего этого не нужно.

Ты знаешь, я тоже так думал, пока не начал этим пользоваться

ИМХО, у WPF главная проблема — это высокий порог вхождения. Разница в сложности между WinForms и WPF просто огромная. Ситуация осложняется всё еще сыроватостью технологии и отсутствием наработанных и проверенных паттернов. Даже у идеологов нет пока единого мнения, как кошерно делать интерфейс на WPF, использовать ли MVVM и как разделить обязанности между View и ViewModel. Короче, есть над чем голову поломать. У WinForms главное преимущество — это то, что там все просто, понятно, граблей минимум и они давно известны.
лэт ми спик фром май харт
Re[2]: WPF vs WinForms
От: MxKazan Португалия  
Дата: 23.03.10 21:29
Оценка:
Здравствуйте, MxKazan, Вы писали:

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


Еще всяких размышлений накопал:
WPF в корпоративной среде
Автор: linker
Дата: 04.06.09

Существующие продукты на WPF
Автор:
Дата: 19.08.09

WPF и GDI
Автор: Кондор
Дата: 13.04.09
Re[2]: WPF vs WinForms
От: LaPerouse  
Дата: 23.03.10 21:34
Оценка:
Здравствуйте, mrTwister, Вы писали:

Ты не мог бы сравнить со Swing?
Я попробую сделать это по твоему тексту, хотя понятия не имею о том, что такое WPF.

T>Мощь WPF проявляется на сложном интерфейсе. Эта сила заключается в следующих аспектах: разделение визуального и логического дерева,


Ты видимо имеешь ввиду MVC. Ну, так WPF не одинок.

T>возможность рисовать вообще что угодно где угодно (например, ничто не мешает сделать кнопку, внутри которой лежит комбобокс, каждый элемент которого содержит прогресс бар и все это крутится по часовой стрелке),


За исключением кручения, все имеет непосредственную поддержку. На кнопку можно добавлять любой контрол. Для комбобокса можно установить рендерер ячейки

JComboBox.setRenderer(ListCellRenderer renderer)

Кручение — непосредственной поддержки нет, но ИМХО делается.

T>мощная система разделяемых и наследуемых свойст и событий,


банальщина

T>event tunneling и event bubbling, мощнейшая система биндинга, позволяющая вообще отказаться от code-behind и полностью разнести логику пользовательского интерфейса с его внешним видом,


Имеются сторонние библиотеки для биндинга — jgoodies binding. Но, конечно, будет не столь круто.

T>система стилей, позволяющая кастомизировать (полностью поменять) внешний вид и визуальные эффекты чего угодно,


Swing look-and-feel

T>очень мощный и сильно расширяемый XAML, позволяющий производить сложные манипуляции с интерфейсом с помощью текстового редактора и избежать таким образом тонны кликов мышью и мата при мержевании, очень сильная способность (круче, чем в HTML) создавать интерфейс со сложным и гибким layout'ом без привязки к пикселям и автоматически красиво подстраивающийся под любые размеры рабочей области, аппаратное ускорение.


Swing имеет богатый набор layout-ов.
Социализм — это власть трудящихся и централизованная плановая экономика.
Re[3]: WPF vs WinForms
От: x64 Россия http://x64blog.name
Дата: 23.03.10 21:38
Оценка:
MK>Еще всяких размышлений накопал:
MK>WPF в корпоративной среде
Автор: linker
Дата: 04.06.09

MK>Существующие продукты на WPF
Автор:
Дата: 19.08.09

MK>WPF и GDI
Автор: Кондор
Дата: 13.04.09


Спасибо.
JID: x64j@jabber.ru
Re[4]: WPF vs WinForms
От: Roman Odaisky Украина  
Дата: 23.03.10 21:44
Оценка: +3 :)
Здравствуйте, mrTwister, Вы писали:

RO>>Всё правильно, только опечатка, вместо WPF должно было быть Qt.

T>Что из этого есть в Qt?

Так и знал — стоит написать что-нибудь по делу (см. первое сообщение выше), так тишина, а как только пощекотать чье-нибудь ЧСВ, так сразу же будет ответ, и не один :-).

Отвечая на вопрос, есть всё. WolfenQt видел?

Архитектурно Qt сделана не так и красиво, но очень уж много всего интересного умеет.

Кстати,
T>>очень мощный и сильно расширяемый XAML, позволяющий производить сложные манипуляции с интерфейсом с помощью текстового редактора и избежать таким образом тонны кликов мышью и мата при мержевании
загляни в соседний флейм, где превозносят майкрософтовские средства разработки за то, что там можно всё мышью сделать :-).
До последнего не верил в пирамиду Лебедева.
Re[3]: WPF vs WinForms
От: mrTwister Россия  
Дата: 23.03.10 21:59
Оценка: 2 (1)
Здравствуйте, LaPerouse, Вы писали:


T>>Мощь WPF проявляется на сложном интерфейсе. Эта сила заключается в следующих аспектах: разделение визуального и логического дерева,


LP>Ты видимо имеешь ввиду MVC. Ну, так WPF не одинок.


Нет, тут имелось ввиду совсем другое. В WPF пользовательский интерфейс живет в двух параллельных иерархиях: логическое дерево (как он выглядит программно, то есть DOM) и визуальное дерево (наборы визуальных примитивов, с помощью которых контролы рисуются).

Если говорить про MVC, то в WPF используется более продвинутая его версия MVVM, которая опирается на мощный биндинг.

T>>возможность рисовать вообще что угодно где угодно (например, ничто не мешает сделать кнопку, внутри которой лежит комбобокс, каждый элемент которого содержит прогресс бар и все это крутится по часовой стрелке),


LP>За исключением кручения, все имеет непосредственную поддержку. На кнопку можно добавлять любой контрол. Для комбобокса можно установить рендерер ячейки


LP>JComboBox.setRenderer(ListCellRenderer renderer)


Сравни: <Button><ComboBox>...</ComboBox></Button>

LP>Кручение — непосредственной поддержки нет, но ИМХО делается.


T>>мощная система разделяемых и наследуемых свойст и событий,


LP>банальщина


Ну, сравнение было с WinForms, а не со Swing. Вообще, это круто, когда ты можешь сам определить новое свойство для некоторого контейнера, которое автоматически унаследуется дочерними элементами этого контейнера и изменит их поведение. Например, недавно потребовалось решить такую задачу: надо было сделать так, чтобы некоторые Expander'ы не могли быть одновременно открыты, то есть в один момент времени мог быть открыт только один экспандер и при открытии нового старый бы автоматически закрывался. Причем были и независимые экспандеры, которые могли быть открыты в любое время. Решена задача была через AttachedProperty "ExpanderGroupName" (по аналогии с GroupName у radion button), которое вешалось на любой узел в XAML и это свойство наследовалось всеми дочерними expander'ами данного узла. Причем в любом подузле можно переопределить ExpanderGroupName. В результате, работает все так, что в один момент времени может быть открыт только один expander с одинаковым ExpanderGroupName.
лэт ми спик фром май харт
Re[5]: WPF vs WinForms
От: mrTwister Россия  
Дата: 23.03.10 22:14
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

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


RO>>>Всё правильно, только опечатка, вместо WPF должно было быть Qt.

T>>Что из этого есть в Qt?

RO>Так и знал — стоит написать что-нибудь по делу (см. первое сообщение выше), так тишина, а как только пощекотать чье-нибудь ЧСВ, так сразу же будет ответ, и не один .


В первом сообщении нет ни слова про Qt, а вопрос исключительно про WinForms и WPF, так что непонятно, к чему ты приплел Qt.

RO>Отвечая на вопрос, есть всё. WolfenQt видел?


Давай, начнем с биндинга.
лэт ми спик фром май харт
Re[3]: WPF vs WinForms
От: Antikrot  
Дата: 23.03.10 22:40
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>Всё правильно, только опечатка, вместо WPF должно было быть Qt.

а по глюкам с qt оно сравнимо?
я просто c qt дела-то имею, а с wpf [пока] нет.
Re: WPF vs WinForms
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 23.03.10 22:50
Оценка:
Здравствуйте, x64, Вы писали:

x64>Я под WPF никогда не писал (под WinForms только опыт есть), а вот на днях попробовал форму хотя бы сделать простую и реально запутался. А у уж этот XAML мой моск вообще отказывается воспринимать.


Это декларативное программирование + вагон оверхеда в стиле мало напоминающе классику оконного програмирования по вындоус, в которую укладываются винформс.

> Т.е. вообще как-то странно получается, вроде занимаемся визуальным программированием, но при этом по-прежнему приходится ковырятся в каком-то (при чём незнакомом) языке.


И если тебе больше 30, то повод задуматься.

>И возникает закономерный вопрос — а есть ли в этом XAML что-нибудь, что может заставить обычного шароварщика, скажем, писать свой UI именно под WPF?


Есть, ибо многие вещи в UI на винформc нереализуемы в принципе если принять во внимание хотя бы минимальные ограничения по перформансу.

>Особенно учитывая, что софт какой-нибудь системный больше и не требует никаких особых красивостей. Может быть там какие-то контролы есть новые на замену обычным системным? Что там такого есть, ради чего стоит таки потрахаться как следует с WPF-дизайнером и этим грёбанным XAML? Может хоть ссылочку дадите для начинающих в WPF? Особенно для тех, кто на него с WinForms переходит. Я пока даже не уверен вообще надо ли оно мне. Отговорите, а?


погугли по MVVM, хватает материала. Или, например, открой Codeplex и посмотри там каких нить проектов. Уверен, если религия не стане на пути, найдешь все объяснения.
Re[2]: WPF vs WinForms
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 23.03.10 22:52
Оценка:
Здравствуйте, Cyberax, Вы писали:

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


x64>>Я под WPF никогда не писал (под WinForms только опыт есть), а вот на днях попробовал форму хотя бы сделать простую и реально запутался. А у уж этот XAML мой моск вообще отказывается воспринимать.

C>Пиши на HTMLayout

Это из тех советов, которым следовать не стоит.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.