'Пара (возможно, опровергнутых) заметок 2013 года:
Веб-приложения не должны разрабатываться иначе, чем любое другое приложение.
Возьмите любое приложение 2+ уровня(подойдет любая обычная модель клиент-сервер);имеет ли смысл обрабатывать вещи на клиенте или на сервере?
Соображения производительности
Необходимо учитывать мощность обработки, задержку сети, пропускную способность сети,ограничения памяти и памяти.В зависимости от приложения вы можете выбирать различные компромиссы.
Толстый клиент обычно позволяет вам обрабатывать больше на клиенте и разгружать сервер, сериализовать более эффективные полезные нагрузки сообщений и минимизировать циклические переходы, все настоимость вычислительной мощности, эффективности памяти и, возможно, места для хранения.
Соображения безопасности
Безопасность является временной, независимо от используемой модели, каждой стороной (не только сервером)) всегда будет в какой-то степени проверять и, возможно, дезинфицировать данные, полученные от других.Для многих веб-приложений это означает проверку сущностей с помощью бизнес-логики, но не всегда.Это зависит от того, что представляют собой данные, и кто имеет над ними полномочия (и это не всегда сервер).
Поскольку веб-браузер уже проверяет большое количество информации, соображений на стороне клиента меньше, но не следуетне следует забывать (особенно в клиенте, который создает XHR или использует WebSockets, где меньше ручных операций).
Иногда это означает, что на самом деле и сервер, и клиент будут проверять одни и те же данные.Хорошо.Если вы разрабатываете программное обеспечение с обеих сторон, вы можете извлечь свой проверочный код в модуль, используемый как клиентом, так и сервером (как и все эти «общие» модули в традиционных пакетах программного обеспечения).Поскольку ваш выбор языка ограничен на стороне клиента в веб-среде, вам, возможно, придется пойти на компромисс.При этом вы можете выполнить Javascript на сервере или скомпилировать многие языки вплоть до Javascript, используя такие вещи, как Emscripten (также см. Amd.js), или даже запустить собственный код в неопределенном будущем, используя такие вещи, как NaCl / PNaCl.
Заключение
Я считаю, что это помогает думать о клиентах веб-приложений как о клиентах «немедленно установленных», «без конфликтов» и «постоянно обновляемых».Мы не используем эту терминологию для Интернета, потому что эти свойства всегда были присущи классическому веб-программному обеспечению, но не для классического нативного программного обеспечения.Точно так же мы не используем такие термины, как «одностраничные приложения» при разработке собственного программного обеспечения, потому что никогда не было необходимости перезапускать все приложение, когда нам нужно было переключиться на новый экран с классическим программным обеспечением.сближение и открытость;в ближайшие годы люди из разных сообществ будут многому учиться друг у друга.