десктоп и веб приложения
Десктопное приложение или веб-клиент – вот в чем вопрос!
Захотелось мне что-то провокационной статьи, так сказать взбодрить чем-то наше профессиональное сообщество. Хватит заумных статей и философских рассуждений. Итак, делимся на две команды: «любители Соса-Cola – горнолыжники – виндсерферы» против «любители Pepsi – сноубордисты – кайтеры». Счет на табло 0-0, начинаем!
«То о бэнтли я мечтал, то о мазерати,
То рыбалка, то футбол, то с друзьями пати…»
Группа Жуки
Захотелось мне что-то провокационной статьи, так сказать, взбодрить чем-то наше профессиональное сообщество. Хватит заумных статей и философских рассуждений. Итак, делимся на две команды: «любители Соса-Cola – горнолыжники – виндсерферы» против «любители Pepsi – сноубордисты – кайтеры». Счет на табло 0-0, начинаем!
Правила игры и критерии оценок
Сначала давайте определимся, что же будем считать десктопным приложением, а что – веб-клиентом:
При использовании любого из перечисленных клиентских приложений может применяться трехзвенная архитектура. Аллилуйя! Термины «толстый» и «тонкий» клиент сюда не вплетаем. Веб-клиент можно создать совсем не «тонким», ровно также как и с десктопного приложения по максимуму снять обработку бизнес-логики.
Что каждый из пользователей, владельцев системы, архитекторов и сотрудников служб безопасности ждет от программного продукта и клиентского приложения:
Для простоты будем считать, что каждое удачное попадание – 1 очко, так как бессмысленно сравнивать, что важнее – мобильность или безопасность.
Надеюсь, разобрались, и можно начинать «играть». Звучат гимны команд, понеслась…
Первый период
В каждой второй конкурсной документации (если не чаще) в разделе технических требований можно заметить требования к наличию веб-клиента или веб-доступа. Возникает резонный вопрос «Вам вот это зачем, помимо того, что это модно?»
Как правило, обоснования такие:
Безопасность и надежность – очень серьезный вопрос. Некоторые организации принципиально не хотят и не предоставляют возможность работы в корпоративных системах за пределами своего домена. Необходимость применения средств криптографической защиты информации (СКЗИ) и электронной подписи (ЭП) уже давно никому доказывать не надо, за нас это делают регуляторы. Для использования данных технологий необходимо обращаться к сторонним библиотекам, не все веб-приложения это «любят» и имеют ограничения. Стабильность работы самих браузеров также является потенциально узким местом, причем повлиять на это разработчик бизнес-приложения может не всегда. Оффлайн работа, объективно, чаще и проще реализуются с использованием десктопных приложений. В принципе отдельных организаций пока еще пугает работа в браузере (да-да в том самом, в котором сотрудники просиживают часами в социальных сетях, выкладывая туда всю свою подноготную). Это прорыв по флангу и счет 1-1. Звучит свисток, первая половина игры закончена, команды уходят в свои СЭД закрывать накопившиеся поручения.
Второй период
Все покупатели хотят видеть «свой» продукт, отличный от множества других. Конечно, сложно на это надеяться, покупая массовый коробочный продукт. А сделать его «под заказ» значительно дороже и рисково. Но только не в IT области.
Повальная мода на скины, по-моему, уже прошла, или я постарел, и иметь не классическую «морду» аудио-проигрывателя мне уже не принципиально. Тем не менее, возможность изменить цветовую раскраску, логотипы, иконки, шрифты базовых интерфейсов – хороший бонус для клиента. Десктопные приложения могут предоставлять возможность применения цветовой темы, настройки отдельных интерфейсных элементов, но веб-приложения, применяя каскадные таблицы стилей, с этим справляются явно лучше. Возможность кастомизации определяется степенью развития самого программного продукта и тип клиентского приложения тут не должно иметь особой роли. Счет 2-1 и «браузерники» вырываются вперед.
Функциональность – важнейшее требование к любому программному продукту. Исторически считается, что десктопные приложения более функциональны и эргономичны. Если пытаться разрабатывать веб-клиент с нуля, то так оно и будет. Но с годами были разработаны целые интерфейсные библиотеки, позволяющие творить «чудеса»:
Про визуальную красоту реализации я и говорить не буду – там все очень достойно. Подозреваю, что компании больше и охотнее разрабатывают новые интерфейсные элементы под браузеры, чем для традиционных win32-приложений.
Современный пользователь компьютера не меньше времени проводит в браузере, чем тратит его на работу с десктопным приложением. И первый вариант работы сложнее ему не кажется. Зато возможность масштабирования в браузере, отдельным категориям пользователей, приносит ощутимую пользу. Опасность у ворот команды веб-клиента была устранена. Счет по-прежнему 2-1.
Корпоративная информационная система растет вместе с компанией. А значит, количество рабочих мест увеличивается, расширяется линейка клиентских устройств для работы в системах. Мировые лидеры разрабатывают новые операционные системы и платформы, и угнаться за ним не так просто. А надо ли? Может быть, доверим им обеспечить совместимость распространенного программного обеспечения, а если такая совместимость не возможна, в их же интересах предоставить альтернативу. Вот такими финтами и перепасовками в центре поля одна из команд пробирается к воротам соперника.
Разрабатывая веб-приложения с соблюдением стандартов можно надеяться, что программное обеспечение будет корректно работать во всех браузерах, по крайней мере, в первой пятерке. Чуда тут не происходит, и существует масса нюансов связанных с различной интерпретацией одной и той же разметки. Разработчики каждый день видят в системах баг-трекинга заявки из разряда «функция А не корректно работает в браузере Б, а в остальных браузерах все ОК». Но эти труды стоят получаемых бонусов.
Когда пользователь заходит на рядовой публичный сайт в Интернете он надеется увидеть корректное представление страниц с сохранением всей заложенной функциональности. Причем, посетитель сайта не хочет знать «под какие устройства» сайт создавался (стационарный компьютер или ноутбук, планшет или смартфон), это его вообще не должно беспокоить. Почему же ровно также не рассуждать пользователю корпоративной информационной системы. Зачем пользователю, находящемуся вне офиса и имеющему на руках планшет за 1000$ переживать, что он не сможет исполнить поручение, выданное ему в СЭД. Надо ли сотруднику при выборе планшета изучать вопрос, а сможет ли он конкретно с этого планшета (с его операционной системой), корректно работать в десятках корпоративных систем своей организации. А если завтра он купит другой планшет (с другой программной платформой), система на нем будет ровно такой же, к которой он привык или уже другой, а придется что-то заново скачивать и устанавливать?
В идеале, я бы хотел, что бы разработчики бизнес-приложений сосредоточились на самих продуктах, а не тратили время на разработку одного и того же под разные платформы (те же яйца только в профиль). И одним из путей вижу применение в качестве клиентских приложений полнофункциональных веб-клиентов с адаптивным веб-дизайном. Это красивая комбинация заканчивается неберущимся ударом, и счет становится 3-1. Веб-клиент заслуженно побеждает десктопное приложение. Крики радости, брызги шампанского, смазливые девицы окружают победителей.
Послесловие
После матча болельщики еще долго спорили, обсуждали острые моменты и не объективное судейство, но счет на табло уже ничто не изменит. Ставки сделаны господа, ставок больше нет!
Десктопное или веб-приложение: плюсы и минусы
Сегодня поговорим об отличиях десктопных и веб-приложений. Не обещаем, что сможем быть полностью непредвзятыми, но постараемся честно рассмотреть плюсы и минусы.
Итак, веб-приложение работает через браузер, используя его как среду выполнения, десктопное— устанавливается, запускается и работает локально. Сравним их по основным характеристикам.
Веб-приложение не требует установки, все обновления происходят на сервере, доставляются пользователям сразу — достаточно просто перезагрузить страницу или выйти, а потом снова зайти в аккаунт. Но иногда для его работы нужно установить дополнительные библиотеки или использовать защищенные сетевые протоколы.
Десктопное нужно устанавливать на компьютере или мобильном устройстве, обновлять каждый раз, как выходит новая версия. Несмотря на то, что чаще всего процесс автоматизирован — все равно это занимает время пользователей и ресурсы устройств. Дополнительно придется отслеживать версии на каждом компьютере, смартфоне и планшете.
Веб-приложение публикуется на локальном или облачном сервере, там же происходит процесс обновления. При этом сервер нужен в любом случае, даже если решение совсем простое. Ведь кроме фронтенда, с которым пользователи будут работать через браузер, нужно где-то размещать бэкенд.
Десктопное придется устанавливать вручную на каждом устройстве. В компании, где много рабочих мест, это может занять достаточно много времени. Плюс в том, что не обязательно выбирать сервер или искать ресурсы для публикации, если речь не идет о клиент-серверном решении.
Работа веб-приложения зависит не только от того, насколько грамотно оно разработано и характеристик пользовательского устройства, но также от скорости интернет-соединения, работоспособности удаленного сервера.
Десктопное работает автономно, поэтому главное — качество кода и стабильность оборудования, на котором этот код выполняется. Но если связь с сервером необходима — то возникают те же проблемы, что у «конкурента».
Веб-приложение доступно из любой точки мира, с любого устройства, а пользовательские файлы всегда будут под рукой. Но только если есть интернет-соединение или реализована возможность работы офлайн и загрузки-выгрузки данных.
Десктопное доступно всегда — но только с устройства, на котором оно установлено. Чтобы работать с разных устройств, его придется установить на каждом, а также придумать, где хранить файлы, чтобы всегда иметь к ним доступ.
Веб-приложение одинаково хорошо будет работать на любом устройстве, будь то стационарный компьютер, ноутбук, планшет или смартфон — ведь оно практически не зависит от «железа» или операционной системы. Главное — подходящий браузер. Как правило, для работы большинства веб-клиентов подходят Google Chrome, Mozilla Firefox, Safari от Apple или Windows-браузер (Microsoft Edge / Internet Explorer).
Десктопное зависит от операционной системы, процессора, видеокарты, ряда других параметров. Приходится учитывать нюансы каждой среды (в том числе при «отлове» ошибок), писать код с учетом возможных вариантов, нанимать отдельных разработчиков или даже целые команды для версий под разные ОС.
Веб-приложение полностью зависит от браузера и технологий его работы. Поэтому есть ряд ограничений, например — в доступе к аппаратному обеспечению вашего устройства. Это и некоторые другие ограничения обойти невозможно (во всяком случае, сейчас). Но целый ряд задач можно решить по принципу «что нельзя переписать, можно надстраивать или расширять». Редакторы документов, изображений, аудио, видео, 3D графики; системы управления проектами; хранилища файлов; no-code конструкторы — успешно работают в браузерах. Инструменты быстрой интеграции сервисов, а также интерфейсные библиотеки еще больше расширяют существующие возможности.
Десктопное позволяет реализовать буквально любые функции — в этом оно однозначно превосходит web. Во всяком случае, полноценного онлайн аналога Photoshop или Sony Vegas еще никто не разработал. Системные утилиты — определенно сфера десктопной разработки. Как и программы, которые должны долго работать в фоновом режиме — например, чаты или торрент-клиенты — через браузер с ними просто неудобно будет работать. Также такое ПО чаще используется для специфических проектов, с нестандартными интерфейсами или функциями. Поэтому web разработка пока не представляет опасности для desktop программистов— эти технологии будут развиваться параллельно, просто под разные задачи.
По поводу скорости работы все не так однозначно, как может показаться. Несмотря на то, что браузерный клиент постоянно обменивается данными с сервером, быстродействие будет во многом будет зависеть от того, насколько грамотно он спроектирован, «чистоты» кода, возможностей оборудования, стабильности канала связи. Разница в быстродействии, которая очевидна при тестировании, зачастую незаметна для пользователей.
Веб-приложение, разработанное с использованием современных протоколов и средств защиты, способно полноценно обеспечивать сохранность данных. Однако на некоторые моменты разработчики не могут повлиять: браузер, облачный сервер, канал связи — могут повысить уровень безопасности за счет дополнительных средств проверки, но также снизить его за счет своих уязвимостей. Несомненный плюс для пользователей: такое ПО проще контролировать. Ограничения среды снижают вероятность, что оно скрыто получит доступ к файлам или запустит какой-либо процесс.
Десктопное настраивается более гибко, а значит — теоретически при его разработке можно предусмотреть все потенциальные уязвимости. На практике — вряд ли. Впрочем, сделать его полностью безопасным все же можно. Но только если устройство, на котором оно установлено, не будет никуда подключаться, даже к защищенной локальной сети. В противном случае — риск все равно будет.
Однозначно сказать, что безопаснее — сложно (если вообще возможно). На это влияют много факторов, прежде всего — человеческий. А ведь именно в защите от человеческого фактора, в различных его проявлениях, заключается смысл всех мер безопасности.
Но очевидно, что доверие к десктопному ПО выше. Некоторые организации принципиально не соглашаются работать в браузерах, многие пользователи все еще относятся к ним настороженно. Однако ситуация меняется — с развитием технологий растет лояльность людей к ним.
Возможности браузерной разработки огромны, ее потенциал раскрыт далеко не полностью. Технологии развиваются, рынок ИТ растет, предлагая все новые приложения — при прочих равных пользователи будут выбирать web просто потому, что это удобнее. Если говорить о решениях для корпоративных клиентов, то тут браузерные приложения незаменимы. Они гибкие, универсальные, не требуют предварительной подготовки среды, позволяют сэкономить финансы компании, аппаратные ресурсы, время сотрудников.
Но рассмотрим другое мнение. Некоторые разработчики считают, что перспективы далеко не безоблачные. Слишком несовершенны технологии работы браузеров, слишком много некачественного ПО уже «накодили». Поэтому пользователи браузерных решений будут возвращаться обратно к десктопным. Такая тенденция будет продолжаться, пока разработчики браузеров массово используют Java Script. Только когда появится реальная альтернатива — можно будет делать прогнозы на будущее.
Веб-приложения уже сейчас подходят для решения многих задач — как бизнеса, так и обычных пользователей. Если вы решили разработать свое — используйте no-code платформу AppMaster.io.
Готовые блоки кода и визуальные инструменты для работы с ними помогут вам создать готовое веб-приложение и его серверную часть гораздо проще и быстрее, чем методы классического программирования!
3 in 1: Desktop, Mobile, Web. Кроссплатформенная разработка
Разработка в рамках одного проекта несет в себе ряд преимуществ. Во-первых, это позволяет использовать одну реализацию бизнес-логики программы. Во-вторых, это возможность иметь единый набор юнит-тестов. В-третьих, это использование привычного языка(С++) и среды разработки.
Статья описывает некоторые методы программирования и несколько библиотек помогающие создавать кроссплатформенные приложения.
За основу взят опыт создания небольшого приложения типа «калькулятор»
Кроссплатформенная разработка
Удобно писать один код вместо трех, это значительно сокращает время создания программы. Но к сожалению каждая платформа имеет свой зависимый код(функционал). Часто без функционала предоставляемого конкретной платформой просто не обойтись. Возможным решением этой проблемы являются стратегии проектирования (подробнее можно узнать в книге Александреску «Современное проектирование на С++»). Весь зависимый код выносится в классы настройки, так называемые «policy», которыми в дальнейшем конфигурируются более крупные классы.
Использование кроссплатформенных библиотек(boost, stl и другие) также упрощает разработку.
Использование модели MVC значительно упрощает проектирование приложения, т.к. большинство платформенных зависимостей локализуются в компоненте «Представление(View)».
Htmlayout
Для организации графического интерфейса была использована библиотека Htmlayout, которая позволяет описывать графический интерфейс программы при помощи html и css. Реализация GUI при помощи веб-ориентированных средств несет в себе массу положительных моментов, начиная с большого количества веб-дизайнеров и заканчивая огромным количеством уже готовых вариантов дизайна. А имея в качестве одной из целевых платформ «веб» это уменьшает затраты на реализацию дизайна в виде html+css.
Htmlayout имеет реализацию для Windows Mobile, что позволяет использовать её также для мобильной платформы.
Программа калькулятор
Программа типа «калькулятор» выбрана потому что в полной мере позволяет попробовать реализовать модель MVC и предполагает использование некоторых компонентов библиотеки «boost», которые были мне интересны.
Desktop
Реализация приложения для десктопа(родной для меня платформы), предполагала прежде всего написание моделей данных, используемых в программе и реализацию общей архитектуры программы. Новым моментом для меня было использование библиотеки Htmlayout. Однако никаких проблем с реализацией графического интерфейса с её помощью не возникло.
На чем писать веб приложения с GUI как в desktop app?
Средний 3 комментария
и так. «массовый веб» и «тяжелый интерпрайз» :
примеры: вконтактик, форумы, и 99% всех веб сайтов.
типичные технологии: php, одноглазый змей-питон, js, чудо руби, и все прочее и тд.
2. интерпрайз интранет
. и различные АРМ с веб-интерфейсом в локальной сети и сложной бизнес логикой
характерные признаки: не слишком большое число пользователей (несколько сотен, максимум пара тысяч), сложная логика бизнес процессов и сложная логика работы формы, высокие требования к надежности.
быстро-меняющиеся процессы предприятия, меняюшиеся раждые полгода регламенты, постоянный рефакторинг под давлением постоянно меняющейся обстановки.
примеры: СЭД (системы документооборота), арм различных госструктур, арм различных операторов, и тд.
у нас есть свои домашние заготовки, но, повторюсь, мы пока их не выпускаем на массовый рынок, предлагать не буду. погодите полгодика, и все будет.
Не решает и даже не пытается) И Rest считает не костылями, а вполне себе полноценным подходом. Посмотрите мой ответ. Тем, кому реально хочется писать под веб так же, как и под десктоп, следует использовать ASP.NET WebForms.
Если есть опыт написания под десктоп на WinForms или Wpf, то обработчики вида
void btn_Click(Object sender, EventArgs e) < >
будут близкими и родными.
Прочитал, но так и не понял, чем современный подход на REST принципиально не подходит для написания
СЭД (системы документооборота), арм различных госструктур, арм различных операторов, и тд.
90% последователей этих технологий не понимают даже основ проблем разработки больших систем на языках с динамической типизацией
REST сервисы вполне можно писать на языках со статической типизацией, C# или Java. Никто использовать js для сервера не заставляет. Клиентскую часть вполне можно писать на вышеупомянутом TypeScript. Тот же Angular его активно использует.
одна только попытка использовать stateless подход и тяжелый толстожЁпый js грозит вам переработками такого масштаба
я вижу перспективу в использовании web-socket, но опять же, промышленных наработок и фреймворков нет.
Как нет, в ASP.NET давно написана обертка для них, SignalR. Пользуйтесь на здоровье.
mletov, я не про обертки над вебсокетами.
я про то, что нет промышленных решений, которые используют вебсокеты для работы с гуи, максимально сближая веб интерфейс и бакенд. идеальным я виже технологию, которая управляет веб интерфейсом по принципам мало отличающимся от того, как например Qt работают со своими формами.
Прочитал, но так и не понял, чем современный подход на REST принципиально не подходит для написания
СЭД (системы документооборота), арм различных госструктур, арм различных операторов, и тд.
а это и не объясняется в самом тексте )
в общем случае, есть несколько моментов, каждый из которых может быть и можно рассматривать как мало значимые, особенно на малых проектах (все так живут, действительно), но вместе они приводят сложные проекты к серьезным проблемам :
вы можете пытаться модерировать и отслеживать эти зависимости, и наверное даже это некоторое время у вас будет получаться, но это затраты времени, которые сильно замедляют любые работы по модификации системы.
вот и получается, что современные массовые подходы к веб-разработке мало пригодны для сложных бизнес-систем.
но вот нет хороших промышленных решений работающих по этим принципам. есть c++/qt и их трансляция формы в веб. есть java и jsf, в варианте какого нибудь там primefaces, вроде как есть vaadin, но как я понимаю, это фактически перекомпиляция java в js с полной отгрузкой приложения клиенту (что малопригодно в ситуации недоверия клиенту).
Разница между настольным, веб и мобильным приложениями
В целом работа с «Форсайт. Аналитическая платформа» в настольном и веб-приложениях совпадает. Работа в мобильном приложении, которое реализовано на основе продукта «Форсайт. Мобильная платформа», несколько отличается. В таблице приведены отличительные особенности работы с каждой функциональностью продукта «Форсайт. Аналитическая платформа» в различных приложениях.
Подключение к данным и их подготовка
Функциональность | Настольное приложение | Веб-приложение | Мобильное приложение |
Импорт данных без подготовки | |||
Подключение к внешним базам данных | |||
Структурирование наборов данных | |||
Импорт, экспорт и преобразование данных |
— функциональность доступна в полном объёме;
— функциональность недоступна;
— функциональность доступна с особенностями использования.