Пользовательский интерфейс: альтернативы и будущее
UI. Сопоставление информации о передаче информации/данных из уровня biz-layer/datamodel приложения в пользовательский интерфейс и из пользовательского интерфейса обратно в datamodel, швы должны быть немного проигнорированы разработчиками языка и каркаса.
Почти вся информация, обрабатываемая программными системами сегодня, должна быть представлена в какой-то момент в цепочке обработки для пользователей, однако поддержка, которую мы получаем от наших систем программирования, чтобы предоставить информацию пользователям, в основном состоит из трудноподдерживаемых методов передачи, некоторые системы, использующие отражение без проверки соответствия ( "propertychanged" any?), или генераторы условных кодов.
Я имею в виду Эрика Мейера, Андерса Хейлсберга и их команд, т.е. приложили огромные усилия для устранения несоответствия импеданса между БД, XML и кодом... но в большинстве своем оставил UI.
(ну да .net имеет привязку данных, но попытайтесь ее использовать, а затем поговорите о реальном решении)
Дело в том, что рационально, если не обрабатывать привязку данных специально как первоклассную особенность языка f.e? Почему в наших инструментах сегодня есть только ограниченная (или нет) поддержка шаблонов MVC/MVP?
Просьба представить комментарии, подсказки и указатели на доступные альтернативные концепции и, возможно, даже работать в этой области. Есть ли даже новые творческие и свежие идеи? Любые полезные рамки, языковые концепции, поддерживающие привязку данных, и, возможно, инструменты, которые помогут вам обрабатывать привязку данных в ваших приложениях или системах?
Ответы
Ответ 1
Связывание WPF, хотя и является хорошим, слишком сложное, оно сочетает в себе функции XPath с обычным привязкой .Net и является супер гибким, но очень сложным для отладки, когда оно становится сложным, а также очень долговечным - сколько IValueConverter делает один кусок кода нужно?
DependencyObject из WPF является блестящим, хотя - свойство, которое управляет памятью разумно, построило уведомление об изменениях - это хороший старт для привязки и свойств в целом.
Ответ 2
Связывание данных в Cocoa и Objective-C очень живое и здоровое. Частично это связано с тем, что оно построено на основе кодирования ключевых значений и наблюдения ключевых значений, которые являются очень прочными и хорошо продуманными функциями в Cocoa. Он также хорошо интегрирован во множество новых технологий, которые Apple разрабатывает, таких как Core Data.
Ответ 3
Другими структурами, поддерживающими привязку данных, являются Adobe Flex и Microsoft WPF.
Ответ 4
Модели привязки данных и пользовательского интерфейса в WPF - это не что иное, как удивительное. Вы можете привязываться к методам объектов, связывать асинхронно, связывать однонаправленную (от источника к цели или наоборот) или двустороннюю направленную и связывать с другими элементами интерфейса на экране.
Вы можете указать DataTemplates, которые управляют отображением определенного типа. Вы можете определить триггеры, которые позволяют изменять пользовательский интерфейс на основе изменений связанных объектов (или в другом месте пользовательского интерфейса). Короче говоря, вы действительно должны смотреть на WPF, если вы чувствуете, что состояние представления пользовательского интерфейса/привязки отсутствует.
Вот недавний post, который иллюстрирует мощь WPF, где с помощью базовых конструкций вы можете отображать карту с координатами на ней.
Ответ 5
В Python для этого можно использовать Enthought Traits. Вы определяете модель, и эта модель уже содержит все знания и логику, чтобы вы могли создать для нее редактор с помощью одной строки кода.
Ответ 6
Я нахожусь на поздних этапах проекта портирования, используя код, созданный AppMaker, из графического интерфейса Macintosh на основе C в WPF.
Стиль генерации кода AppMaker намного опередил свое время - 15 лет назад он сгенерировал модельный код с привязкой данных и подход, основанный на свойствах. Недостатком кода C является то, что все сантехника была обнаружена.
Этот проект был увлекательным - с архитектурой с чистой привязкой и структурой команд (хотя и уродливым кодом) в WPF. Я фактически написал новый генератор кода AppMaker для экспорта исходной объектной модели в XML и работал с ней с Ruby для генерации XAML, С# и С++/CLI с тех пор.
Я очень впечатлен тем, насколько хорошо работает модель привязки данных в WPF, хотя найти сладость того, что добавить в XAML vs С#, интересно. Как пояснялось в презентации недавней презентации DevJam, мы решили использовать трехслойный подход
- очень худой XAML для стилизации,
- С# для привязки,
- С++/CLI для реализации ViewModel.
Я являюсь фанатом связывания с обратной стороны - моя платформа С++ OOFILE сначала использовала метод привязки для упрощения базы данных подключения к формам в разных Графические интерфейсы GUI около 1997 года.
Как интересный момент, я приобрел AppMaker у первоначального владельца в США, после нескольких лет совместной работы, где я написал генераторы кодов Windows. Кажется почти невероятным, что небольшая компания в Перте, Западная Австралия, со сложным графическим интерфейсом AppMaker для порта, должна найти оставшегося эксперта AppMaker в мире, который живет примерно в 30 милях отсюда.
Ответ 7
SWT/JFace, слой пользовательского интерфейса Eclipse, недавно был расширен с возможностями привязки данных UI. См. http://wiki.eclipse.org/index.php/JFace_Data_Binding