C# и WPF

Почитал доклады о данной технологии (WPF). Выглядит довольно таки заманчиво. Вчера сел попробовал сам написать, интересно конечно, только пока непонятно какие плюсы можно извлечь от этой технологии. Стоит ли её вообще изучать/использовать для обычных десктоп приложений? Единственный плюс, который я заметил, это разделение труда дизайнера и программиста. Остальное — какая-то абстракция или же использование DirectX и других графических наворотов, которые зачастую не нужны.

В общем высказывайте ваше мнение. Желательно подкреплённое практикой.

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

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

Почему же полумера? Не вижу проблем с виртуализацией в WPF.

насчет Evernote 4: разное бывает, иногда платформа бывает реально не подходящая, но когда я вижу «переписали все с нуля на С++», то тут сразу ясно что случай из разряда «танцору WPF мешает».

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

Та, весело читати коменти людей типу «Маяковського не читав, але осуджую». Працюю з WPF останні три роки, ІМХО ця технологія — такий самий прорив, як в свій час поява.NET після жахів з MFC. Всі речі повязані з юзерським інтерфейсом займають на кілька порядків менше часу ніж в ВінФормах чи тим більше С++, та й з бізнес логікою працювати легше завдяки командам, просто фантастичному біндінгу і ше купі інших речей. Дехто пише, що WPF тормозить — зі свого досвіду скажу, якщо не «зловживати» XAMLом (не ліпити на одну кнопку три гріди і пять бордерів, бо бачив такий код), то швидкодія майже на рівні ВінФорм.

«Evernote 4 кардинально отличается от Evernote 3.5 по всем параметрам. Хотя версия 3.5 и добавила множество отличных новых возможностей, в ней мы столкнулись с рядом проблем, которые невозможно было легко исправить: размытый шрифт, долгое время загрузки, большое потребление памяти и плохая поддержка видеокарт. Все это было обусловлено спецификой технологий, лежащих в основе 3.5 (Windows.NET и WPF), на которые мы никак не могли повлиять. В конечном итоге мы скатились к борьбе с ошибками платформы вместо работы над новыми возможностями, о которых нас просили пользователи.
В итоге мы решили начать с нуля, используя только быстрый и надежный C++, в котором мы были уверены. Как вы сами увидите, результат получился просто удивительный. Эта новая версия положит основу для более быстрого развития Windows-клиента....

В ходе тестирования с аппаратным обеспечением мы установили, что Evernote 4 запускается в пять раз быстрее и использует в два раза меньше памяти, чем Evernote 3.5.»

куча нелепых комментариев некомпетентных людей.
У меня VS на 2 ядерном не тормозит. wpf лучше и быстрее работает на win7
сам VS 2010 написан на wpf. wpf использует ускоритель видеокарты.
Делайте выводы. А может у Вас комп плохо настроен админом?:)
Какое разделение труда программиста и дизайнера?
во 1 все зависит от того, что Вы пишите. И почему нет? Web приложения разделяют труд дизайнера и программера?
Опять же wpf позволяет делать с контролами все, что угодно. Часто это нетолько дизайна касается.
Многие вещи в win формах было нельзя поменять программисту, например: поведение контрола, скругление углов и т.п.
были некие ограничение у стандартных контролов. с технологией wpf можно делать все, что захотите.

Вообще лучше пощупать или хотя бы изучить тему, прежде, чем писать: Да, какой мелкософт, Вы что? Старый добрый dos;)

dosseg.model small.stack 100h.data
hello_message db ’WPF Sucks! ’, 0dh, 0ah, ’$’.code
main proc
mov ax, @data
mov ds, ax
mov ah, 9
mov dx, offset hello_message
int 21h
mov ax, 4C00h
int 21h
main endp

end main

скажите пожалуйста! у меня не грузится приложение «в контакте»? я уже и оперу грузила...сафари тоже—но даже само сафари не открываетс!!! что мне делать?! это уже помалу достает!!! заранее спасибо!!!

те кто работают с QT тоже деньги зарабатывают:) и хватит всем работы, и кто рабоатет с qt и кто рабоатет с wpf... вот МС могу позволить себе вести разработку в разных направлениях, а вот разработчики qt могут позволить себе такое??? т.е.если фирма пишет один продукт, то действительно за опредленное количество лет — они сделают его если не идеальным, то приблизят к таковому (это огромное достоинтсва фирм, которые не идут по пути МС и не бросаются в разные стороны)...,
а вот некоторые фреймворки (я думаю wpf к ним относиться), тоже позволяет закрыть вопрос УИ, и заниматься бизнес логикой...

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

2 andrey

А те фирмы, которые работают с Qt, например, денег не зарабатывали? Я б даже позволил бы себе предположить, что закрыв вопрос с УИ, они уделяли большее внимание бизнес логике, в отличие от тех, кто постоянно прыгал с фреймворка на фреймворк.

может так и есть, но с точки зрения компании МС — можно сказать что каждые 2−3 года опять начинает зарабатывать деньги выпуская новую технологию... + начинают зарабатывать фирму использующие данные технологии в своих разработках... вот что-то, а МС зарабатывать деньги умеет:)

Ага МС винна у всіх ваших/наших бідах. Але нажаль доля правди в тому є, МС якщо не помиляюсь «дала слово» що буде кожних 2 роки обновляти продукцію. Тобто вчитись прийдеться вічно: (
Але нічого страшного МС скоро і до ембедеда того добереться=) І буде там C#:)
Доречі в WPF v.NET Micro Framework =)) (not.Net Compact Framework!)

www.techdays.ru/Lecture.aspx LID=1051& wa=wsignin1.0


если работать в направление embedded — то естественно это все не нужно...

достаточно поверхностное мнение

а если учесть, что большинство проектов: это база данных + формочки разные..., а если учесть, что большинство проектов: это база данных + формочки разные...
1. Правильнее сказать — в большинстве аутсорсного булшита.
2. Зачем среднему банковскому операционисту или сейлс-менеджеру 3-Д и анимация на рабочем месте? Для более быстрой утомляемости глаз?

А в сущности, как уже сказал Антон, средняя «революционная технология» от МС живет не более 2−3-х лет, после чего МС-хомячкам бросается новая кость и они снова лихорадочно бегут покупать книги и сдавать сертификации.

> eugene_n
в свое время мне приходилсь немного использовать MFC, и когда я перешл на WinForms (тогда еще 1.1) — это было небо и земля... и создания формы, и визуализацию разных данных стало делать намного лечге..., а если учесть, что большинство проектов: это база данных + формочки разные... то вот тактие framework очень хорошо помогают... но, если работать в направление embedded — то естественно это все не нужно... т.е. все зависит от задачи, которую необходимо решать...
А сейчас на любом проекте готовы использовать open source библиотеки для решения определенных задач, и получают выгоду: — экономят время на реализации — получают уже готовый механизм

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

>> eugene_n
Ой извините меня ваша светлость.=)
uk.wikipedia.org/...tion_Foundation

"Це перше реальне оновлення технологічного середовища призначеного для користувача інтерфейсу з часу випуску Windows 95. Воно включає нове ядро, яке повинне замінити GDI і GDI+, використовувані на нинішній Windows-платформі. WPF є високорівневим об’єктно-орієнтованим функціональним шаром (англ. framework), що дозволяє створювати двовимірні та тривимірні інтерфейси."=)

>> а вот чем лучше 300-й графический фреймворк предыдущих 299-ти?
если кто-то его зделал, значит он кому-то нужен

а вообще-то идея не в новой «свистелке-перделке», идея в облегчении/ускорении разработки. сейчас много что в разработке гуи двигается в направление декларативного программирования.

2 PomAH4uK

Мальчик! Иди занимайся своим 1С и не встревай в разговоры взрослых.

>> eugene_n

Багато чим=) Думаю точно не менше змін ніж між С і С++.

2 andrey

Потому, что основные идеи оконного интерфейса разработаны еще во времена первых Маков. И его целью является удобство пользователя при работе с программой, а не демонстрация наиболее громких и блестящих свистелок и перделок. С++ например обосновал свое введение решением насущных проблем С, а вот чем лучше 300-й графический фреймворк предыдущих 299-ти?

>> Антон,
а разве С++ или QT не является «неугомонной идеей»?, а assembler???
и что есть само программировани? т.е. создание клиент-серверного приложения не является программированием? В наше время, когда компьютеры везде, когда каждый день нужны все новые и новые приложения — время играет важную роль!!!, а создавать приложения на C++, вырисовывая формочки или классы которые необходимы — это слишком долго... и в свое время, когда небыло фреймворков разных — каждая фирма делала его себе сама, и создавала отдельные модули которые использовала потом во всех своих приложениях..., а сейчас пошло разделение труда, кто-то пишет такое как wpf кто-то это использует и самое главное работы хватит и тем и тем...

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

>> Антон

Не розшифрував ваш пост=)

> А что Вы подразумеваете под «lazzy loading»?
Ну например; дерево (TreeView) — можно сразу выбирать все данные и строить на их основе все дерево, ,
а можно сразу построить только корневые узлы, а потом по мере раскрытия выгребать только нужные данные (корневые узлы под раскрывшимся).

То есть, подгружать (данные) и строить узлы по мере раскрытия дерева / скроллирования здорового списка и т.д.

Пройдет еще пару лет, появится еще одна сенсационная технология, а впф станет шлак. Какое разделение труда программиста и дизайнера, вы о чем вообще, все равно у всех программ будет схожий дизайн и уи. Это пустая трата времени. Если хочешь поменять дизайн то по моему это забота Майкрософта, или что это новый интерфейс создания «скинов»? Я по правде даже не разбирался в ней и не буду. Тошнит от этой кучи нововведений. Так можно всю жизнь убить на изучение чьих то неугомонных идей, а не на само программирование. Что делает сейчас новичок когда приходит в книжный магазин? Он ищет книги по Делфи С++ и С Шарп Билдеру. И учится писать кривущие приложения. Факты — трата времени, денег та же что и раньше. А кардинально ничего не меняется.

Вы боритесь с ветряными мельницами. Вопрос был не «что такое», а «что подразумеваете».

>> А что Вы подразумеваете под «lazzy loading»?
вот и выросло поколение...

en.wikipedia.org/...ki/Lazy_loading

А что Вы подразумеваете под «lazzy loading»?

Почти год назад пришлось плотно знакомиться с WPF, с тех пор используем до теперешнего момента.
Помню первый таск сходу был — написание сложного кастумного контрола с виртуализацией.
И ничего, справился и узнал WPF поглубже.
Что могу сказать, нам всем эта штука понравилась. Удобно и стильно. Потом мы себе представляли если бы пришлось тоже самое писать на WinForms и понимали что это было бы не реально. Технология довольно мощная. Я даже имел дело с 3D графикой (CoverFlow контрол в 3D с виртуализацией) и с пиксельными шейдерами (есть некий опыт в геймдеве, вот нашел применение). Интерфейсы (GUI) можно ваять очень мощные. И я не понимаю высказывания типа «мне не нужен GUI с рюшечками», сейчас унылые/однообразные окна на WinForms уже не доставляют, а красивый, интерактивный GUI сразу бросается в глаза с мыслями «уу, прикольно! ». Да, WPF более требователен к ресурсам, так как за простоту/универсальность юзания и за красивости нужно платить. Но вот мы писали мощное приложение на WPF, и если все грамотно делать (виртуализация/lazy loading — очень хороший пример, у нас это было везде) — никаких тормозов (разве что памяти много кушает).
Да, и архитектура UI части получается более изящной (если грамотно все сделать), очень удобно получается юзать DataContext-ы, биндинги, команды.

Более гибкая система event-ов и т.д.

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

Наша контора начала писать новую версию продукта с использованием WPF. Приложение еще ничего не умеет толком, а пока загрузится, хочется разбить компьютер. Не просто медленно — ужасно медленно! Медленно компилируется сам проект, медленно работает Visual Studio. Это при том что все компы как минимум двухядерные с 2 гигами памяти. Очень много времени тратится на казалось бы обыденные вещи, такие как олкализация приложения. Причина — отсутствие информации в интернете, до всего приходится доходить своими силами, по крупицам собирая инфу в MSDN. Сильно помогло бы наличие исходников, но... об этом только мечтать. Много времени занимает борьба с таинственным XAML-парсером, к которому не подступиться и с отладчиком не пройти. И когда в очередно

Наша контора начала писать новую версию продукта с использованием WPF. Приложение еще ничего не умеет толком, а пока загрузится, хочется разбить компьютер. Не просто медленно — ужасно медленно! Медленно компилируется сам проект, медленно работает Visual Studio. Это при том что все компы как минимум двухядерные с 2 гигами памяти. Очень много времени тратится на казалось бы обыденные вещи, такие как олкализация приложения. Причина — отсутствие информации в интернете, до всего приходится доходить своими силами, по крупицам собирая инфу в MSDN. Сильно помогло бы наличие исходников, но... об этом только мечтать. Много времени занимает борьба с таинственным XAML-парсером, к которому не подступиться и с отладчиком не пройти. И когда в очередно

Да Студия 2010 такое гавно, лучше уж я в блокноте буду кодить... IDE для идиотов..., а.NET вообще засоряет операционку. И на мою 98ю не ставится.

Совершенно верно, тоже на WPF.

Просто бленд менее популярен по сравнению со студией, поскольку его используют то исключительно для WPF и Silverlight. А автор поста со ссылкой на студию 2010 хотел, видемо, сделать акцент на том, что даже сама студия (в которой педалят и с++ники, например) в будущей версии будет уже перенесена с WinForms на WPF.


Ось подивіться: IDE Visual Studio 2010 зроблено вже на WPF — це про щось та говорить...

channel9.msdn.com/...io-2010/#Page=3

Насколько я знаю, Expression Blend 2 тоже написан на WPF

использую эту технологию уже почти 2 с половиной года.
у нее есть свои достоинства, недостатки и область применения.

если вы ориентируетесь на разработку UI приложений под Windows (как Desktop так и WEB) то есть большой смысл изучать WPF.

Ось подивіться: IDE Visual Studio 2010 зроблено вже на WPF — це про щось та говорить...

channel9.msdn.com/...io-2010/#Page=3

>> WPF — это тормоза.
это если железо 3-х летней давности.
>> А для WPF майже все мабуть прийдеться кліпати вручну
как раз наоборот в WPF заложена очень удобная модель разширения и “кастомизации” стандартных элементов управления. Это в WinForms что бы сделать банальную кнопу с картикой нужно было прилично повозиться, а в WPF это делается за минуту. Поэтому в большинстве случаях необходимого внешнего вида и поведения можно добиться и стандартными средствами без разработки кастомных контролов, как это было в формах.
>> Як тільки можна обяснити вихід ДатаГріда для WPF тільки зараз, через 4 роки? Мда...
Да, есть такое — дата грид “родной” только-только выпускают, но, откровенно говоря — потребности в нем небыло такой железной, как в WinForms, потому и не спешили видемо. В WPF базовый “гридовый” функционал легко реализовывается на базе хоть ListView, хоть ListBox (в зависимости от требований). А на крайний случай всегда можно было использовать грид WinForm-овый, хоть он, имхо, и дико смотрится в WPF приложении:) К тому же на рынке успели уже появиться бесплатные third party “гриды”, так что допилинивае “родного” MS-ом — это скорее обязательство перед комьюнити. А вот стандартные чарты, аналогичные тем, которые для Silverlight2 выпустили — WPF-у очень бы даже не помешали, хотя опять же — альтернативы есть да и реализовать подобное под конретную задачу в WPF-е значительно проще, чем тоже самое делать для WinForms. А про темы в WPF (внешний вид элементов управления, “скины” и т.п.) я вообще молчу — в формах с этим было много хуже (отсюда и ценились все стороннине полированые компоненты, так как сделать подобное на должном уровне было весьма не тривиально).

Стоит еще упомянуть про 3D, с которым WPF так же “дружит”, правда эта наверное самая “темная часть” во всем WPF, поскольку уж больно дико это будет звучать для многих: “3D интерфейс приложения”, да?:). Но тем не менее — для создания интерфейсов _будущих_ приложений (именно приложений в первую очередь, а не 3D игр!) — имхо, все может быть:)

Все.NET технологии полная фигня.

Как это? На Джаве правда больше платят и не сокращают?)

Раджу Джаву вчити-> там більше платять, і не так скорочують=)

А WPF штука прікольна, але не думаю що багато проектів доросли до цього, плюс всякі різні WinForms контроли сторонніх виробників виглядають досить таки не погано, і мають вже дофіга готових тем та й реалызованої функціональності, а ще можливість портації на Mono. А для WPF майже все мабуть прийдеться кліпати вручну. Як тільки можна обяснити вихід ДатаГріда для WPF тільки зараз, через 4 роки? Мда...

Все зависит от требований заказчика к GUI.
А если пишешь для себя — тогда другое дело.
Мое личное субъективное мнение: я не люблю графические интерфейсы с рюшечками, ribbon’ами, градиентными заливками, цветными кнопочками и т.д.

Мне классика а-ля Win98 гораздо ближе по духу.

WPF — binding просто екстра класа.
Можн овсе забиндить на бизнес обекты и не парить мозги с подстановкой значений в контролы получением значений.
В 4.0 фреймворке биндин вообще будет мега плюс добавится XAML описание для Workflow где прям в кнопке можно будет написать простенькую реакцию на нажатие (или любое другое событие)
WPF — это XAML, а XAML для тех кто еще не знает это язык описания МОДЕЛЕЙ.

Тоесть если ваше приложение можно описать ка модель это делается на XAML на декларативном уровне.

Т.е. приложения в которых GUI несложный? Тогда, конечно, может и не стоит, если разработчик не знает этот инструмент.
Давайте посмотрим ситуацию: Необходимо разработать приложение типа «Блокнот». Разработчик знает Windows Forms, но WPF не знает. Стоит ли тратить время на изучение WPF, чтобы потом использовать? Наверное нет.

Другая ситуация: Необходимо разработать приложение типа «Блокнот». Разработчик знает Windows Forms и WPF. Стоит ли использовать WPF? It depends... Например, требования к деплойменту могут говорить, что надо поддерживать Windows 98+. Стоит ли использовать WPF в этом случае? Нет.

Для которых GUI несёт только функциональную нагрузку и занимает допустим не более 10% от всего времени выделенного на проект. Сумбурно, но как-то так...

Прежде чем ответить, хотелось бы узнать что Вы относите к обычным Desktop-приложениям.

WPF — это тормоза. Уж лучше Adobe AIR.

Підписатись на коментарі