Веб-программирование – это частный случай программирования клиент-серверного приложения. Клиент-серверное приложение – это вид распределенной информационной системы. Двигаясь от частного к общему, получаем, что веб-программирование – это частный случай программирования распределенной информационной системы. Теперь попытаемся двигаться в обратном направлении, с целью определить, чем именно характерен этот самый частный случай.

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

Клиент заказывает, сервер выполняет - все просто, но зачем это нужно, если любые вычисления можно организовать в рамках одного приложения и на одном компьютере? Дело в том, что запрашиваемые вычисления могут требовать серьезных аппаратных ресурсов (мощность процессора, объем памяти и т.д.), а предоставлять такие ресурсы каждому клиенту весьма и весьма дорого. Часто вычисления связаны с анализом информации в базе данных, размеры которой могут превосходить все разумные пределы объемов информационных носителей, устанавливаемых на обычных персональных компьютерах – пользовательских (клиентских) рабочих станциях. Более того, данные должны быть едиными для всех пользователей, поэтому они просто обязаны находиться на общем для всех сервере, иначе о совместном ведении этих данных не может быть и речи. Самыми известными клиент-серверными информационными системами как раз и являются системы управления базами данных (СУБД), такие как Oracle и Microsoft SQL Server. Серверная их часть обслуживает файлы самой базы данных и обрабатывает SQL запросы от десятков, сотен а то и тысяч клиентов. Клиентская часть СУБД – это в первую очередь провайдер базы данных – программный компонент, который позволяет открыть удаленное соединение с базой данных, принять и передать на сервер запрос, вернуть результат запроса назад клиенту и закрыть соединение. Все это выполняется по сетевому протоколу, такому как TCP/IP.

Теперь вернемся к веб-программированию. В данном случае мы также имеем дело с сервером, клиентом и сетевым протоколом, по которому сервер и клиент общаются. В случае с веб-программированием сетевой протокол – это HTTP, веб-клиент – это чаще всего интернет браузер, а веб-сервер – приложение, которое умеет обрабатывать HTTP запросы. Наиболее популярными веб-серверами являются сервер Apache, который работает под управлением серверной операционной системы UNIX и Internet Information Server (IIS), функционирующий под управлением серверной версии Microsoft Windows. Ну а HTTP (HyperText Transfer Prоtocоl) – это прикладной сетевой протокол на базе TCP/IP, который и предназначен для передачи гипертекста. Итак, с тем, что такое веб-программирование, думаю теперь более или менее понятно.