Веб-технологии в приложениях с графическим интерфейсом - PullRequest
4 голосов
/ 06 января 2011

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

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

Я уже подтвердил, что подход возможен с использованием PyQt.Контент может отображаться из файловой системы или из строк, а запросы URL (изображения или щелчки) могут быть захвачены и обработаны обработчиками событий формы.Поддерживаются CSS и JavaScript, возможно, с некоторыми ограничениями.

        # ...
        self.webView.page().setLinkDelegationPolicy(
            QtWebKit.QWebPage.DelegateExternalLinks
            )
        #... 

class TotiMainWindow(QtGui.QMainWindow):
    def linkClicked(self, url):
        pass # events arrive here

Примечание. Этот вопрос отличается от этого и этого , сделанного ранее,среди прочего, потому что нет необходимости использовать веб-технологии в графическом интерфейсе, но есть требование, чтобы приложение работало без доступного сетевого подключения и хорошо интегрировалось с рабочим столом по умолчанию на разных платформах, без предыдущих требований к инфраструктуре (нет.NET, Java, браузеры или серверы баз данных).

Примечание: я разместил другую версию этого вопроса на PMS, но нашел там очень мало опыта с этим подходом.

Заключительная заметка

Я только что нашел большую часть информации, которую искал, в серии сообщений в блоге Андре Парейса .

Ответы [ 5 ]

4 голосов
/ 06 января 2011

Я думаю, что наибольшим преимуществом использования веб-разметки, такой как HTML / CSS и других веб-технологий, является то, что настольные приложения вполне могут иметь свои дни.

Как мы уже говорили, инженеры Google работают над операционной системой Chromium, которая по сути состоит из одного приложения с графическим интерфейсом ... браузера ...

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

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

Обновление : Несколько лет назад мы разработали Agent Desktop для нашего центра обработки вызовов, который по сути является локальным приложением, открывающим сокеты для интеграции с телефонной системой.Пользовательский интерфейс, который используют агенты, построен на HTML, CSS и JavaScript, и его впечатляет.Когда мы выпустили наше последнее обновление в 2010 году с профессиональным редизайном CSS, все наши агенты были очень впечатлены не только тем, насколько легко было взаимодействовать, но также и тем, насколько простым было использование.

В будущем мы будем портироватьэто 100% для браузера, но сейчас это должно быть локальное приложение из-за интеграции COM с телефонной системой.

2 голосов
/ 14 января 2011

Мы сделали именно это для проекта, когда Windows XP была новой.

Это дало моей команде несколько преимуществ:

  • Красивый интерфейс с относительно небольшими усилиями
  • Простое и последовательное изменение стиля интерфейса пользователя с помощью CSS
  • Относительно простая интеграция с C ++ (вызов функций из пользовательского интерфейса и наоборот)

Недостатки, которые мы видели, были:

  • Некоторые не очень хорошие брандмауэры считают веб-запрос доступа к внутренним ресурсам (т. Е. Другим html-страницам в пользовательском интерфейсе)
  • Добавление и доступ к необходимым ресурсам в некоторых случаях может быть немного громоздким
  • В Internet Explorer можно было установить свойства, которые не позволяли бы запускать JS в приложении

Обратите внимание, что некоторые программы Windows XP: s используют этот подход.

Это, вероятно, лучше всего работает с небольшими, более похожими на Волшебника частями пользовательского интерфейса (из которых он почти полностью состоял).

С тех пор я на самом деле не участвовал в проектах пользовательского интерфейса, поэтому я не могу точно сказать вам, является ли этот подход все еще действующим ... Я знаю, что приложения на основе MFC позволят вам использовать диалоги на основе HTML.

1 голос
/ 13 января 2011

В аналогичной ситуации в 2005 году я создал автономное веб-приложение с использованием схем XForms, CSS, JavaScript, XML и XML для автономного поиска и проверки данных.С хорошим XForms -> HTML + JS трансформером (Chiba) он выполнил свою работу без исправлений ошибок после первого выпуска.Он использовался в течение 6-12 месяцев (IIRC) примерно дюжиной инженеров для проекта, собирающего данные испытаний в туннеле Большого адронного коллайдера.Самым большим сюрпризом этого проекта было то, сколько вы получаете бесплатно при переходе на веб-платформу, даже для автономного использования.Настоятельно рекомендуется.

0 голосов
/ 14 января 2011

Существует довольно много приложений, созданных поверх платформы Mozilla.Это не 100% веб-технология, так как вместо HTML вы используете XUL на основе XML, но остальное действительно веб-стек (JavaScript, CSS).Самым успешным из них является OpenKomodo и его коммерческий старший брат Komodo IDE .

С другой стороны, что касается Qt, новейшая версия 4.7можно построить графический интерфейс, используя QML язык.Не позволяйте имени вводить вас в заблуждение, это не разметка, это на самом деле JavaScript с расширениями, специфичными для приложения.

0 голосов
/ 14 января 2011

Основная проблема заключается в том, что это снижает вашу скорость разработки или качество вашего пользовательского интерфейса. Много. Если вы не используете Seaside, гораздо быстрее разработать приложение для настольного компьютера.

...