UI Databinding: альтернативы и будущее - PullRequest
11 голосов
/ 19 января 2009

UI Привязка данных, или передача информации / данных из biz-layer / datamodel приложения в UI и из UI обратно в datamodel, швы должны быть немного проигнорированы разработчиками языка и инфраструктуры.

Почти вся информация, обрабатываемая программными системами сегодня, должна быть представлена ​​в какой-то момент в цепочке обработки пользователям-людям, однако поддержка, которую мы получаем от наших систем программирования для представления информации пользователям, в основном состоит из сложных в обслуживании методов передачи, некоторые системы, использующие рефлексию без проверки во время компиляции (кто-то «изменил свойство»?) или генераторы собственного кода.

Я имею в виду Эрика Мейера, Андерса Хейлсберга и их команды, например. приложили огромные усилия для устранения несоответствия импеданса между БД, XML и кодом ... но в основном упустили интерфейс. (ну, да .net имеет привязку к данным, но попробуйте использовать ее, а затем поговорим о реальном решении) Суть в том, что за НЕ стоит рассматривать привязку данных специально как первоклассную особенность языка f.e? Почему в наших инструментах сегодня так ограничена (или нет) поддержка шаблонов MVC / MVP?

Пожалуйста, предоставьте комментарии, подсказки и указатели на альтернативные доступные концепции и, возможно, даже в стадии разработки в этой области. Есть ли какие-нибудь новые креативные и свежие идеи? Какие-нибудь полезные структуры, языковые концепции, поддерживающие привязку данных, и, возможно, инструменты, которые помогут вам справиться с привязкой данных в ваших приложениях или системах?

Ответы [ 7 ]

6 голосов
/ 21 января 2009

Связывание WPF, хотя и хорошее, слишком сложное, оно сочетает в себе функции XPath с обычным связыванием .Net и является очень гибким, но очень сложным для отладки, когда становится сложным, а также очень длинным - сколько IValueConverter делает один кусок кода нужно?

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

2 голосов
/ 19 января 2009

Привязка данных в Какао и Objective-C очень жива и здорова. Частично это связано с тем, что он построен на основе кодирования значения ключа и наблюдения значения ключа, которые являются очень надежными и хорошо продуманными функциями в Какао. Он также хорошо интегрирован во многие новые технологии, которые разрабатывает Apple, такие как Core Data.

1 голос
/ 27 декабря 2009

SWT / JFace, уровень пользовательского интерфейса Eclipse, был недавно расширен с возможностями связывания данных пользовательского интерфейса. Смотри http://wiki.eclipse.org/index.php/JFace_Data_Binding

1 голос
/ 01 декабря 2009

Я нахожусь на поздних стадиях проекта переноса, в котором код, сгенерированный AppMaker, переносится из графического интерфейса Macintosh на основе C в WPF.

Стиль генерации кода в AppMaker значительно опередил свое время - 15 лет назад он генерировал код на основе моделей с привязкой данных и подходом на основе свойств. Недостатком кода на С является то, что вся сантехника была разоблачена.

Этот проект был увлекательным - перенести архитектуру с чистой привязкой и структурой команд (хотя и безобразным кодом) в WPF. Я на самом деле написал новый генератор кода AppMaker для экспорта исходной объектной модели в XML и с тех пор работал с Ruby для генерации XAML, C # и C ++ / CLI.

Я очень впечатлен тем, насколько хорошо работает модель привязки данных в WPF, хотя интересно найти точку соприкосновения с XAML против C #. Как объяснялось в недавней презентации DevJam 1009 *, мы выбрали трехслойный подход

  1. очень худой XAML для укладки,
  2. C # для переплета,
  3. C ++ / CLI для реализации ViewModel.

Я с давних времен являюсь поклонником привязки - моя платформа C ++ OOFILE впервые использовала подход привязки для упрощения соединений базы данных с формами в различных платформах GUI в 1997 году.

В качестве интереса я приобрел AppMaker у первоначального владельца в США после нескольких лет совместной работы, где я писал генераторы кода для Windows. Кажется почти невероятным, что небольшая компания в Перте, Западная Австралия, со сложным графическим интерфейсом, сгенерированным AppMaker для порта, должна найти оставшегося эксперта AppMaker в мире на расстоянии около 30 миль!

1 голос
/ 24 июля 2009

В Python вы можете использовать Enthought Traits для этого. Вы определяете модель, и эта модель уже содержит все знания и логику, поэтому вы можете создать для нее редактор с одной строкой кода.

1 голос
/ 20 января 2009

Модели связывания данных и пользовательского интерфейса в WPF просто удивительны. Вы можете связывать с методами объектов, асинхронно связывать, однонаправленно (от источника к цели или наоборот) или двунаправленно, связывать с другими элементами интерфейса на экране.

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

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

1 голос
/ 19 января 2009

Другими платформами, поддерживающими привязку данных, являются Adobe Flex и Microsoft WPF.

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