Я видел вопросы (в основном о переполнении стека), в которых отсутствуют базовые знания. Суть этого вопроса - предоставить хорошую информацию тем, кто ищет ее, и тем, кто на нее ссылается.
Каковы различия между программированием на стороне сервера и программированием на стороне клиента в контексте веб-программирования? Какие языки принадлежат к какому и когда вы используете каждый из них?
web-development
server-side
client-side
Мадара Учиха
источник
источник
Ответы:
Фон
Веб-разработка - это общение. В этом случае связь между двумя (2) сторонами по протоколу HTTP:
Программирование каждой стороны относится к коду, который выполняется на конкретной машине, сервере или клиенте.
Основной пример
программирование
Программирование на стороне сервера
Программирование на стороне сервера - это общее название для видов программ, которые запускаются на Сервере .
Пользы
Примеры языков
Клиентское программирование
Как и на стороне сервера, программирование на стороне клиента - это название всех программ, которые запускаются на клиенте .
Пользы
Примеры языков
* HTML и CSS на самом деле не являются "языками программирования" сами по себе. Это синтаксис разметки, с помощью которого Клиент отображает страницу для Пользователя .
источник
По словам непрофессионала:
Здесь я буду говорить только о веб-программировании.
Программирование на стороне клиента в основном связано с пользовательским интерфейсом, с которым взаимодействует пользователь. В веб-разработке это браузер, на компьютере пользователя, который выполняет код, и в основном это делается на javascript, flash и т. Д. Этот код должен работать в различных браузерах.
Его основными задачами являются:
Лицо, ответственное за передней торцевой программирования должен знать :
Программирование на стороне сервера связано с генерацией динамического контента. Он работает на серверах. Многие из этих серверов являются "безголовыми". Большинство веб-страниц не являются статичными, они выполняют поиск в базе данных, чтобы показать пользователю обновленную персональную информацию. Эта сторона взаимодействует с серверной частью, например, с базой данных.
Это программирование может быть сделано на многих языках:
Этот код имеет отношение к:
Ответственный за программирование на стороне сервера должен знать:
источник
Другие ответы были сосредоточены на том, что такое программирование на стороне клиента и на стороне сервера: какие языки чаще всего используются, какие задачи должны быть выполнены и т. Д.
Это абсолютно правильно, но я скучаю по тому, каковы различия между двумя типами программирования в контексте веб-программирования. Позвольте мне попытаться решить это.
Безопасность и разрешения
В программировании на стороне клиента у вас нет доступа ко всей системе из-за проблем безопасности. Пользователь не обязательно доверяет каждому фрагменту кода, который загружается из Интернета и выполняется на его компьютере, и это является основной целью разработки клиентской среды (браузера и механизма JavaScript): обеспечить изолированную среду где клиентский код может выполняться, но не может получить доступ к чему-либо за пределами разрешенной области.
В программировании на стороне сервера также целесообразно ограничивать доступ каждого приложения к базовой системе, но это гораздо менее навязано вам, поскольку в конечном итоге вы или ваша компания контролируете эту систему. Эта конструкция «изолированной клетки» не встроена в инструменты и языки программирования на стороне сервера, но реализуется посредством установки (использование выделенных пользователей с ограниченными разрешениями, выбор портов, которые требуют или не требуют корневых разрешений и т. Д.).
Развертывание и платформа
В программировании на стороне сервера развертывание должно происходить извне кода с использованием какого-либо инструмента (даже если он
make install
или agit clone
), и это развертывание обычно выполняется вручную - или, по крайней мере, ожидается, что оно будет происходить в полуконтролируемом путь. Система (то есть ОС), в которой вы развертываете, обычно одинакова на нескольких машинах, но она может быть сильно адаптирована к вашим потребностям.В программировании на стороне клиента развертывание происходит из кода на стороне сервера, который обслуживает клиентов автоматически и без присмотра. Базовая система (в основном браузер) может сильно отличаться на гораздо большем количестве машин. Чтобы сделать развертывание вообще осуществимым, необходимо соблюдать стандарты, и существует гораздо более сильная тенденция к единому языку и среде.
Вот почему копирование серверного кода с одного компьютера на другой может занять недели, в то время как код на стороне клиента обычно тривиально выполнить на разных машинах.
Состояние и вторичные эффекты
(Отказ от ответственности: это, безусловно, самый субъективный момент из всех. Возможно, в моей аргументации есть много неправильных аспектов. На мой взгляд, это просто интересная гипотеза.)
В программировании на стороне сервера состояние представляет собой гораздо большую проблему, то есть способы извлечения и обновления данных по запросу пользователя с возможностью возникновения конфликтов из-за параллелизма. Даже если большая часть этой сложности выгружается на сервер базы данных, серверный код отвечает за то, чтобы позволить базе данных сохранять свои гарантии целостности данных, правильно используя ее интерфейс (например, не использовать кэш для обновлений, которые никогда не видны БД), хотя целью серверного кода также является не перегружать базу данных работой и заставлять пользователя ждать ответа.
В программировании на стороне клиента представление результатов пользователю представляет гораздо большую проблему, и это подразумевает вторичные эффекты (в основном печать на экране). Это не означает, что состояние не задействовано (например, файлы cookie), а лишь то, что основная цель кода состоит в том, чтобы фактически взаимодействовать с пользователем, и это не может произойти без вторичных эффектов.
Вот почему программирование на стороне клиента обычно требует (в какой-то момент), чтобы посмотреть на экран с демонстрацией, чтобы убедиться, что все цвета и расположение правильны, в то время как программирование на стороне сервера может происходить почти исключительно в текстовой среде, где автоматизировано тесты проверяют, что логика все еще делает то, что должна.
источник
Это ни в коем случае не должно быть принятым ответом; скорее я предлагаю это в качестве дополнительного пункта (в ответ на
when do you use each of them
вопрос), который еще должен быть упомянут в других ответах, а именно:Защита интеллектуальной собственности
Исходный код, который находится на стороне клиента (например, в Javascript), легко читается и / или может быть переработан, если он был запутан.
Однако исходный код, который находится на стороне сервера, может надежно защитить запатентованные алгоритмы и только вернуть результат; черный ящик сортов.
источник