Интерфейс - это, пожалуй, одна из тех вещей, которые сильнее всего отличают настольные и web-приложения друг от друга. Может ли интерфейс настольного приложения быть похожим на web-интерфейс настолько, что пользователь не будет чувствовать отличий? Вполне - если интерфейс настольного приложения будет также написан на HTML.
Интерфейс настольного приложения
на HTML?
Да-да, именно на HTML. И нет в этом ничего крамольного. Скажете, вам не нравятся интерфейсы современных web-приложений? Сомневаюсь. Сайты тратят массу средств на дизайн, но создатели настольных программ тратят на него ещё больше, получая куда более скромный результат. Полагаете, что красивый интерфейс нужен только разным улиткам вроде системных твикеров и прочих не слишком обременённых полезной функциональностью программ? Напрасно вы так думаете. Корпорация Microsoft тоже долгие годы придерживалась в интерфейсе традиционных серых цветов, одинаково мало раздражающих всех пользователей. Но, уже начиная с Windows XP, всё кардинально поменялось. Про Windows Vista и выходящую в этом году Windows 7, из-под которой, я, кстати, и пишу эту статью, и вовсе говорить нечего.
Между тем сегодня даже вполне серьёзные разработчики совсем не игрушечных приложений стараются не обходить стороной вопрос их эстетического восприятия пользователем. Потому что, в конце концов, именно пользователь выбирает, покупать или нет то или иное приложение. И если приложение вашего конкурента выглядит привлекательнее, особенно если вы работаете не на корпоративном рынке, а продаёте продукты индивидуальным пользователям, то налицо явное конкурентное преимущество его программного продукта перед вашим. Посмотрите на последние версии Norton Antivirus (см. скриншот). Никто не назовёт этот программный продукт несерьёзным. Тем не менее, его интерфейс сделан в лучших традициях web-сайтов и весьма привлекателен для пользователей. Сделан же интерфейс популярного антивирусного решения с использованием библиотеки HTMLayout, то есть, фактически, написан именно на HTML. Ну а если уже компания Symantec использует эту библиотеку в своих разработках, то нам с вами тоже будет явно не вредно ознакомиться с её возможностями.
HTMLayout: где взять?
Для начала, конечно же, о том, откуда можно эту библиотеку раздобыть. Её можно найти на официальном сайте компании Terra Informatica, её разработавшей: terrainformatica.com/htmlayout. Сама по себе библиотека, как бы, бесплатна, но для использования её в коммерческих приложениях настойчиво рекомендуется купить техническую поддержку, которая стоит от $140 до $350 на одного разработчика за полгода. Понятно, что чем больше разработчиков, тем дешевле техническая поддержка в расчёте на каждого из них. За эти деньги Terra Informatica гарантирует ответы по электронной почте или в устной форме в течение одного рабочего дня, а также исправление найденных в HTMLayout багов в течение трёх рабочих дней.
Ещё на сайте есть любопытная статистика, утверждающая, что в настоящий момент библиотека HTMLayout установлена и используется на более чем 6,7 млн пользовательских компьютеров во всём мире. В общем-то, ничего удивительного в этом нет, если такие гиганты, как Symantec, включают эту библиотеку в свои продукты.
Что такое HTMLayout?
Итак, мы с вами, наконец-то, дошли до ответа на вопрос, что же такое HTMLayout. Вкратце можно сказать, что HTMLayout - это движок рендеринга HTML, быстрый и компактный, который позволяет построить интерфейс настольного приложения на основе HTML-кода. Быстрота рендеринга - одно из главных преимуществ HTMLayout. Другое же состоит в том, что библиотека изначально была "заточена" под создание HTML-интерфейсов настольных приложений, а потому подходит для этого куда лучше, чем чисто браузерные движки вроде WebKit или Gecko.
В чём именно выражается ориентация библиотеки на создание интерфейсов именно настольных приложений? Первый момент заключается в том, что HTML и CSS в ней специально расширены - например, CSS поддерживает двухмерную разметку, позволяя настраивать выравнивание по вертикали; есть поддержка "расширяемого фона"... В этом, конечно, есть определённые минусы, потому что нужно изучать особенности диалекта HTML, используемого в HTMLayout. Но это, в общем-то, окупается сторицей, потому что, единожды изучив этот диалект, можно использовать все его преимущества для создания максимально комфортного для пользователя интерфейса программы. Второй момент в обеспечении поддержки именно создания интерфейсов десктоп-программ заключается в том, что в библиотеке присутствуют API, позволяющие задать поведение HTML-элементов и их реакцию на определённые события. Наверное, это даже более важно, чем специальные теги в HTML и специальные возможности CSS.
Для того, чтобы эффективно работать с HTMLayout, нужно представлять себе, что такое DOM. DOM - это Document Object Model, объектная модель отображаемого HTML-документа. Зачастую программистам, создающим настольные приложения и впервые сталкивающимся с DOM, бывает довольно непросто приспособиться к такому способу взаимодействия с элементами управления, образующими интерфейс приложения. Однако использование HTML диктует свои условия, и с DOM'ом придётся примириться. Впрочем, рассказывать здесь о DOM подробно я, честно говоря, не вижу смысла. Если вы будете работать с HTMLayout вплотную, то сами во всём достаточно быстро разберётесь.
Несколько принципиальных моментов
Выше я уже рассказывал о многих плюсах, которые благодаря HTMLayout получает разрабатываемое приложение. Тем не менее, нужно подробнее остановиться на особенностях, которые отличают HTMLayout от движков HTML-рендеринга, используемых в браузерах.
Во-первых, используя HTMLayout, вы не привязываетесь ни к какому конкретному браузеру. Если вы, например, внедряете в своё приложение HTML-интерфейс на основе предоставляемого Microsoft элемента управления WebBrowser, то автоматически возникает необходимость того, чтобы у пользователя был установлен браузер Internet Explorer. Пока что с этим проблем, в общем-то, нет, но в обозримом будущем, когда будет широко распространена Windows 7, позволяющая не устанавливать этот браузер, могут возникнуть разные сложности. Опять-таки, Internet Explorer у пользователя может оказаться слишком старой версии, что тоже может создать определённые проблемы.
Если вы решите использовать в сравнительно небольшом по размеру приложении движок Gecko, то придётся приготовиться к тому, что из-за этого размер дистрибутива возрастёт, и возрастёт ощутимо. С HTMLayout этой проблемы вы сможете избежать: вся библиотека помещается в одном небольшом DLL-файле (его размер - немногим более шестисот килобайт). Конечно, с другой стороны, сегодня и размеры винчестеров, и скорости подключения к Интернету уже не те, что десять лет назад, и особого смысла в тотальной экономии на размерах программы, в общем-то, как бы и нет... Но когда размер дистрибутива увеличивается в разы из-за второстепенных библиотек, это тоже не совсем правильно.
Наконец, самый, пожалуй, существенный момент. HTMLayout даёт вам возможность полностью переложить управление политикой безопасности (например, загрузкой удалённых ресурсов) на ваше приложение. В случае, если вы встраиваете в него движок рендеринга из Internet Explorer'а или Firefox'а, реализовать это будет сложнее.
Ещё одна полезная возможность HTMLayout - это поддержка смены интерфейса приложения с использованием стандартных системных схем оформления. Если пользователю не понравится сделанный вашими дизайнерами интерфейс, он сможет быстро переключиться на стандартное системное оформление, которое гарантированно не будет его раздражать. Одновременно с этим вы можете быстро менять и дизайнерское оформление простой сменой CSS'ов, что весьма полезно не только с точки зрения эстетики, но и с точки зрения того, что в английском языке называется accessibility. Вы можете легко сделать режим высокой контрастности для пользователей с плохим зрением и при этом вам не придётся вносить никаких изменений в код самого приложения. Удобно? Мне кажется, более чем.
Вместо вывода
Что ж, сказано всего об HTMLayout было немало... Выбор, конечно, как всегда, за вами. Но если вы всё-таки решили, что вашему приложению не помешает интерфейс, написанный на HTML'е, то рекомендую хотя бы ознакомиться с этой библиотекой. По крайней мере, посмотреть примеры, входящие в HTMLayout SDK.
Для тех, кто ещё сомневается, подкину несколько интересных ссылок. По первой из них (guicci.ru/2007/10/28/htmlayout-web-20-prishel-na-desktop) вы найдёте интервью с создателем библиотеки HTMLayout Андреем Федонюком. Там можно прочитать не только о самой библиотеке, но и о различных аспектах разработки графического пользовательского интерфейса (GUI), что будет не только интересно, но и очень полезно. Если вы решите программировать с использованием этой библиотеки, но поддержку купить не получится, пригодится этот форум: www.rsdn.ru/forum/htmlayout. Здесь русскоязычные программисты обсуждают проблемы, возникающие при использовании HTMLayout, и по возможности решают их сообща. Ну и, наконец, поможет wiki на официальном сайте компании Terra Informatica - www.terrainformatica.com/wiki.
Успехов вам в освоении HTMLayout!
Вадим СТАНКЕВИЧ,
dreamdrusch@tut.by