Re[32]: WPF vs WinForms
От: Cyberax Марс  
Дата: 28.03.10 19:21
Оценка:
Здравствуйте, mrTwister, Вы писали:

MK>>>Путаешь domain-model и view-model. Я говорил о второй.

C>>А я с Trellis'ом могу от второй вообще отказаться.
T>Ну можно вообще от всего отказаться в обработчике нажатия кнопки лазить в базу данных. View-Model — это очень полезная штука без относительно твоего примера с перерисовкой view, которая позволяет сконцентрировать логику пользовательского интерфейса в одном месте в тестируемом виде.
В том-то и дело, что я могу с помощью реактивного программирования тривиально связывать бизнес-логику и интерфейс.

Кстати, для .NET подобное тоже появляться начинает — LINQ for events и всё такое...
Sapienti sat!
Re[33]: WPF vs WinForms
От: mrTwister Россия  
Дата: 28.03.10 19:38
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>В том-то и дело, что я могу с помощью реактивного программирования тривиально связывать бизнес-логику и интерфейс.


Интерфейс сам посебе может иметь сложную интерфейсную логику, которая никак не относится к бизнес-логике и тут нет прямой связи бизнес-логики с интерфейсом. Вот именно такую интерфейсную логику и помещают во ViewModel.
лэт ми спик фром май харт
Re[34]: WPF vs WinForms
От: Cyberax Марс  
Дата: 28.03.10 20:31
Оценка: +1
Здравствуйте, mrTwister, Вы писали:

C>>В том-то и дело, что я могу с помощью реактивного программирования тривиально связывать бизнес-логику и интерфейс.

T>Интерфейс сам посебе может иметь сложную интерфейсную логику, которая никак не относится к бизнес-логике и тут нет прямой связи бизнес-логики с интерфейсом. Вот именно такую интерфейсную логику и помещают во ViewModel.
Вот именно большую часть этой сложной логики и можно убрать с помощью реактивного программирования.
Sapienti sat!
Re[35]: WPF vs WinForms
От: mrTwister Россия  
Дата: 28.03.10 20:59
Оценка:
Здравствуйте, Cyberax, Вы писали:

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


C>>>В том-то и дело, что я могу с помощью реактивного программирования тривиально связывать бизнес-логику и интерфейс.

T>>Интерфейс сам посебе может иметь сложную интерфейсную логику, которая никак не относится к бизнес-логике и тут нет прямой связи бизнес-логики с интерфейсом. Вот именно такую интерфейсную логику и помещают во ViewModel.
C>Вот именно большую часть этой сложной логики и можно убрать с помощью реактивного программирования.

Куда убрать? Вот простейший пример: при установки чекбокса надо дизейблить кнопку. Куда ты предлагаешь убрать эту логику и как её тестировать?
лэт ми спик фром май харт
Re[36]: WPF vs WinForms
От: Cyberax Марс  
Дата: 28.03.10 21:01
Оценка:
Здравствуйте, mrTwister, Вы писали:

T>>>Интерфейс сам посебе может иметь сложную интерфейсную логику, которая никак не относится к бизнес-логике и тут нет прямой связи бизнес-логики с интерфейсом. Вот именно такую интерфейсную логику и помещают во ViewModel.

C>>Вот именно большую часть этой сложной логики и можно убрать с помощью реактивного программирования.
T>Куда убрать? Вот простейший пример: при установки чекбокса надо дизейблить кнопку. Куда ты предлагаешь убрать эту логику и как её тестировать?
Привязываешь свойство "disabled" кнопки к свойству "!selected" у чекбокса. Какие проблемы-то?

Тестировать как обычно — юнит-тестами.
Sapienti sat!
Re[37]: WPF vs WinForms
От: mrTwister Россия  
Дата: 29.03.10 05:07
Оценка:
Здравствуйте, Cyberax, Вы писали:

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


T>>>>Интерфейс сам посебе может иметь сложную интерфейсную логику, которая никак не относится к бизнес-логике и тут нет прямой связи бизнес-логики с интерфейсом. Вот именно такую интерфейсную логику и помещают во ViewModel.

C>>>Вот именно большую часть этой сложной логики и можно убрать с помощью реактивного программирования.
T>>Куда убрать? Вот простейший пример: при установки чекбокса надо дизейблить кнопку. Куда ты предлагаешь убрать эту логику и как её тестировать?
C>Привязываешь свойство "disabled" кнопки к свойству "!selected" у чекбокса. Какие проблемы-то?

А кто сказал, что чекбокс — это единственная причина, по которой кнопка может быть задизейблена?

C>Тестировать как обычно — юнит-тестами.


А пример можно?
лэт ми спик фром май харт
Re[5]: WPF vs WinForms
От: Mamut Швеция http://dmitriid.com
Дата: 29.03.10 06:38
Оценка: 1 (1) +4
RO>>>Всё правильно, только опечатка, вместо WPF должно было быть Qt.

VD>>Ага. Только жаль, что приложения на нем получаютя убогими. Но в этом, очевидно, виноваты кривые руки...


RO>Не жаль. Если разработчики настолько зациклены на майкрософтовских технологиях, которые работают только в одной ОС



Если эта ОСь занимает 90% десктоп-рынка, то как-то пофиг, не?


dmitriid.comGitHubLinkedIn
Re[16]: WPF vs WinForms
От: Codechanger Россия  
Дата: 29.03.10 06:44
Оценка:
Здравствуйте, Alexander Polyakov, Вы писали:

C>>Не в дизайнере счастье. И не может быть оно в нем.

AP>Как же так, пол года назад я же говорил вам тоже самое (в тредах 1
Автор: Alexander Polyakov
Дата: 30.08.09
, 2
Автор: Alexander Polyakov
Дата: 15.09.09
). Вы же высказывали противоположное мнение (вот одна из ваших цитат; первое, что нашлось в поиске):

AP>

AP>XAML для того и придумали, чтобы дизайнеры на галстуках в сортирах не вешались.
AP>http://rsdn.ru/forum/design/3543760.1.aspx


AP>А теперь:
AP>

AP>Не в дизайнере счастье. И не может быть оно в нем. XAML сложноват все-таки для отображения в дизайнере.

Вырываем цитаты из контекста.Путаем дизайнер и дизайнера(человека, который проектирует стили интерфейса без биндингов и прочего).
AP>Сейчас вы пишите:
AP>

AP>Тут что-то сродни веб-сайтам.

AP>А я об этом вам писал еще полгода назад:
AP>

AP>В ASP.NET дизайнер улучшают с каждой версией (и пишут об этом в рекламных проспектах), но его использование до сих пор выглядит просто смешным.
AP>http://rsdn.ru/forum/design/3543799.1.aspx



Ну писали и писали. ЧСВ зашкаливает?

AP>Что случилось, вы таки поработали с WPF?

Ну кагбэ уже года три как, есличо.
AP>На будущее, если еще не хватает профессионального опыта (или просто мозгов), чтобы оценить новую технологию по архитектурным решениям, лежащим в ее основе, то не стоит повторять рекламных проспектов Майрософт-а. Тогда сначала поработайте с этой новинкой, прочувствуете на себе все прелести из рекламных проспектов, а потом уже пишите об этом в интернетах.

Поработал, почувствовал. Читаем чуть выше.

AP>Здравый взгляд на WPF можно почитать тут

AP>http://weblogs.asp.net/okloeten/archive/2007/12/22/5489157.aspx
Здравым взгляд назвать достаточно сложно. Скорее, брызгание слюной.

З.Ы. Товарищ, ваш переход на личности(уже не в первый раз) начинает немного раздражать. Я-таки склоняюсь к мысли, что вас не мешало бы забанить на месяцок, чтобы научились общаться. Есть у вас точка зрения — отстаивайте ее аргументированно, без опускания оппонентов до своего уровня. Хотя о чем то бишь я, тут же священные войны.В общем, такие представители интеллектуального большинства, как Вы, уважаемый, попадаются в последнее время все чаще и чаще...
Re[37]: WPF vs WinForms
От: Codechanger Россия  
Дата: 29.03.10 06:47
Оценка: +1
Здравствуйте, Cyberax, Вы писали:

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


T>>>>Интерфейс сам посебе может иметь сложную интерфейсную логику, которая никак не относится к бизнес-логике и тут нет прямой связи бизнес-логики с интерфейсом. Вот именно такую интерфейсную логику и помещают во ViewModel.

C>>>Вот именно большую часть этой сложной логики и можно убрать с помощью реактивного программирования.
T>>Куда убрать? Вот простейший пример: при установки чекбокса надо дизейблить кнопку. Куда ты предлагаешь убрать эту логику и как её тестировать?
C>Привязываешь свойство "disabled" кнопки к свойству "!selected" у чекбокса. Какие проблемы-то?

C>Тестировать как обычно — юнит-тестами.


Юнит тесты в подобной ситуации не очень помогут, к сожалению.Не видел я еще нормальных юнит тестов на UI(TestComplete в нос прошу не тыкать).
Однако то, что вынесено в модель, протестировать действительно можно. У меня в текущем проекте степень покрытия тестами WPF проектов > 50%.Фактически, неохвачена только часть, связанная с непосредственным отображением данных, т.е. XAML. Все остальное легко тестируется.
Re[38]: WPF vs WinForms
От: Cyberax Марс  
Дата: 29.03.10 10:09
Оценка:
Здравствуйте, Codechanger, Вы писали:

C>>Привязываешь свойство "disabled" кнопки к свойству "!selected" у чекбокса. Какие проблемы-то?

C>>Тестировать как обычно — юнит-тестами.
C>Юнит тесты в подобной ситуации не очень помогут, к сожалению.Не видел я еще нормальных юнит тестов на UI(TestComplete в нос прошу не тыкать).
Кто не поможет?
class Some:
  @maintain
  def checkboxState(self):
    self.button.enabled=not self.checkbox.selected


def testCheckbox(self):
  inst=make(Some)
  inst.checkbox.selected=False
  assertThat(inst.button.enabled, True)
  inst.checkbox.selected=False
  assertThat(inst.button.enabled, False)
Sapienti sat!
Re[38]: WPF vs WinForms
От: Cyberax Марс  
Дата: 29.03.10 10:11
Оценка:
Здравствуйте, mrTwister, Вы писали:

C>>Привязываешь свойство "disabled" кнопки к свойству "!selected" у чекбокса. Какие проблемы-то?

T>А кто сказал, что чекбокс — это единственная причина, по которой кнопка может быть задизейблена?
Ну указываешь и другие причины. Какие проблемы-то?

C>>Тестировать как обычно — юнит-тестами.

T>А пример можно?
См. в другом посте.
Sapienti sat!
Re[6]: WPF vs WinForms
От: LaPerouse  
Дата: 29.03.10 10:21
Оценка:
Здравствуйте, Cyberax, Вы писали:

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


C>>>Вот конкретно в SWING'е оно сделано через Ж. Бааальшую Ж.

LP>>В Swing-е оно сделано универсально
C>Универсально через Ж.

Есть другие предложения?

C>>>Скажем, как мне в таблице сделать удобное редактирование ячеек?

LP>>Известно как — выбирая нужную реализацию редактора содержимого ячейки через TableCellEditor.
C>Ага, и для активации редактора нужно на него щёлкнуть. При этом другой активный редактор выключается (т.е. редактор может быть только один). Попытки сделать редактор автоматически следующим за курсором приводят к жутким глюкам при клавиатурной навигации. И т.п.

Есть такое, но только концепция editor-ов тут не при чем.

C>И я уж не говорю, что те же таблицы в SWINGе сделаны криво. В JTable нет возможности сделать фиксированную колонку (заголовки рядов)! Или нельзя делать rowspan/colspan'ы.


Интересно. Я как раз искал таблицу с rowspan/colspan, нашел какую-то платную хрень, но она убога. Можно эту таблицу поместить в свинговый или awt-ный контейнер?

Swing имеет следующие преимущества:

1. Давно существует, хорошо известны недостатки, накоплен большой опыт использования.
2. Существует большое количество компонент. Например, есть ли в HTMLayout window docable manager? Для свингов существует более десяти. Большинство полная хрень, однако есть 4 шт. промышленного качества.
Социализм — это власть трудящихся и централизованная плановая экономика.
Re[7]: WPF vs WinForms
От: Cyberax Марс  
Дата: 29.03.10 10:40
Оценка:
Здравствуйте, LaPerouse, Вы писали:

C>>>>Вот конкретно в SWING'е оно сделано через Ж. Бааальшую Ж.

LP>>>В Swing-е оно сделано универсально
C>>Универсально через Ж.
LP>Есть другие предложения?
В качестве первого приближения — XAML. Байндинги там на твёрдую четвёрку сделаны.

C>>Ага, и для активации редактора нужно на него щёлкнуть. При этом другой активный редактор выключается (т.е. редактор может быть только один). Попытки сделать редактор автоматически следующим за курсором приводят к жутким глюкам при клавиатурной навигации. И т.п.

LP>Есть такое, но только концепция editor-ов тут не при чем.
Ещё как причём...

C>>И я уж не говорю, что те же таблицы в SWINGе сделаны криво. В JTable нет возможности сделать фиксированную колонку (заголовки рядов)! Или нельзя делать rowspan/colspan'ы.

LP>Интересно. Я как раз искал таблицу с rowspan/colspan, нашел какую-то платную хрень, но она убога. Можно эту таблицу поместить в свинговый или awt-ный контейнер?
HTMLayout встраивается в SWING, у нас для этого специальный слой написан.

LP>Swing имеет следующие преимущества:

LP>1. Давно существует, хорошо известны недостатки, накоплен большой опыт использования.
Угу, и его резюме: не надо использовать SWING.

LP>2. Существует большое количество компонент. Например, есть ли в HTMLayout window docable manager? Для свингов существует более десяти. Большинство полная хрень, однако есть 4 шт. промышленного качества.

Да ну. Как раз коммерческих контролов для SWING'а — самый мизер, особенно по сравнению с WPF.

Особенно прикольно это, учитывая что в Windows отказываются от docking manager'ов в пользу ribbon-like систем
Sapienti sat!
Re[2]: WPF vs WinForms
От: vdimas Россия  
Дата: 29.03.10 11:04
Оценка: +2
Здравствуйте, Roman Odaisky, Вы писали:

RO>FreeType кажется какой-то чуждой, хотя эти продукты на порядок лучше того, что используют в MS.


FreeType на малых разрешениях сливает TrueType, а в больших уже не принципиально.

RO>Насчет преимуществ: я, естественно, не использовал ни то, ни другое, но, насколько я знаю, WPF — единственная виндовая технология, которая правильно отрисовывает мой простенький типографический тест: http://qwertty.com/tmp/ScreenTypographyTest.html.


Правильно, от того текст в WPF плохочитабелен, ибо требовать "правильно отрисовывать" этот тест на <300 DPI — более чем глупо. На таких разрешениях нужна читабельность, а не точность позиционирования.
Re[8]: WPF vs WinForms
От: vdimas Россия  
Дата: 29.03.10 11:16
Оценка: 1 (1)
Здравствуйте, Ikemefula, Вы писали:

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


I>\A>>меня больше интересуют не глюки вроде "не удалось нарисовать хитровывернутый контрол", а "зависает ни с того ни с сего"

MK>>У нас проект разрабатывается на WPF уже полтора года. За это время "шаловливые ручки" залезли во многие возможности WPF и чего чего, а зависаний не было ни разу. А вот если ты подразумеваешь тормоза, то WPF безусловно достаточно требовательна.

I>При всех своих тормозах она быстрее на порядок нежели GDI+ и винформс и более стабильна.


Где именно она быстрее? На отрисовке сложных сцен? Ну так и уточняй. А пока что обычные GUI-приложения (где обычно десяток-другой контролов) WinForms запускаются в 2-3 быстрее и окошки заметно быстрее открываются.

WPF в плане быстордействия обгоняет традиционный GDI пока только там, где много контролов и визуальных эффектов. Не уверен, что пора уже все обычные приложения украшать рюшечками эстетики ради, если за это мы поплатимся заметной разницей в скорости запуска приложения. Так что на сегодняшней реальности WPF — это вовсе не тул общего назначения.
Re[17]: WPF vs WinForms
От: vdimas Россия  
Дата: 29.03.10 11:29
Оценка: -1
Здравствуйте, Cyberax, Вы писали:

C>Я уже приводил примеры огромных контор, которые строят на HTMLayout свой бизнес. Что касается остального — работаю над этим.


HTMLayout хорош с несколько других точек зрения — это в первую очередь независимость от других очень больших программных пакетов, типа WPF/.Net или QT. В принципе, другого вменяемого по размерам бинарника GUI тулза просто нет на сегодня.

И зря ты пытаешься спорить с WPF на их поле, преимущество HTMLayout совершенно в другом — факт использования его в многих очень известных программах тому подтверждение. Точно так же как отсутствие факта использования WPF хоть в какой-нить более-менее известной программе, кроме беты MS VS 2010.
Re[9]: WPF vs WinForms
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 29.03.10 11:38
Оценка:
Здравствуйте, vdimas, Вы писали:

I>>При всех своих тормозах она быстрее на порядок нежели GDI+ и винформс и более стабильна.


V>Где именно она быстрее? На отрисовке сложных сцен? Ну так и уточняй. А пока что обычные GUI-приложения (где обычно десяток-другой контролов) WinForms запускаются в 2-3 быстрее и окошки заметно быстрее открываются.


При чем здесь сцены ? Читай свою же писанину

V>WPF в плане быстордействия обгоняет традиционный GDI пока только там, где много контролов и визуальных эффектов. Не уверен, что пора уже все обычные приложения украшать рюшечками эстетики ради, если за это мы поплатимся заметной разницей в скорости запуска приложения. Так что на сегодняшней реальности WPF — это вовсе не тул общего назначения.
Re[18]: WPF vs WinForms
От: Cyberax Марс  
Дата: 29.03.10 11:57
Оценка:
Здравствуйте, vdimas, Вы писали:

V>И зря ты пытаешься спорить с WPF на их поле, преимущество HTMLayout совершенно в другом — факт использования его в многих очень известных программах тому подтверждение. Точно так же как отсутствие факта использования WPF хоть в какой-нить более-менее известной программе, кроме беты MS VS 2010.

AutoCAD использует WPF для интерфейса.
Sapienti sat!
Re[8]: WPF vs WinForms
От: LaPerouse  
Дата: 29.03.10 14:01
Оценка:
Здравствуйте, Cyberax, Вы писали:

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


C>>>>>Вот конкретно в SWING'е оно сделано через Ж. Бааальшую Ж.

LP>>>>В Swing-е оно сделано универсально
C>>>Универсально через Ж.
LP>>Есть другие предложения?
C>В качестве первого приближения — XAML. Байндинги там на твёрдую четвёрку сделаны.

А при чем здесь байндинги? Байндинг — это привязка данных к отображению, editors — это изменение данных. Байндинг для JTable делается через TableModel и никакого отношения к CellEditor-ам не имеет. Ты можешь сделать байнинги как в xaml или еще черт-знает где, но от editor-ов никуда не деться, если конечно тебе нужна нормальная таблица.
Вот пример. В моем приложении в таблице отображаются вектора токов, напряжений, мощностей и т. п, текстовые данные, комлексные числа и пр. Для редактирования векторов используется компонента VectorEditor. Для редактирования текстовых данных — JTextField. Для редактирования комплексных чисел — JPanel с двумя полями для ввода реальной и мнимой частей. Чем предлагаешь заменить это хозяйство?

C>>>Ага, и для активации редактора нужно на него щёлкнуть. При этом другой активный редактор выключается (т.е. редактор может быть только один). Попытки сделать редактор автоматически следующим за курсором приводят к жутким глюкам при клавиатурной навигации. И т.п.

LP>>Есть такое, но только концепция editor-ов тут не при чем.
C>Ещё как причём...

Да нет же. Editor — это лишь указание контроллеру таблицы, с помощью чего он должен менять данные определенного типа в таблице. А то, как он инициирует процесс редактирования — это реализация контроллера такая. Изменив ее, можно иметь хоть тысячу редакторов активных одновременно (если памяти хватит).

C>>>И я уж не говорю, что те же таблицы в SWINGе сделаны криво. В JTable нет возможности сделать фиксированную колонку (заголовки рядов)! Или нельзя делать rowspan/colspan'ы.

LP>>Интересно. Я как раз искал таблицу с rowspan/colspan, нашел какую-то платную хрень, но она убога. Можно эту таблицу поместить в свинговый или awt-ный контейнер?
C>HTMLayout встраивается в SWING, у нас для этого специальный слой написан.

Кстати, есть еще одна альтернатива свингу — RIA "apache pivot". На вид сыроват, но некоторые его хвалят.

LP>>Swing имеет следующие преимущества:

LP>>1. Давно существует, хорошо известны недостатки, накоплен большой опыт использования.
C>Угу, и его резюме: не надо использовать SWING.

Да я бы с удовольствием, да нет альтернативы. Ты сам это признал ниже

LP>>2. Существует большое количество компонент. Например, есть ли в HTMLayout window docable manager? Для свингов существует более десяти. Большинство полная хрень, однако есть 4 шт. промышленного качества.

C>Да ну. Как раз коммерческих контролов для SWING'а — самый мизер, особенно по сравнению с WPF.

Коммерческие контролы мне нафиг не упали. Зато есть куча открытых контролов для любых нужд.

C>Особенно прикольно это, учитывая что в Windows отказываются от docking manager'ов в пользу ribbon-like систем


То есть нет и не надо А мне без этого никак.
Кстати, какое мне дело до того, кто и от чего отказывается в Windows? Я делаю кроссплатформенные приложения, но даже если бы писал под windows, в здравом уме не стал бы использовать ribbon.
Социализм — это власть трудящихся и централизованная плановая экономика.
Re[6]: WPF vs WinForms
От: LaPerouse  
Дата: 29.03.10 14:09
Оценка:
Здравствуйте, Cyberax, Вы писали:

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


C>>>Вот конкретно в SWING'е оно сделано через Ж. Бааальшую Ж.

C>>>Скажем, как мне в таблице сделать удобное редактирование ячеек? Никак, так как угрёбищная система с editor'ами никуда не годиться. Так же, нельзя нормально делать композитные контролы и т.п.
I>>Ну что ты, swing это круто !!!
C>Уже нет HTMLayout круче.

Может, для начала сделаешь docking manager для него?
<Шепотом, чтобы враги не услышали >: В WPF они есть.
Социализм — это власть трудящихся и централизованная плановая экономика.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.