Десктопное приложение или веб-клиент – вот в чем вопрос!
Захотелось мне что-то провокационной статьи, так сказать взбодрить чем-то наше профессиональное сообщество. Хватит заумных статей и философских рассуждений. Итак, делимся на две команды: «любители Соса-Cola – горнолыжники – виндсерферы» против «любители Pepsi – сноубордисты – кайтеры». Счет на табло 0-0, начинаем!
«То о бэнтли я мечтал, то о мазерати,
То рыбалка, то футбол, то с друзьями пати…»
Группа Жуки
Захотелось мне что-то провокационной статьи, так сказать, взбодрить чем-то наше профессиональное сообщество. Хватит заумных статей и философских рассуждений. Итак, делимся на две команды: «любители Соса-Cola – горнолыжники – виндсерферы» против «любители Pepsi – сноубордисты – кайтеры». Счет на табло 0-0, начинаем!
Правила игры и критерии оценок
Сначала давайте определимся, что же будем считать десктопным приложением, а что – веб-клиентом:
- Десктопное приложение – клиентское программное обеспечение, реализующее Windows Forms интерфейс. Приложение инсталлируется на рабочую станцию пользователя и запускается локально. Или запускается удаленно. Допускается вариант запуска такого приложения с использованием ввода URL адреса в браузере, но от этого веб-клиентом не становится, также как и благодаря запуску с помощью различного рода эмуляторов;
- Веб-клиент – клиентское программное обеспечение, представляющее собой браузер и использующее http/https протоколы. Приложение не требует инсталляцию или загрузку программных модулей на рабочую станцию пользователя. Допускается установка дополнительных общесистемных библиотек и использование защищенных сетевых протоколов, и от этого десктопным приложением не становится.
При использовании любого из перечисленных клиентских приложений может применяться трехзвенная архитектура. Аллилуйя! Термины «толстый» и «тонкий» клиент сюда не вплетаем. Веб-клиент можно создать совсем не «тонким», ровно также как и с десктопного приложения по максимуму снять обработку бизнес-логики.
Что каждый из пользователей, владельцев системы, архитекторов и сотрудников служб безопасности ждет от программного продукта и клиентского приложения:
- функциональность, простота использования и быстродействие;
- возможность кастомизации и стилизации;
- мобильность и легкость обновления;
- масштабируемость и кроссплатформенность;
- безопасность и надежность.
Для простоты будем считать, что каждое удачное попадание – 1 очко, так как бессмысленно сравнивать, что важнее – мобильность или безопасность.
Надеюсь, разобрались, и можно начинать «играть». Звучат гимны команд, понеслась…
Первый период
В каждой второй конкурсной документации (если не чаще) в разделе технических требований можно заметить требования к наличию веб-клиента или веб-доступа. Возникает резонный вопрос «Вам вот это зачем, помимо того, что это модно?»
Как правило, обоснования такие:
- мобильность (можно войти в систему с любого компьютера подключенного к интернету);
- легкость развертывания и обновления (не требуется переустановка программных модулей на рабочих станциях пользователей);
- простота создания тестовой и продуктивной среды (на сервере приложений развернуто два веб-приложения к одной БД, таким образом, тестирование новых версий программного обеспечения отдельными группами пользователей становится удобным и сравнительно «безопасным», так как всегда можно вернуться к действующей версии системы обратившись к ней по другому адресу);
Часть этих преимуществ можно достичь и в варианте с десктопным приложением используя RDP доступы, доменные политики и прочее. Но в целом, удар из штрафной площади и 1-0 в пользу веб-клиента. Свисток, центр поля.
Безопасность и надежность – очень серьезный вопрос. Некоторые организации принципиально не хотят и не предоставляют возможность работы в корпоративных системах за пределами своего домена. Необходимость применения средств криптографической защиты информации (СКЗИ) и электронной подписи (ЭП) уже давно никому доказывать не надо, за нас это делают регуляторы. Для использования данных технологий необходимо обращаться к сторонним библиотекам, не все веб-приложения это «любят» и имеют ограничения. Стабильность работы самих браузеров также является потенциально узким местом, причем повлиять на это разработчик бизнес-приложения может не всегда. Оффлайн работа, объективно, чаще и проще реализуются с использованием десктопных приложений. В принципе отдельных организаций пока еще пугает работа в браузере (да-да в том самом, в котором сотрудники просиживают часами в социальных сетях, выкладывая туда всю свою подноготную). Это прорыв по флангу и счет 1-1. Звучит свисток, первая половина игры закончена, команды уходят в свои СЭД закрывать накопившиеся поручения.
Второй период
Все покупатели хотят видеть «свой» продукт, отличный от множества других. Конечно, сложно на это надеяться, покупая массовый коробочный продукт. А сделать его «под заказ» значительно дороже и рисково. Но только не в IT области.
Повальная мода на скины, по-моему, уже прошла, или я постарел, и иметь не классическую «морду» аудио-проигрывателя мне уже не принципиально. Тем не менее, возможность изменить цветовую раскраску, логотипы, иконки, шрифты базовых интерфейсов – хороший бонус для клиента. Десктопные приложения могут предоставлять возможность применения цветовой темы, настройки отдельных интерфейсных элементов, но веб-приложения, применяя каскадные таблицы стилей, с этим справляются явно лучше. Возможность кастомизации определяется степенью развития самого программного продукта и тип клиентского приложения тут не должно иметь особой роли. Счет 2-1 и «браузерники» вырываются вперед.
Функциональность – важнейшее требование к любому программному продукту. Исторически считается, что десктопные приложения более функциональны и эргономичны. Если пытаться разрабатывать веб-клиент с нуля, то так оно и будет. Но с годами были разработаны целые интерфейсные библиотеки, позволяющие творить «чудеса»:
- иерархические списки с возможностью перемещения колонок и наложения фильтров;
- функции drag&drop к любым элементам с любыми визуальными эффектами;
- интерактивные панели и деловая графика;
- встраивание аудио и видео проигрывателей (хотя кому-то больше нравится слово «выигрыватель»);
- обработка всевозможных событий;
- и многое многое другое.
Про визуальную красоту реализации я и говорить не буду – там все очень достойно. Подозреваю, что компании больше и охотнее разрабатывают новые интерфейсные элементы под браузеры, чем для традиционных win32-приложений.
Современный пользователь компьютера не меньше времени проводит в браузере, чем тратит его на работу с десктопным приложением. И первый вариант работы сложнее ему не кажется. Зато возможность масштабирования в браузере, отдельным категориям пользователей, приносит ощутимую пользу. Опасность у ворот команды веб-клиента была устранена. Счет по-прежнему 2-1.
Корпоративная информационная система растет вместе с компанией. А значит, количество рабочих мест увеличивается, расширяется линейка клиентских устройств для работы в системах. Мировые лидеры разрабатывают новые операционные системы и платформы, и угнаться за ним не так просто. А надо ли? Может быть, доверим им обеспечить совместимость распространенного программного обеспечения, а если такая совместимость не возможна, в их же интересах предоставить альтернативу. Вот такими финтами и перепасовками в центре поля одна из команд пробирается к воротам соперника.
Разрабатывая веб-приложения с соблюдением стандартов можно надеяться, что программное обеспечение будет корректно работать во всех браузерах, по крайней мере, в первой пятерке. Чуда тут не происходит, и существует масса нюансов связанных с различной интерпретацией одной и той же разметки. Разработчики каждый день видят в системах баг-трекинга заявки из разряда «функция А не корректно работает в браузере Б, а в остальных браузерах все ОК». Но эти труды стоят получаемых бонусов.
Когда пользователь заходит на рядовой публичный сайт в Интернете он надеется увидеть корректное представление страниц с сохранением всей заложенной функциональности. Причем, посетитель сайта не хочет знать «под какие устройства» сайт создавался (стационарный компьютер или ноутбук, планшет или смартфон), это его вообще не должно беспокоить. Почему же ровно также не рассуждать пользователю корпоративной информационной системы. Зачем пользователю, находящемуся вне офиса и имеющему на руках планшет за 1000$ переживать, что он не сможет исполнить поручение, выданное ему в СЭД. Надо ли сотруднику при выборе планшета изучать вопрос, а сможет ли он конкретно с этого планшета (с его операционной системой), корректно работать в десятках корпоративных систем своей организации. А если завтра он купит другой планшет (с другой программной платформой), система на нем будет ровно такой же, к которой он привык или уже другой, а придется что-то заново скачивать и устанавливать?
В идеале, я бы хотел, что бы разработчики бизнес-приложений сосредоточились на самих продуктах, а не тратили время на разработку одного и того же под разные платформы (те же яйца только в профиль). И одним из путей вижу применение в качестве клиентских приложений полнофункциональных веб-клиентов с адаптивным веб-дизайном. Это красивая комбинация заканчивается неберущимся ударом, и счет становится 3-1. Веб-клиент заслуженно побеждает десктопное приложение. Крики радости, брызги шампанского, смазливые девицы окружают победителей.
Читайте также: |
Послесловие
После матча болельщики еще долго спорили, обсуждали острые моменты и не объективное судейство, но счет на табло уже ничто не изменит. Ставки сделаны господа, ставок больше нет!
Комментарии 8
Это как?
Потому что это корпоративная, а не консьюмерская система. Ей вполне можно быть заточенной под ограниченный набор браузеров и не поддерживать, например, "старую" Оперу.
Андрей, а зачем же Вы вырвали две разных фразы и поставили их вместе, после такой операции конечно ответ только один "никак", ну он без этих манипуляций он был бы таким же :)
Все таки Вы сами пишите "набор браузеров", значит желание иметь не один конкретный браузер и у вас есть, собственно об этом речь.
А можно и не упрощать. Можно, например, использовать WPF клиент. Который может запускаться в контексте браузера (но не в песочнице). А можно Silverlight, который при этом может быть запущен вне браузера. Тоже самое есть и у Java-стороны.
Старая парадигма стремительно теряет позиции (если смотреть на весь массив приложений). Я как довольный (честно! :) пользователь всяких Windows 8 phone уже давно не понимаю что за приложение передо мной - десктоп или веб. Да и не делю я их так. Все работает через облака и данные где-то крутятся - это да. При этом и локально что-то работает - тоже да. Когда на это перейдет бизнес-сегмент - это действительно только вопрос "когда".
Если у кого-то есть сомнения в трендах - вот самое что ни на есть мега приложение из корпоративного сектора - http://www.3ds.com/products/catia. Новый клиент - WPF. Работает и в браузере и как хотите. Можно, например, самолет там спроектировать... а вычисления в облаке, конечно.
Не так. Вообще идти именно от набора браузеров неправильно. Если посмотреть на рынок корпоративного ПО в части веб-приложений, то можно заметить, что многие системы были изначально заточены только под Windows/IE. Что было вполне разумно и обосновано. Но в современном мире вам надо поддерживать как минимум Mac, а может еще и iPad. Поэтому уже получается зоопарк браузеров (IE + Safari). Потом оказывается, что уже сразу работет или требует совсем минимальной доработки поддержка Chrome. А потом кто-нибудь приходит и говорит: "Ну что уж теперь, давайте заодно и Firefox прикрутим". Т.е. настоящая кросс-браузерность появляется только на этом последнем этапе.
Слава, написано стильно, но если из красивого рассказа выдернуть суть, то получится та пресловутая "простыня" с плюсами и минусами, которую составляют некоторые заказчики при выборе СЭД. И конечно же больше плюсов стоит у нужного им продукта. Если детально разобрать все критерии оценки, то по-настоящему важные критерии для пользователя не были рассмотрены.
1. Быстродействие. Десктопный клиент при прочих равных быстрее работает, чем веб-клиент.
2. Юзабилити. У десктопов возможности в этом смысле опережают возможности веб-клиентов.
3. И самое главное (не забываем, что мы не в общем рассуждаем, а применительно к СЭД) - работа с файлами. Здесь веб отстает на порядок по удобству для пользователя.
Ну и в конце пара вопросов.
Почему разработчики мобильных приложений создают много различных десктопных решений под каждую ОС (тратя много сил и денег) вместо того чтобы написать один веб-клиент для всех?
Почему даже новостные сайты для iOS и Android создают десктопные приложения, ведь у них уже есть прекрасное веб-приложение?
Поправка: толстый дектопный клиент.
Можно написать тонкий десктопный клиент и тогда все станет не так однозначно.
Так мобильных или десктопных? ;-)
Все-таки я настаиваю на своем утверждении.
1. Если упрощать изложение темы, то, например, при открытии карточки тонкий десктопный клиент грузит только данные, а веб-клиент еще разметку и другую служебную информацию.
2. Кэширование в десктопном клиенте существенно более "продвинутое".
Я в этом сообщении делю приложения для мобильных устройств (планшеты и смартоны) на веб-приложения и десктопные. Применительно к мобильным устройствам терминология оказывается не очень корректной, но суть все равно ясна и понимается проще, т.к. мы тогда остаемся в контексте статьи и не меняем исходную терминологию автора.
Нет. "Может грузить", а не "грузит". Возьмите, например, WPF и Silverlight - различия между десктоп- и веб-клиентами могут быть вовсе не так очевидны, как это было лет 5-7 назад. Да и банальный AJAX вкупе с кешированием CSS и прочими новомодными штуками никто не отменял. Равно, как и загрузку описания GUI (тех же карточек) с сервера в толстом клиенте.