2013-12-12 1 views
5

Возможно и разумно планировать запись приложения HTML5 на стороне клиента, которое будет выполнять вычисления с интенсивным вычислением ЦП? (Обработка изображений)Неправильно ли писать HTML5-приложение на стороне клиента с интенсивным использованием процессора?

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

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

Опять же, я ищу потенциальных клиентов, как подойти к этому, если вообще.

Спасибо!

+0

Возможно? Да. Разумные? Eh, если он не блокирует браузер. – BoltClock

+0

HMTL5 -> Работники Сети! Теперь, поскольку вы * знаете * о них, * читайте некоторые * и следуйте инструкциям/примерам - вот почему я проголосовал. Хотя любая задача, которая может быть записана как некоторая форма очереди и не нуждается в синхронности, достаточно проста, чтобы «разложить со временем» (т.с цепочкой setTimeouts), чтобы избежать негативного влияния на просмотр. – user2864740

+0

@ user2864740 Я не спрашивал, как пользователю веб-работников. Я предлагал это как возможное решение и просил других, а также советов. Я читал о веб-работниках, и я знаю, как они работают. Я просто не уверен, что они - путь. – Ben

ответ

4

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

Работники веб-сайта позволят вашему JavaScript-интерфейсу JavaScript работать в то время, когда вы чередовали число в другом потоке. Это звучит вполне уместно для вашей задачи.

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

1

Я думаю, что совершенно нормально писать приложения на стороне клиента, которые умеренно тяжелы. Но следите за тем, какие пользователи вы нацеливаете на свое веб-приложение. Если эти пользователи работают с современными компьютерами, некоторые базовые обработки изображений просто прекрасны.

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

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

+0

Я не согласен с этим ответом. Совершенно нормально выполнять операцию, которая занимает> 2 секунды на стороне клиента. Пока пользовательский интерфейс остается довольно отзывчивым. Веб-рабочие - это потенциальное решение. – ColinE

+0

Если бы это было приложение для обработки изображений на рабочем столе, вы бы выполнили обработку сервера обработки изображений? Или приложение для редактирования видео? Нет! Веб-приложения ничем не отличаются, поскольку ваш пользователь обеспокоен тем, что они оба - только приложения. – ColinE

+0

@ColinE Я полностью согласен с вами. Совершенно прекрасно, чтобы все компьютерные вычисления выполнялись на компьютере клиента. Но, будучи стартапом, я знаю, как сложно заставить пользователей понравиться ваше приложение. Мои идеи были предназначены только для того, чтобы сделать это приложение лучше. Если нагрузка разделена, люди могут использовать веб-сайт даже на планшетах. –

1

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

Если вы хотите продолжить, одна вещь для проверки будет asm.js, это подмножество javascript (так что это работает во всех браузерах), что браузеры могут очень хорошо оптимизировать (я думаю, что сейчас просто Firefox) вы можете либо закодировать как будто к металу в нем или более разумно использовать его как цель компиляции - так что вы можете писать на другом языке (например, C++) - и скомпилировать что-то, что будет работать очень быстро в браузере.

Смежные вопросы