Настройка оборудования и программного обеспечения

Какой язык программирования используют серверы. «Сделано в России» — язык программирования WBASIC для разработки серверных веб-приложений

С каждым днем IT-сфера становится все шире, и растет спрос на создание сайтов. Это приводит к увеличению количества специалистов, которые готовы взяться за разработку сайта и его поддержку. Однако многие такие веб-мастера пользуются бесплатными конструкторами и имеют очень смутное представление о программировании и технической составляющей сайта. Безусловно, юзабилити, дизайн и контент очень важны, но технически слабый сайт с ошибками в коде не сможет принести его владельцу никакой выгоды. Поэтому за создание сайтов должны браться только те специалисты, которые владеют языками программирования и готовы разработать сайт с нуля.

Какие языки нужно знать, чтобы создавать сайты?

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

  • серверная платформа;
  • серверное ПО;
  • наличие опыта в создании сайтов;
  • выбранная база данных.

Наиболее популярные языки

Сайты Популярность
(уникальные посетители в месяц)
Front-end
(Клиентский)
Back-end
(Серверный)
База данных
Google.com 1,600,000,000 C, C++, Go, Java, Python BigTable, MariaDB
Facebook.com 1,100,000,000 Hack, PHP (HHVM), Python, C++, Java, Erlang, D, Xhp,Haskell MariaDB, MySQL,HBase Cassandra
YouTube.com 1,100,000,000 C, C++, Python, Java, Go Vitess, BigTable, MariaDB
Yahoo 750,000,000 PHP MySQL, PostgreSQL,VB.NET
Amazon.com 500,000,000 Java, C++, Perl Oracle Database
Wikipedia.org 475,000,000 PHP, Hack MySQL, MariaDB
Twitter.com 290,000,000 C++, Java, Scala, Ruby MySQL
Bing 285,000,000 ASP.NET Microsoft SQL Server
eBay.com 285,000,000 Java, JavaScript, Scala Oracle Database
MSN.com 280,000,000 ASP.NET Microsoft SQL Server
Microsoft 270,000,000 ASP.NET Microsoft SQL Server
Linkedin.com 260,000,000 Java, JavaScript, Scala Voldemort
Pinterest 250,000,000 Django, Erlang MySQL, Redis
WordPress.com 240,000,000 PHP, JavaScript (Node.js) MariaDB, MySQL

PHP. В его основе — самый простой язык разметки, HTML. PHP связывает пользователя с серверной частью. Именно на этом языке реализуются такие функции, как формы обратной связи, поля регистрации и т. п. Синтаксис этого языка очень легко и просто изучить. Для создания коммерческого портала без PHP не обойтись, так как именно на нем проще всего получить контактные данные пользователя. Базовое достоинство языка состоит в том, что, используя его, программисты могут очень быстро и без лишних усилий составлять динамические страницы.

Python. На русском его часто называют «питон». Это высокоуровневый язык, используемый для общих задач, чаще всего — для выполнения задач сервером. Его ориентир — повышение производительности программиста и читаемости кода. При помощи языка можно выполнять резервное копирование многих парадигм программирования. Питон отлично работает на серверах Windows и Linux.

Ruby. На русском часто его называют «руби». Это динамический, рефлективный и высокоуровневый язык для ООП (объектно-ориентированного программирования). Он дает возможность реализовать многопоточность на любой ОС, отличается строгой типизацией динамического вида, и обладает рядом других опций. По характеристикам синтаксиса Руби ближе всего к аналогам Eiffel и Perl. Кроме того, отдельные детали позаимствованы из Python.

ASP. Этот язык разработан корпорацией Microsoft. С использованием этой технологии можно разрабатывать приложения для www.asp. Платформы для работы языка следующие: Internet Information Server (IIS) и Windows NT. ASP довольно сложно назвать непосредственно языком, это скорее технология для подсоединения программы к интернет-странице. Все достоинства ASP — в простом скриптовом языке и возможностях применения сторонних СОМ-элементов.

JavaScript. Принцип «яваскрипт» немного отличается от прочих языков программирования. Его главное отличие состоит в прямом подключении к HTML-файлу. Сценарий, созданный на базе JavaScript, обрабатывается интерпретатором, который встроен в браузер. Этот язык используется для большого спектра задач: создание динамических страниц (контент на них может меняться по загрузки документа);

Решение местных задач; проверка правильности заполнения форм до их отправления на сервер.

Большие возможности языка объясняются его популярностью. Так, с помощью JavaScript можно:

  • изменять содержимое страницы: дописывать или убирать текст, менять стили и теги;
  • реагировать на какие-то события (например, на щелчок мыши) и выполнять заданную функцию;
  • отображать сообщения, ставить и считывать cookies, проверять правильность введенных данных;
  • загружать новые данные без перезагрузки документа, и пр.

Perl. Первое время этот язык использовался для соединения программ, которые выполняли разные задачи, в единый сценарий для решения целого комплекса задач: обработки текста, администрирования и пр. Сегодня же Перл используется в основном для разработки приложений CGI. Он помогает администрировать сервера и прочие системы. Благодаря простоте и скорости написания сценария на Перле, его адаптировали ко всем популярным платформам, включая Mac и Windows. Perl имеет открытый исходный код, абсолютно бесплатный.

Нужно ли много знаний?

Базовые знания по программированию вcе приобретают на уроках информатики в школе. Работать на начальном уровне с Паскаль и Делфи приходилось фактически каждому. Но другие, более сложные языки программирования, требуют другого, более комплексного и серьезного подхода. Первое, что нужно для успешного программиста — математический, логический склад ума и желание совершенствоваться в своем деле. При этом не стоит пытаться выучить сразу все языки. Лучше хорошо освоить один, чем иметь отрывочные знания о пяти языках. Все языки имеют схожие принципы, они все строятся на логике действий, поэтому со временем, с каждым новым языком учить его все проще. Копировать или менять чужой код могут многие, но писать свой код, стать настоящим «художником» способен далеко не каждый.

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

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

Спокойствие, сейчас коллективный разум сделает выбор за вас.

В первой части поговорим о языках веб-пространства. Какой предъязыковой расклад надо знать и каков порядок изучения? Об этом далее.

Передовая, тыл и неочевидный выбор

Первый выбор, который надо сделать - сфера ответственности.

Front-end разработчики
Иногда их еще называют веб-дизайнерами, но это неправильно. Задача front-end разработчика сводится к созданию интерфейса, он отвечает за то, чтобы веб-страница загружалась быстро, не тормозила и код на ней работал правильно.

Backend-разработчики
Люди, ответственные за скрытую от глаз функциональность и обработку данных. Их работа - написание серверного кода.

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

Конечно, проще всего поставить себе задачу разобраться со всем, но это лишь рассеет ваше внимание на ранних этапах, а на более поздних вы и так познаете необходимость хотя бы поверхностного изучения всех процессов. Поэтому пойдём по порядку и начнём с front-end.

Лицо, которое надо продать

Самое главное, что не надо делать человеку, желающему стать front-end разработчиком, так это искать минимальный список предъявляемый список требований к специалисту. В этом случае велик риск наткнуться на статьи, подобные статье «Frontend-разработчики должны быть в теме всего ». Всё что там написано - абсолютная правда, но прийти к этому надо начиная с малого, а малое - это 3 основных кита frontend-а: HTML, CSS и JavaScript. Базу для дальнейшнего обучения вы можете получить на .

Ещё несколько лет назад, изучив HTML и CSS в формате нескольких умных книг, а JS на уровне jQuery, можно было всерьёз претендовать на позицию junior-a. Однако сегодня времена изменились, а требования сильно возросли. Впрочем, знания HTML и CSS по-прежнему можно уложить в пару хороших книг:

  • «Изучаем HTML5 » Брюс Лоусон, Реми Шарп,
  • «CSS. Рецепты программирования » Кристофер Шмитт.

На JavaScript придётся потратить достаточно много времени. Здесь мало будет изучить теорию, например по книге «JavaScript: Сильные стороны ». Необходимо несколько месяцев набивать руки и тренировать мозги на практике, в том числе используя упомянутый jQuery.

Кроме теоретических и практических знаний, front-end специалист должен очень хорошо знать последние интернет-тенденции и уметь профессионально их применять. Ведь это именно та зона ответственности, по которой подавляющее большинство заказчиков будет оценивать весь проект на момент сдачи.

Обработать, прикрутить и создать

Базовый язык для любого back-end разработчика - PHP. Это некоторая основа, знать которую в совершенстве, как и делать основным инструментом, совсем не обязательно, но на базовом уровне понимать обязаны. Для этого можно хотя бы внимательно изучить книгу «PHP: правильный путь ».

Что касается актуальных языков, то выбирать скорее всего придётся из Ruby и Python, причём выбор этот - чистая вкусовщина. Даже здесь на периодически вспыхивают споры, но даже в споре за удобство изучения однозначного победителя найти невозможно. По Python полезно будет прочитать книгу с незамысловатым названием «Изучаем Python », по Ruby - «Rails 4. Гибкая разработка веб-приложений ».

Ещё один язык из разряда must know - всё тот же JavaScript с его производными jQuery и Ajax. В данном случае интересует именно back-end разработка, поэтому тратить время на общее изучение языка не имеет смысла, а вот посещение ресурсов вроде блога Антона Шевчука может оказаться крайне полезным.

Ну и конечно потребуются знания в области баз данных. Как минимум, это означает изучение SQL, как максимум - опыт работы с популярными БД.

Один за всех

Правда профессии веб-разработчика в том, что так называемых «сферических» специалистов здесь практически нет, да и рядовые заказчики далеко не всегда понимают эти деления, поэтому в том или ином виде к full-stack-у придётся прийти довольно быстро. Соответственно перечитайте предыдущие 2 раздела, посетите ещё раз и начинайте грызть гранит программной науки.

Знания не о языках

Помимо самих языков, необходимо изучать все прилагающиеся к ним профильные надстройки. Особенно это касается JavaScript (AngularJS, Knockout, Backbone) и CSS (Bootstrap, Foundation). Кроме того вам необходимо набить руку с системами контроля версий Git и SVN.

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

Для решения задачи необходимо сделать следующее:

1. спроектировать ресурс, который бы смог быстро обрабатывать и передавать данные;

2. выбрать базу данных для хранения информации;

3. разработать карту сайта для отображения данных.

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

Серверные языки программирования

PHP - это широко распространённый открытый язык скриптинга (сценариев) общего назначения, который создан специально для Web и который можно внедрять в HTML. Его синтаксис происходит от C, Java и Perl и лёгок для понимания и изучения.

Необходимо обратить внимание на отличие способа совмещения выполняемого кода и презентационной части в скрипта на языке PHP от скриптов, написанных на языках Perl или C - вместо написания программы с большим количеством команд для вывода HTML, пишется HTML-скрипт с некоторым количеством встроенного кода для выполнения каких-либо действий (в данном случае - для вывода некоторого текста). Код PHP заключён в специальные начальный и конечный тэги, что позволяет входить в и выходить из "режима PHP", причём делать это именно там, где это необходимо.

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

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

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

PHP в основном сориентирован на серверный скриптинг, поэтому может делать всё то, что делают CGI-программы: сбор данных форм, динамическую генерацию содержимого страницы или приём и отправку cookie. Но функциональность PHP намного шире.

Скрипты PHP главным образом применяются в следующих сферах:

Серверный скриптинг. Это наиболее традиционная и главная сфера применения PHP. Для выполнения этой работы необходимы три вещи. Разборщик кода PHP (CGI или серверный модуль), web-сервер и web-браузер. Сервер должен быть запущен и должен иметь соединение с инсталлированным и сконфигурированным PHP. Можно получить вывод PHP-программы в web-браузер, просматривая PHP-страницу на сервере.

Скриптинг командной строки. Можно создать и запустить PHP-скрипт на выполнение без сервера или браузера. Для этого необходим только разборщик PHP. Этот тип использования идеально подходит для регулярного выполнения скрипта с помощью программы cron (в *nix или Linux) или Task Scheduler (в Windows). Эти скрипты можно использовать также для задач простейшего текстового процессинга/обработки.

Клиентские GUI-приложения. PHP, возможно, не самый лучший язык для написания оконных приложений, но, при хороших знаниях PHP и необходимости использовать некоторые продвинутые возможности PHP в клиентских приложениях, можно также применять PHP-GTK для создания таких программ. Имеется также возможность создавать кроссплатформенные приложения. PHP-GTK является расширением PHP, отсутствующим в основном дистрибутиве.

PHP может использоваться на всех крупных операционных системах (ОС), включая Linux, многие варианты Unix (HP-UX, Solaris, OpenBSD и Mac OS X), Microsoft Windows, RISC OS и, возможно, другие, что не создает проблем при переходе от платформы к платформе. PHP имеет поддержку для большинства существующих web-серверов. Это ApacheHTTPD, Microsoft IIS, nginx и многие другие. Для большинства этих серверов PHP имеет модули. В других, поддерживающих стандарт CGI, PHP может работать как CGI-процессор.

Следуя из написанного выше, можно сделать вывод, что с помощью PHP можно получить свободу выбора ОС и web-сервера. Более того, можно также выбрать использование процедурного или объектно-ориентированного варианта программирования или их сочетания. Хотя не всякая стандартная возможность OOП реализована в текущей версии PHP, многие библиотеки кодов и большие приложения (включая библиотеку PEAR) написаны только с использованием OOП-кода.

В PHP программист не имеет ограничений в выводе ориентируясь только на HTML. PHP может выводить изображения, PDF-файлы, скрипты на языке JavaScript, клипы Adobe Flash (используя расширения libswf и Ming), генерируемые на лету. Легко можно выводить любой текст, включая XHTML, и любой другой XML-файл. PHP может автоматически генерировать эти файлы и сохранять их в файловой системе, формируя серверный кэш для динамического содержимого, или создания отчётов .

Одна из наиболее сильных и привлекательных черт PHP - поддержка им большого количества баз данных (БД). Создать web-страницу, работающую с БД невероятно легко.

Список поддерживаемых PHP библиотек доступа к БД достаточно широк и включает следующие популярные серверы и форматы:

PHP поддерживает взаимодействие с другими службами по таким протоколам, как LDAP, IMAP, SNMP, NNTP, POP3, HTTP, COM (под Windows) и множество других. В случае отсутствия непосредственной программной реализации того или иного сетевого протокола в PHP, существует возможность открыть обычный сетевой сокет и взаимодействовать с удаленным сервисом согласно его протоколу . Другой популярной технологией серверного скриптования является ASP. ASP по своей сути не является языком программирования, это акроним для Active Server Pages, в действительности, в программах ASP используется VBScript или JScript. Наибольшим недостатком ASP является то, что он сам по себе является проприетарной системой, которая используется исключительно на Microsoft Internet Information Server (IIS). Это ограничивает его применение серверами на платформе Windows.

Считается, что ASP громоздок и работает медленнее, чем PHP, а также менее устойчив к внешним атакам. Одним из преимуществ ASP можно считать использование языка программирования VBScript для написания сценариев, который, относительно легко освоить, будучи знакомым с программированием на Visual Basic. Так-же поддержка ASP по умолчанию встроена в web-сервер IIS, что упрощает подготовительную стадию разработки приложений с его использованием .

Еще одной интересной альтернативой PHP является язык программирования Perl. Наиболее важным преимуществом PHP по сравнению с Perl является то, что PHP был разработан для скриптинга на web, а перед Perl ставились более широкие задачи, в том числе и скриптинг на web, поэтому он получился намного более сложным. Главное отличие работы интерпретаторов PHP и Perl - постоянное присутствие в памяти первого интерпретатора, через который просто проходят скрипты по мере их вызова, а сформированная HTML страница - отсылается клиенту. Второй интерпретатор загружается в память и выгружается по мере необходимости, причём для каждого скрипта вызывается один интерпретатор, что может повлиять на производительность сервера.

Гибкость и сложность синтаксиса Perl облегчает написание кода, но делает его трудно читаемым. PHP имеет более однозначный и строгий формат без потери гибкости. PHP легче встраивается в существующий HTML, нежели Perl. PHP имеет почти такую же хорошую функциональность, что и Perl: конструкции, синтаксис и т д. без усложнения Perl. PHP развивается быстрее Perl, с каждой новой версией приобретает новые функции и более гибкий синтаксис, а также улучшается стабильность и безопасность. Это подтверждает тот факт, что в глобальной сети сейчас присутствует множество проектов, которые написаны на PHP и работают быстро, без сбоев. Попробуем обобщить всё, что касается преимуществ PHP, которых нет в Perl:

Контекстно-зависимые include, которые видят переменные верхнего уровня;

Расширенные теги - что и называется удобным встраиванием в HTML;

Высокая скорость работы с БД и огромное количество поддерживаемых баз данных, где Perl по скорости проигрывает;

Встроенная поддержка XML в PHP;

Возможность менять заголовки ответа в любого места программы, даже после того как уже были отправлены некоторые данные, за счёт буферизованного вывода;

Быстрые темпы развития и поддержка огромным количеством пользователей в Internet;

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

В последнее время также стали популярны некоторые новые языки программирования, как Ruby или Python, но они, как правило ориентированы на работу со своими каркасами приложений, такими как Ruby On Rails или Django, а поэтому применяются для создания полноценных сложных приложений, нежели для написания простых скриптов и требуют развертывания сервера приложений, работающим в связке в web-сервером, обслуживающим HTTP запросы. То же касается и достаточно старых технологий с применением языка Java, таких как JavaServletes или менее абстрактными JavaServerPages.

Ниже приведены результаты анализа преимуществ и недостатков (табл. 2.1).

Таблица 2.1 - Сравнение технологий серверного скриптинга

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

Что такое веб-программирование

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

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

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

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

Чем веб-программирование отличается от обычного программирования

Контекст исполнения. Если в случае с обычным “настольным” приложением контекст его исполнения представлен структурами данных, размещенными в оперативной памяти в рамках одного на клиентской машине, то в случае веб-программирования все несколько сложнее. Попытаюсь сформулировать, чем отличается веб-программирование от обычного приложения в плане организации контекста его исполнения. Во-первых, контекст исполнения поделен на всех участников распределенной системы, и они обязаны его как-то делить и синхронизировать между собой. Во-вторых, в случае с веб-программированием контекст исполнения теоретически существует только в ходе формирования и обработки одного клиент-серверного запроса. Имеется в виду, что жизненный цикл всех структур данных в оперативной памяти ограничен не всем периодом работы клиента с веб-приложением, а временем подготовки, отправки и обработки одного HTTP запроса. После перезагрузки интернет страницы все структуры контекста необходимо восстанавливать. Безусловно, существуют различные способы сохранять состояние сеанса между запросами, но эти способы не вписываются в канву программирования по принципу “запрос-ответ” и являются искусственными надстройками над инфраструктурой веб-программирования. Ведь так называемая stateless (без состояния) модель использования сервера, когда система не хранит своего состояния между запросами, а “просыпается” только тогда, когда запрос необходимо обработать, является более надежной в сравнении со stateful (с поддержкой состояния) моделью. Это так, поскольку выход из строя аппаратной или системной программной части сервера может привести к непредсказуемому поведению веб-приложения только в том случае, если этот сбой произойдет в момент обработки запроса. Также, элементарно может не хватить оперативной памяти для обслуживания большого количества клиентских запросов, при условии, что каждому сеансу необходимо обеспечить возможность сохранять и восстанавливать свое состояние. Тем не менее, совсем без контекста исполнения, разделяемого между запросами в некоторых задачах обойтись довольно сложно, поскольку в ходе вычислений часто приходится работать к ресурсам, обращение к которым может занимать много времени. Для того чтобы минимизировать подобные издержки наиболее критичные ресурсы разработчики предпочитают хранить “под рукой” - в оперативной памяти веб-сервера. Рассмотрим, какие существуют способы управлять состоянием веб-приложения. Поскольку мы имеем дело с общением клиента и сервера, то и контекст делится на клиентский и серверный. Далее перечислены способы сохранения и восстановления контекста исполнения или по-другому состояния сеанса работы веб-приложения на стороне клиента и на стороне сервера.

Контекст исполнения на стороне клиента можно сохранять:

  1. В оперативной памяти приложения клиента (интернет браузера). С выходом HTML5 для этих целей в браузерах должна появиться . Это весьма разумно, поскольку используется оперативная память клиента, а не сервера, который “один на всех”. С другой стороны, не все данные есть возможность хранить на стороне клиента, поскольку не все данные можно преобразовать в текстовый формат и передать на сервер.

  2. В небольших фрагментах текстовых данных, сохраняемых на стороне клиента – cookies. Cookies сохраняются в текстовых файлах, в разделах, выделенных операционной системой для хранения различной пользовательской информации. Эти данные передаются каждый раз серверу в заголовках HTTP запроса. Отдельным недостатком этого способа является то, что прием cookies может быть запрещен клиентом.

Контекст исполнения на стороне сервера можно сохранять:

  1. В области оперативной памяти, выделяемой веб-сервером (Apache, IIS) и называемой состояние приложения . Эти данные доступны со всех страниц веб-приложения всем его пользователям.

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

  3. В структурах базы данных. Это наиболее универсальный и надежный способ хранения контекста приложения. Универсальный потому что не зависит от природы веб-сервера, а надежный, потому что жизненным циклом состояния приложения и состояния сеанса управляет веб-сервер, в то время, как информацию в базе данных контролирует веб-приложение.

Еще одним довольно надежным способом хранения данных состояния сеанса является использование элементов HTML разметки. Приложение на стороне клиента может силами того же JavaScript и создать скрытые элементы со скрытыми полями, о существовании которых будет знать только сервер. Сервер, в свою очередь, обработает эти данные и в них же поместит ответ, если это необходимо.

Взаимодействие различных компонентов. Проблема стандартизации и унификации взаимодействия различных программных компонентов сложных программных продуктов свойственна не только веб-приложениям. Современные настольные приложения также состоят из различных библиотек, которые могут быть написаны различными разработчиками и с использованием различных программных платформ и . Для универсального способа общения таких компонентов между собой ведущими компаниями-разработчиками создаются соответствующие стандарты и технологии, например Component Object Model (COM) и от компании Microsoft или архитектура Common Object Request Broker Architecture (CORBA), продвигаемая консорциумом OMG.

Элементам веб-приложения также приходится общаться между собой, просто в их случае проблема стоит не так остро, поскольку их общение происходит на расстоянии (не в рамках одного процесса). С целью организации обмена информацией между клиентом и сервером довольно часто используют XML, который великолепно подходит для описания чего угодно, если это “что угодно” имеет ярко выраженную структуру. XML помещают в тело HTTP запроса и отправляют на сервер. Язык XML – это универсальный строительный материал, пригодный для решения абсолютно разных задач, поэтому на его базе создаются специализированные языки – протоколы сетевого взаимодействия, которые в последствии становятся общепринятыми стандартами. К таким протоколам следует отнести Web Services Description Language (WSDL) – язык описания интерфейсов веб-сервисов и Simple Object Access Protocol (SOAP) – протокол обмена структурированными сообщениями между компонентами распределенной информационной системы. Чаще всего сообщения SOAP представляют собой сигнатуру удаленных вызовов процедур и функций (методов) веб-сервиса с параметрами и без. Безусловно, для написания простейших веб-приложений, построением клиента и сервера которых занимается один программист или одна группа программистов необязательно использовать все эти надстройки, но если вы создаете интернет ресурс, клиентами которого должны стать не только рядовые пользователи, но и веб-приложения, создаваемые другими компаниями, то в процессе его разработки лучше придерживаться общепринятых стандартов.

Составляющие веб-программирования

Веб-дизайн

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

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

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

Программирование на стороне клиента

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

Самый популярный и поддерживаемый всеми современными интернет браузерами язык программирования. Здесь вы найдете описание того, как на HTML страницу добавить JavaScript код и как использовать объектно-ориентированных подход при написании на нем пользовательских сценариев. Здесь есть и примеры JavaScript приложений.

Библиотека, написанная на JavaScript, в состав которой входит огромное количество полезных функций для работы с объектной моделью загруженной интернет страницы: от редактирования содержимого страницы до создания различных визуальных эффектов. Примеры использования jQuery здесь также присутствуют.

Технология создания динамических интернет страниц на основе асинхронной загрузки гипертекста (результат асинхронного выполнения HTTP запросов) в отдельные области текущей страницы. Приведено описание того, как использовать технологии AJAX с примерами на JavaScript, в том числе с использованием библиотеки jQuery.

Программирование на стороне сервера

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

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

Очень крутая технология веб-программирования от компании Microsoft. К сожалению, пока я не могу размещать здесь примеры веб-приложений, создаваемых с помощью ASP.NET, поскольку мой хостинг-провайдер не поддерживает эту технологию. Хочу сказать, что окружение ASP.NET позволяет создавать веб-приложения так же легко, как и обычные приложения. Вы имеете дело с привычными пользовательскими элементами управления, которые размещаете на странице с помощью привычных мастеров интегрированной среды разработки . Также, привычным образом вы добавляете к ним обработчики событий. Преобразование элементов управления в код HTML и JavaScript, генерацию proxy-классов по описанию WSDL, установку соединения и упаковку удаленных вызовов к другим веб-сервисам в сообщения SOAP берет на себя инфраструктура ASP.NET. Доступ к сервисам сохранения и восстановления контекста исполнения приложения, асинхронное обновление страницы средствами AJAX и многое другое также находится в зоне ее ответственности.

К минусам ASP.NET можно отнести то обстоятельство, что она стирает для разработчика границы между обычным программированием и веб-программированием, и он может не отдавать себе отчет, как именно работает его приложения. Возможно, это и не минус вовсе, но я считаю, что перед изучением этих замечательных технологий следует освоить базовые принципы веб-программирования на примере того же PHP. На этом про веб-программирование у меня пока все.

The Dynamic Websites Server-side programming topic is a series of modules that show how to create dynamic websites; websites that deliver customised information in response to HTTP requests. The modules provide a general introduction to server-side programming, along with specific beginner-level guides on how to use the Django (Python) and Express (Node.js/JavaScript) web frameworks to create basic applications.

Most major websites use some kind of server-side technology to dynamically display different data as required. For example, imagine how many products are available on Amazon, and imagine how many posts have been written on Facebook? Displaying all of these using completely different static pages would be completely inefficient, so instead such sites display static templates (built using HTML , CSS , and JavaScript), and then dynamically update the data displayed inside those templates when needed, e.g. when you want to view a different product on Amazon.

In the modern world of web development, learning about server-side development is highly recommended.

Learning pathway

Getting started with server-side programming is usually easier than with client-side development, because dynamic websites tend to perform a lot of very similar operations (retrieving data from a database and displaying it in a page, validating user-entered data and saving it in a database, checking user permissions and logging users in, etc.), and are constructed using web frameworks that make these and other common web server operations easy.

Basic knowledge of programming concepts (or of a particular programming language) is useful, but not essential. Similarly, expertise in client-side coding is not required, but a basic knowledge will help you work better with the developers creating your client-side web "front end".

You will need to understand "how the web works". We recommend that you first read the following topics:

With that basic understanding, you"ll be ready to work your way through the modules in this section.

Modules

This topic contains the following modules. You should start with the first module, then go on to one of the following modules, which show how to work with two very popular server-side languages using appropriate web frameworks.

Server-side website programming first steps This module provides server-technology-agnostic information about server-side website programming, including answers to fundamental questions about server-side programming - "what it is", "how it differs from client-side programming", and "why it is so useful" - and an overview of some of the more popular server-side web frameworks and guidance on how to select the most suitable for your site. Lastly we provide an introductory section on web server security. Django Web Framework (Python) Django is an extremely popular and fully featured server-side web framework, written in Python. The module explains why Django is such a good web server framework, how to set up a development environment and how to perform common tasks with it. Express Web Framework (Node.js/JavaScript) Express is a popular web framework, written in JavaScript and hosted within the node.js runtime environment. The module explains some of the key benefits of this framework, how to set up your development environment and how to perform common web development and deployment tasks.

See also

Node server without framework This article provides a simple static file server built with pure Node.js, for those of you not wanting to use a framework.
Понравилась статья? Поделитесь с друзьями!
Была ли эта статья полезной?
Да
Нет
Спасибо, за Ваш отзыв!
Что-то пошло не так и Ваш голос не был учтен.
Спасибо. Ваше сообщение отправлено
Нашли в тексте ошибку?
Выделите её, нажмите Ctrl + Enter и мы всё исправим!