Выбор архитектуры: web или desktop?

Добрый день!
Разрабатываю сервер для работы с оборудованием к которому будут подключаться пользователи (физически подключать свой ноут к серверу, не через инет). Встал вопрос выбора типа сервера: web-сервер к которым пользователи будут работать через браузер или сервер к которому будут подключаться через десктопное приложение.
Подскажите, пожалуйста, на какие критерии ориентироваться при выборе? Есть ли какая-либо литература для понимания этих критериев?

upd1: Система предназначена для обработки деталей. Сервер передаёт пользователю видео с видеокамер на которых отображается деталь. Пользователь щёлкая по изображению детали запускает процесс её обработки оборудованием. То есть, будет потоковое видео и его обработка, других вычислений не будет.

Работа через Интернет не предполагается т.к. нужно физическое присутствие человека в процессе обработки детали (установки детали в зажимы и т.п.). То есть достаточно простого подключение по локальной сети (без аутентификации и т.п.)
  • Вопрос задан
  • 406 просмотров
Пригласить эксперта
Ответы на вопрос 6
@rPman
Web - на два порядка проще (читай дешевле) для разработки за счет повышенного требования ресурсов на клиентской стороне.

Десктоп - возможно создание очень эффективных приложений но за счет очень дорогой поддержки всего разнообразия устройств и операционных систем (в веб этим занимается браузер и даже в этом случае приходится напрягаться)

И главное, из веб приложения достаточно легко (например с помощью electron) можно сделать десктопное приложение.

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

Кстати, один момент, тормозные веб приложения это не потому что веб такой плохой, это потому что разработчики ленятся делать все как следует. Рынок заполонили низкокачественные разработчики на основе веб. Помни об этом!
Ответ написан
Комментировать
krdpsr
@krdpsr
веб проще и эффективнее всего остального
но всё зависит от того какие языки ты знаешь

если делать с нуля и надо изучать языки - веб лучший вариант
потому что раз в 100 проще всего остального
в 10 раз проще обычного
и в 100 раз проще если использовать небольшое подмножество языков js css html php
Ответ написан
Комментировать
Xuxicheta
@Xuxicheta
инженер
web-сервер от "не веб" отличается только умением работать через протокол Http
Фактически это и есть обычный сервер, только протокол связи стандартизован, так чтобы с ним умел общаться браузер. Но точно так же с ним может общаться любой другой клиент.

То есть выбор стоит так "использовать мне стандартный протокол или нестандартный". И тут сами выбираете.

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

Тут в веб тоже есть стандарт - WebRTC, но не слишком удобный, смотрите уже с чем клиент умеет работать.
Ответ написан
Есть много вопросов к тому что из себя будет представлять конечный программно-аппаратный комплекс и для каких условий работы он предназначен. Одно дело, когда он расположен где-то в "тепличных" условиях в офисе/дома. И совсем другое дело, когда находится в шумном и пыльном цехе, где по кнопкам и экрану будут тыкать грязными руками. Ко второму должны предъявляться совсем другого уровня требования по надежности и не только.

физически подключать свой ноут к серверу
В смысле? Пойдут в серверную и будут подключать ноут к серверу кабелем? Что за бред? Если не бред, то по какому протоколу? И этот ноутбук нужен для постоянной работы с оборудованием? Или "сервером" будет достаточно мощный ПК? ПК и ноутбук в цехе? Серьёзно?

с видеокамер на которых отображается деталь
Это видеокамеры со встроенными экранами? Или же без, а изображение должно передаваться по кабелю на сервер?

будет потоковое видео и его обработка
К потоковой обработке видео, я полагаю, есть достаточно высокие требования и к железу и к коммуникациям (ширина канала, задержки, кабели, маршрутизаторы и т.д.). Должен быть чип DSP (если встраиваемое оборудование) или достаточно мощный процессор на ПК/сервере, который потянет обработку.

web или desktop
Десктоп - настольное оборудование, web - передача данных преимущественно по HTTP. Одно другому не мешает. Наверное, речь больше про выбор клиент-серверной технологии, таких как терминал-сервера с терминал-клиентами (Citrix и др.) или же комбинированного оборудования с периферией (допустим, ПК с подключеннами экраном, веб-камерой и другими устройствами). Из-за необходимости обработки видео терминал-сервер, похоже, не подходит.

Если, скажем, брать (промышленный) вариант ПК, тогда обработка видео будет происходить на нём и по сети гонять ничего не надо. Тогда настольное приложение может состоять из модулей обработки видео, бизнес-логики и пользовательского интерфейса - всё в одном. Для настольных приложений обычно берут C# (WPF), C++ (Qt), Delphi, Java (Swing, JavaFX). Модуль обработки видео можно использовать, подключив как библиотеку (SO, DLL), реализованную на любом высокопроизводительном ЯП.

Веб-технологии пока достаточно специфичны и ограничены. У меня нет пока представления как происходит пакетная обработка видео в вебе. WASM едва только пробует войти в веб и мало распространён. Одно дело на веб-приложении крутить фильмы, а нечто другое - обрабатывать на лету и встроить в пользовательский интерфейс. Так что к настольным веб-приложениям я пока несколько скептически отношусь. Они пока не предназначены для промышленного использования.
Ответ написан
Комментировать
igolets
@igolets
Программист C#, MSSQL
Я бы тут ещё попробовал ответить на следующие вопросы:
  1. Какие требования к срокам выпуска приложения?
  2. Как часто будет меняться приложение?
  3. Какой перечень клиентского оборудования и операционных систем? Будут ли это планшеты на iOs, например. Если только ноуты с одинаковой операционкой — то почему?
  4. Какая интеграция с десктопом потребуется? Например, запуск в режиме киоска (без элементов операционной системы), горячие клавиши, локальная БД, интенсивные вычисления, лимиты памяти, нестандартные элементы управления (джойстики и т.п.), внешние динамики/мигалки/дисплеи, контроль активности пользователя.
  5. Много ли экранных форм и насколько они разнообразны?
  6. Какой опыт у разработчи(ка/ков)


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

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

Удачи!
Ответ написан
Комментировать
@Pashka23 Автор вопроса
Есть много вопросов к тому что из себя будет представлять конечный программно-аппаратный комплекс

Архитекутра достаточно простая: видеокамера передаёт видео детали на сервер (мощный комп с видеограббером). Сервер анализирует поток, корректирует его и транслирует клиенту. Клиент щёлкает по выбранной части изображения детали и аппаратура для работы с деталью производит операцию.

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

Весь комплекс (включая сервер) будет использоваться только в "тепличных" условиях, для исследовательских целей.

В смысле? Пойдут в серверную и будут подключать ноут к серверу кабелем? Что за бред? Если не бред, то по какому протоколу? И этот ноутбук нужен для постоянной работы с оборудованием? Или "сервером" будет достаточно мощный ПК? ПК и ноутбук в цехе? Серьёзно?

Сервер не будет находиться в серверной. С комплексом можно работать только находясь с ним рядом (т.к. надо будет устанавливать деталь). Многопользовательский и удалённый доступ к нему не нужны. Конечные пользователи будут подключаться с ноутбука пачкордом по Ethernet.

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

Если, скажем, брать (промышленный) вариант ПК, тогда обработка видео будет происходить на нём и по сети гонять ничего не надо. Тогда настольное приложение может состоять из модулей обработки видео, бизнес-логики и пользовательского интерфейса - всё в одном.
Необходимо выбрать как предоставлять доступ конечным пользователям - писать клиентское приложение (C++/Qt) или предосталять его через web. Можно бы производить доступ сразу на серверном ПК, но заказчик не хочет по ряду причин.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы