Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Критерии выбора средств разработки WEB-приложений (Анализ предметной области)

Содержание:

ВВЕДЕНИЕ

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

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

Целью данной работы является определение критериев средств разработки веб-приложений.

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

  • раскрыть понятие “веб-разработка”;
  • провести анализ языков программирования используемых на стороне клиента и на стороне сервера;
  • изучить виды баз данных наиболее часто используемых для этих задач;
  • изучить системы управления контентом;
  • вывести критерии выбора средств разработки веб-приложений.

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

1. Анализ предметной области

1.1 Понятие “веб-разработка”

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

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

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

Иерархия веб-разработки выглядит следующим образом:

  • кодирование на стороне клиента;
  • кодирование на стороне сервера;
  • технология баз данных.

Сама веб-разработка и то, как это делается, сильно изменились за последние годы, но одна вещь осталась прежней: веб-разработка относится к созданию приложений, которые запускаются в веб-браузере [4, 9, 14].

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

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

Однако, независимо от того, как осуществляется веб-разработка, основные технологии одинаковы: HTML, JavaScript, CSS.

Веб-разработчики используют все основные языки программирования для создания веб-приложений. Это возможно, потому что пользовательский интерфейс веб-приложения — это, по существу, HTML, CSS и JavaScript, которые могут быть сгенерированы любым языком программирования, способным создать текст.

JavaScript используется для управления так называемой DOM (Document Object Model), которая представляет собой веб-страницу в браузере, для прямого изменения пользовательского интерфейса, отображаемого в браузере, без прямого создания нового кода HTML или CSS [6].

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

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

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

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

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

ColdFusion или ASP были некоторые из ранних веб-фреймворков, которые упростили веб-разработку [4].

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

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

Кроме того, в это время также появился CSS, чтобы упростить стилизацию веб-приложений, предоставив HTML роль определения контента и CSS для определения макета и стиля этого контента [10, 14].

Рендеринг всего на сервере был слишком медленным и не чувствовал себя отзывчивым, поэтому были созданы технологии, такие как AJAX (асинхронный JavaScript и XML), чтобы позволить динамически обновлять веб-страницы без обновления страницы.

В конце концов, все веб-приложения были построены динамически без обновления любой страницы. Эти типы веб-приложений известны как SPA или Single Pages Applications. Они позволяет динамически изменять веб-страницу, не обновляя ее.

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

Фактически, это стало настолько справедливым, что Google создал веб-ОС под названием Chrome OS, в которой в качестве ОС используется браузер Chrome. В будущем все будет размещено в Интернете, потому что браузеры будут достаточно мощными, чтобы запускать все. Уже всё движется в этом направлении, поскольку все больше и больше развиваются облачные технологии [4].

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

Основные парадигмы веб-браузеров следующие:

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

Это делается через протокол, известный как HTTP, или протокол передачи гипертекста.

Когда запрос на определенный ресурс или URL (Унифицированный Идентификатор Ресурса) отправляется на веб-сервер, этот веб-сервер находит запрашиваемый контент, если он существует, и отправляет ответ в браузер.

Затем браузер анализирует и отображает этот ответ, который видит конечный пользователь в веб-браузере [4, 10, 14].

Теперь, очевидно, на фронтенде происходит гораздо больше, но основная идея заключается в том, что веб-браузер делает запрос, и веб-сервер отвечает, возвращаясь из HTML, CSS и JavaScript.

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

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

Для веб-приложений вам необходимо обойти тот факт, что базовый протокол HTTP не имеет статуса.

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

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

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

Сегодня такие технологии, как ASP.NET или PHP, по-прежнему в основном используют эту модель, хотя с использованием различных фреймворков JavaScript даже для серверной технологии рендеринга можно использовать для рендеринга сторону клиента [6].

Клиентский рендеринг просто означает, что содержимое веб-страницы создается в браузере через JavaScript, а не на сервере.

Благодаря рендерингу на стороне клиента можно практически почти думать о том, что веб-сервер предоставляет «приложение» браузеру, и браузер выполняет это приложение внутри себя, и в итоге отображает страницы, создаёт навигацию и запрашивает любые дополнительные данные с сервера.

За кулисами JavaScript используется для создания и управления элементами DOM и даже для создания HTML или CSS, который является частью веб-страницы или в данном случае веб-приложения. Рендеринг на стороне клиента выглядит более плавным для конечного пользователя, потому что нет необходимости возвращать запросы на сервер для отображения новых страниц, а только запросы на дополнительные данные, которые затем «подключаются», веб-страницы динамически.

Вот почему некоторые приложения на стороне клиента называются SPA. Обычно есть только одна страница, и содержимое этой страницы динамически обновляется [6. 14].

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

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

Понятие «веб-сервер» может относиться как к аппаратной начинке, так и к программному обеспечению. Или даже к обеим частям, работающим совместно.

С точки зрения "железа", «веб-сервер» — это компьютер, который хранит файлы сайта (HTML-документы, CSS-стили, JavaScript-файлы, картинки и другие) и доставляет их на устройство конечного пользователя (веб-браузер и т.д.). Он подключен к сети Интернет и может быть доступен через доменное имя, подобное mozilla.org.

С точки зрения ПО, веб-сервер включает в себя несколько компонентов, которые контролируют доступ веб-пользователей к размещенным на сервере файлам, как минимум — это HTTP-сервер. HTTP-сервер — это часть ПО, которая понимает URL’ы (веб-адреса) и HTTP (протокол, который ваш браузер использует для просмотра веб-станиц).

На самом базовом уровне, когда браузеру нужен файл, размещенный на веб-сервере, браузер запрашивает его через HTTP-протокол. Когда запрос достигает нужного веб-сервера ("железо"), сервер HTTP (ПО) принимает запрос, находит запрашиваемый документ (если нет, то сообщает об ошибке 404) и отправляет обратно, также через HTTP. [7]

Чтобы опубликовать веб-сайт, необходим либо статический, либо динамический веб-сервер.

Статический веб-сервер, или стек, состоит из компьютера ("железо") с сервером HTTP (ПО). Его называют это «статикой», потому что сервер посылает размещенные файлы в браузер «как есть».

Динамический веб-сервер состоит из статического веб-сервера и дополнительного программного обеспечения, чаще всего сервера приложения и базы данных. Его называют «динамическим», потому что сервер приложений изменяет исходные файлы перед отправкой в ваш браузер по HTTP.

Серверные программы делятся на следующие четыре вида.

  1. Исполняемые программы, работающие через интерфейс CGI (Common Gateway Interface — общий интерфейс обмена), так называемые CGI-npoграммы. Эта разновидность серверных программ — самая старая, однако отнюдь не устаревшая.
  2. Расширения Web-сервера (приложения формата ISAPI, NSAPI, модули расширения Apache и т. п.). Новый способ, позволяющий встраивать серверные программы в сам Web-сервер, делая их его составными частями. Впервые предложен фирмой Microsoft для их сервера Microsoft Internet Information Server (интерфейс ISAPI) и разработчиками популярного бесплатного Web-сервера Apache.
  3. Активные серверные страницы (ASP, JSP и др.). Фактически это обычные статические Web-страницы, сохраненные в файлах, Которые, кроме обычного HTML-кода, включают в себя команды, обрабатываемые либо самим Web-сервером, либо его расширением. Также новый способ, впервые предложенный Microsoft для того же Internet Information Server.
  4. Серверные сценарии, написанные на интерпретируемом языке (Perl, Python, VBScript, JavaScript и др.). Обычные сценарии, работающие через интерфейс CGI или ISAPI на стороне сервера.

CGI-программы представляют собой обычные исполняемые файлы, написанные на любом языке программирования и откомпилированные в машинный код процессора. Они не имеют интерфейса пользователя (как и все серверные программы), а работают с Web-сервером, получают от него входные данные и ему же пересылают результаты своей работы. Запускаются они самим Web-сервером, когда в них возникает нужда (когда необходимо обработать полученные от пользователя данные), и работают под управлением операционной системы серверного компьютера. При этом, если Web-серверу поступает одновременно несколько запросов на обработку данных от пользователей, он запускает соответствующее количество копий CGI-программы. [4]

К достоинствам CGI-программ можно отнести легкость создания (многие среды разработки программ поддерживают создание таких приложений, в частности популярнейший Borland Delphi, начиная с версии 3) и простоту отладки. Также, поскольку CGI-приложения представляют собой независимые программы, они выполняются отдельно от Web-сервера (как говорят программисты и системные администраторы, выполняются в другом адресном пространстве). Это значит, что при сбое в CGI-программе завершается только она — сам Web-сервер остается "на плаву". А недостаток у CGI-программ всего один: большой расход системных ресурсов, поскольку для обработки каждого набора данных запускается отдельная копия серверной программы. И если Web-серверу поступит слишком много запросов на обработку данных, серверный компьютер может и зависнуть.

Расширения Web-сервера — более новая разновидность серверных программ. Они представляют собой обычные библиотеки DLL, в которых реализована вся логика серверной программы. Такие библиотеки как бы встраиваются в программу Web-сервера и работают как ее неотъемлемая часть. Поскольку библиотеки DLL работают только в среде Windows, для того чтобы создавать расширения в иных операционных системах, были придуманы и другие форматы. В частности, модули расширения сервера Apache не являются библиотеками DLL,

Именно в виде библиотек DLL создаются расширения Web-серверов Internet Information Server фирмы Microsoft и Netscape Web Server фирмы Netscape. В первом случае расширения имеют формат ISAPI (Internet Server Application Programming Interface — интерфейс программирования приложений интернет-сервера), а во втором — NSAPI (Netscape Server Application Programming Interface — интерфейс программирования приложений сервер^ Netscape). Формат модулей расширения Apache так и называется — модули Apache.

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

Как CGI-программы. Поскольку они работают как часть Web-сервера, любая ошибка в расширении приведет к зависанию сервера.

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

Как уже говорилось, активные серверные страницы — это обычные Web-страницы, включающие в себя особые серверные сценарии, выполняемые самим Web-сервером или специальной серверной программой (CGI-приложением или расширением Web-сервера). В частности, ASP (Active Server Pages — активные серверные страницы), поддерживаемые Microsoft Internet Information Server, и JSP (Java Server Pages — серверные страницы, написанные на JavaScript), поддерживаемые рядом других Web-серверов, работают именно таким образом. Серверные страницы ASP пишутся на языках JavaScript и VBScript, a JSP — только на JavaScript.

Достоинства активных серверных страниц вы уже знаете: легкость и быстрота написания и простота отладки. Кроме того, поскольку активные серверные страницы -- это обычные Web-страницы с "вкраплениями" программного кода, их написание легко освоят все, кто знаком с HTML. Недостаток: относительная медлительность и повышенные требования к системным ресурсам. [3]

Серверные сценарии подобны активным серверным страницам тем, что являются интерпретируемыми, однако представляют собой "чистый" программный код, без HTML-''примесей". Интерпретатор практически всегда представляет собой CGI-программу, однако ничто не мешает разработать его в виде расширения Web-сервера. Сценарии обычно пишутся на языке программирования Perl, специально предназначенном для обработки текста; также используются языки Python, JavaScript, VBScript и даже (как говорят) язык командных файлов MS-DOS. Фактически писать сценарии можно на любом языке программирования, для которого есть интерпретатор.

Достоинства и недостатки серверных сценариев те же, что у активных серверных страниц. Однако сценарии потребляют исключительно много системных ресурсов, даже больше, чем CGI-приложения. Ведь для обработки каждого набора данных пользователя запускается своя копия интерпретатора, а интерпретатор, в свою очередь, расходует много ресурсов на обработку сценария. И все же, несмотря на это, сценарии — самый популярный способ создания серверных программ. [18]

1.2 История появления веб-индустрии

История создания сайтов берет свое начало с 90-х годов прошлого столетия и тесно связана с возникновением сети Интернет. Первопроходцем в этой сфере был женевский ученый из Европейской лаборатории элементарных частиц Тим Бернерс-Ли. Именно он является создателем первого в мире сайта. Но еще до него в далеких сороковых годах прошлого столетия Ваннервар Буш развивал идею о том, что благодаря специальным техническим устройствам можно расширить человеческую память и проиндексировать накопленную веками информацию.

Это давало бы возможность, по его мнению, организовать быстрый поиск необходимой информации. Именно такой принцип и лежит в основе сегодняшних сайтов. Сведения о дате создания первого сайта в литературных источниках разнятся. Одни исследователи утверждают, что это произошло в 1990 году, другие же датируют это событие 6 августа 1991 года. Тем не менее, факт остается фактом.

На этом сайте было размещено описание разработанной Бернерсом-Ли технологии WWW (World Wide Web), базирующейся на протоколе передачи данных HTTP, системе адресации URL и разметке гипертекста HTML. Помимо этого, на сайте находился ряд ссылок на другие сайты, то есть фактически он представлял собой первый Интернет-каталог в мире. Здесь же была изложена подробная информация о том, как работают браузеры и серверы и как их необходимо устанавливать. [19]

Для разработки сайта Бернерс-Ли подготовил все необходимые инструменты заранее: гипертекстовый браузер с функционалом веб-редактора, веб-страницы и сервер на базе NeXTcube. Сегодня Тим Бернерс-Ли стоит во главе основанного им Консорциума Всемирной паутины (World Wide Web Consortium), занимающегося разработкой и внедрением стандартов Всемирной сети. В середине 90-х разработка сайтов стала одним из наиболее динамично развивающихся отраслей в мире. Если в 1995 году компаний, занимающихся веб-разработкой, насчитывалось менее 1000 тысячи, то спустя десятилетие (10 лет) только в Соединенных Штатах Америки их было уже более 30 000 тысяч.

В России активное распространение Интернета началось лишь в конце 90-х годов, несмотря на то, что первый сайт на русском языке был разработан уже в 1995 году. Сегодня Рунет изобилует сайтами различной направленности. [19]

Веб-технологии постепенно развились до такого уровня, что у разработчиков появилась возможность создавать веб-содержание нового поколения. Сегодняшний Интернет является результатом непрерывных усилий открытого веб-сообщества, которое помогает разрабатывать такие технологии, как HTML5, CSS3 и WebGL, и добивается их поддержки всеми браузерами.

2. Разработка веб-приложений

2.1 Разработка клиентской части веб-приложений

2.1.1 Язык гипертекстовой разметки HTML

HTML5, последняя версия гипертекстового языка разметки HTML, привела к сдвигу парадигмы веб-дизайна и его активному развитию. Он ввел множество новых функций, которые позволяют сделать сайты более привлекательными и интерактивными. Новая технология предлагает ряд преимуществ по сравнению с предыдущими версиями. [6, 11, 14]

К основным преимуществам HTML5 можно отнести следующие:

  1. Doctype.

Это простое и удобное объявление валидатору типа версии, используемой HTML: “<! DOCTYPE html>”. Не нужно копировать и вставлять длинный и нечитаемый код, который приходилось раньше использовать в старой версии HTML. Помимо простоты, он также работает со всеми устаревшими версиями основных браузеров, включая IE6.

  1. Улучшенная семантичность.

Одним из преимуществ HTML5 является то, что он улучшил семантичность веб-сайтов. В HTML5 разработчик может легко получить доступ к контенту и понять различные теги, такие как <header>, <footer>, <nav>, <section>, <aside>. Это не только улучшает отображение, но и облегчает процесс кодирования. Это новое усовершенствование обеспечивает улучшенный доступ для пользователей независимо от размера экрана, ориентации и разрешения устройства [8].

  1. Мобильная оптимизация.

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

  1. Кроссбраузерность.

В мире с несколькими браузерами веб-сайты должны быть совместимы с браузерами, и это было основной идеей HTML5 Doctype. Он поддерживает все основные браузеры, включая Google Chrome, Internet Explorer, Firefox, Opera и Safari и даже поддерживает их устаревшие версии.

  1. Поддержка аудио и видео.

Использование аудио и видео элементов в прошлом означало использование Flash Player или других сторонних медиаплееров, которые сделали эти элементы доступными только для немногих, у которых были установлены эти инструменты. Одним из основных преимуществ HTML5 является то, что он ввел множество новые теги: <audio> и <video>, позволяющими добавлять на сайт мультимедийные элементы без каких-либо проблем.

  1. Геолокация.

API-интерфейс HTML5 Geolocation позволяет определять местоположение пользователя и показывать ему контент, который для него специфичен. Эта функция будет, однако, требовать согласия пользователя, для определения его местоположения, но делает просмотр веб-страниц гораздо более легким и удобным для пользователей. [14]

  1. Разработка игр.

Игры могут быть разработаны на HTML5 с помощью тега <canvas>. В отличие от старых флеш-игр, они гораздо интереснее и легко разрабатываются.

  1. Улучшенное хранилище.

В HTML5 улучшенная функция хранения, которая идеально сочетается с хранилищем cookie и клиентской базой данных. Это лучше с точки зрения безопасности, а также позволяет экономить память [11].

2.1.2 Каскадные таблицы стилей CSS

CSS (Cascading Style Sheets) — это простой инструмента для пользовательского дизайна, призван упростить процесс создания веб-страниц.

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

CSS легко изучаем, но он обеспечивает мощный контроль над представлением HTML-документа. Чаще всего CSS сочетается с языками разметки HTML или XHTML. [6, 11]

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

При использовании CSS, не нужно каждый раз писать атрибуты HTML-тегов. Просто пишется одно правило CSS тега и применяется ко всем моментом использования этого тега. Таким образом, меньше кода означает более быстрое время загрузки.

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

Таблицы стилей позволяют оптимизировать контент для более чем одного типа устройств. Используя тот же HTML-документ, различные версии веб-сайта могут быть представлены для разных платформ [14].

2.1.3 Язык программирования JavaScript

Javascript – это язык программирования, с помощью которого веб-страницам придается интерактивность. С его помощью создаются приложения, которые включаются в HTML-код (например, анкеты или формы регистрации, которые заполняются пользователем). Часто Javascript путают с языком программирования Java, однако общего между ними очень мало. К тому же, некоторые сравнивают Javascript с языками Python, Self, Ruby. Однако это особенный язык, который существует сам по себе. [14]

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

Вся уникальность данного языка программирования заключается в том, что он поддерживается практически всеми браузерами и полностью интегрируется с ними, а все что можно сделать с его помощью – делается очень просто. Ни одна другая технология не вмещает в себе все эти преимущества вместе. К примеру, есть такие, которые не кросс-браузерны (то есть поддерживаются не всеми браузерами). Это — VBScript, ActiveX, XUL. А есть такие, которые с браузером не интегрированы в нужной степени, это – Java, Flash, Silverlight. [6]

2.2 Разработка серверной части веб-приложений

2.2.1 PHP

PHP (Hypertext PreProcessor, препроцессор гипертекста) – язык программирования, исполняемый на стороне веб-сервера, спроектированный Расмусом Лердорфом (Rasmus Lerdorf) в качестве инструмента создания динамических и интерактивных веб-сайтов. [6]

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

Существует еще одна «характеристика», которая делает РНР особенно привлекательным: он распространяется бесплатно. Причем, с открытыми исходными кодами.

Традиционность. Язык РНР будет казаться знакомым программистам, работающим в разных областях. Многие конструкции языка позаимствованы из Си, Perl.

Код РНР очень похож на тот, который встречается в типичных программах на С или Pascal. Это заметно снижает начальные усилия при изучении РНР. PHP — язык, сочетающий достоинства Perl и Си и специально нацеленный на работу в Интернете, язык с универсальным (правда, за некоторыми оговорками) и ясным синтаксисом.

Простота. Сценарий РНР может состоять из 10 000 строк или из одной строки — все зависит от специфики задачи.

PHP — язык, который может быть встроен непосредственно в html -код страниц, которые, в свою очередь будут корректно обрабатываться PHP -интерпретатором. Можно использовать PHP для написания CGI-сценариев и избавиться от множества неудобных операторов вывода текста. Можно привлекать PHP для формирования HTML-документов, избавившись от множества вызовов внешних сценариев.

Большое разнообразие функций PHP избавят программиста от написания многострочных пользовательских функций на C или Pascal.

Эффективность. Очень важное преимущество PHP заключается в его «Движке». «Движок» PHP не является ни компилятором, ни интерпретатором. Он является транслирующим интерпретатором. Такое устройство «движка» PHP позволяет обрабатывать сценарии с достаточно высокой скоростью. По некоторым оценкам, большинство PHP-сценариев (особенно не очень больших размеров) обрабатываются быстрее аналогичных им программ, написанных на Perl. Однако, чтобы не делали разработчики PHP, откомпилированные исполняемые файлы будут работать значительно быстрее – в десятки, а иногда и в сотни раз. Но производительность PHP вполне достаточна для создания вполне серьезных web-приложений.

Безопасность. РНР предоставляет в распоряжение разработчиков и администраторов гибкие и эффективные средства безопасности, которые условно делятся на две категории: средства системного уровня и средства уровня приложения.

Гибкость. Поскольку РНР является встраиваемым (embedded) языком, он отличается исключительной гибкостью по отношению к потребностям разработчика. Хотя РНР обычно рекомендуется использовать в сочетании с HTML, он с таким же успехом интегрируется и в JavaScript, WML, XML и другие языки. Кроме того, хорошо структурированные приложения РНР легко расширяются по мере необходимости (впрочем, это относится ко всем основным языкам программирования).

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

Бесплатное распространение. Стратегия Open Source, и распространение исходных текстов программ в массах, оказало несомненно благотворное влияние на многие проекты, в первую очередь — Linux, хотя и успех проекта Apache сильно подкрепил позиции сторонников Open Source. Сказанное относится и к истории создания РНР, поскольку поддержка пользователей со всего мира оказалась очень важным фактором в развитии проекта РНР.

Принятие стратегии Open Source и бесплатное распространение исходных текстов РНР оказало неоценимую услугу пользователям. Вдобавок, отзывчивое сообщество пользователей РНР является своего рода «коллективной службой поддержки», и в популярных электронных конференциях можно найти ответы даже на самые сложные вопросы [6].

2.2.2 Python

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

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

Его очень часто выбирают в качестве языка разработки из-за повышенной производительности, которую он предоставляет. Поскольку этап компиляции отсутствует, цикл редактирования, тестирования, отладки невероятно быстр. Отладка программ Python проста: ошибка или плохой ввод никогда не вызовут ошибку сегментации. Вместо этого, когда интерпретатор обнаруживает ошибку, он выбрасывает исключение. Когда программа не обнаруживает исключения, интерпретатор печатает трассировку стека. Отладчик исходного уровня позволяет проверять локальные и глобальные переменные, оценивать произвольные выражения, устанавливать точки останова, каждый раз переходить через код строки и так далее. [12]

Python — это высокоуровневый, интерпретируемый и универсальный язык динамического программирования, который фокусируется на читаемости кода. Синтаксис в Python помогает программистам делать кодирование c меньшим количеством шагов по сравнению с Java или C++. Язык, основанный в 1991 году разработчиком Гвидо ван Россумом, имеет простое и интересное программирование. Python широко используется в крупных организациях из-за его многочисленных парадигм программирования. Обычно они включают в себя обязательно, и объектно-ориентированное, и функциональное программирование. Он имеет обширную и большую стандартную библиотеку с автоматическим управлением памяти и динамическими функциями. [12]

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

1. Обширные библиотеки поддержки.

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

2. Интеграция.

Python использует интеграцию Enterprise Application Integration, которая упрощает разработку веб-сервисов путем вызова компонентов COM или COBRA. Он обладает мощными возможностями управления, поскольку он вызывается непосредственно через C, C ++ или Java через Jython. Python также обрабатывает XML и другие языки разметки, так как он может работать во всех современных операционных системах с помощью одного и того же байтового кода.

3. Увеличивает показатели продуктивности программиста.

Язык имеет обширные библиотеки поддержки и чистые объектно-ориентированные проекты, которые увеличивают продуктивность разработчика от двух до десяти раз при сравнении использования таких языков, как Java, VB, Perl, C, C ++ и C #.

4. Производительность.

Благодаря мощным функциям интеграции процессов, модульной системе тестирования и расширенным возможностям управления, он способствует увеличению скорости работы большинства приложений, а также улучшает показатели производительности приложений. Это отличный вариант для создания масштабируемых многопротокольных сетевых приложений [12].

2.2.5 Node.js

Node.js наделяет JavaScript функцией взаимодействовать с устройствами ввода-вывода через свой API (написанный на C++), подключать другие внешние библиотеки, созданные на разных языках, обеспечивая вызовы к ним из JavaScript-кода. Node.js используестя чаще всего на сервере.

Среди преимуществ Node.js стоит выделить то, что он дает возможность пользоваться JavaScript на стороне клиента и на стороне сервера. Разработчики могут подключать специальное ПО JavaScript: JQuery, V8, JSON и управляемое событиями программирования. Также выделяют особые экосистемы, которые работают “поверх” Node.js, среди них веб-инфраструктура Express (быстрый, гибкий, минималистичный веб-фреймворк для приложений Node.js).

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

Node.js – довольно молодой, но уже популярный проект. Начал разрабатываться только в 2009 году, на данный момент используется во многих известных ресурсах. [20]

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

Не так давно, 26 апреля этого года вышла новая версия данного ПО. Что же предлагает новый релиз? Разработчики заявили, что в новой версии прежде всего улучшили производительность, надежность и безопасность системы. В основе JavaScript Google V8 5.0, с улучшенной поддержкой EcmaScript 6.

Для улучшения производительности ускорена система загрузки модулей и улучшен процесс нахождения файлов для подключения.

В области безопасности было проделано несколько доработок. Среди которых Buffer API. Суть в том, что до этого изменения экземпляры Buffer класса можно было создать с помощью конструктора Buffer функции с разными аргументами. Отныне данный процесс заменяется отдельными Buffer.from(), Buffer.alloc()и Buffer.allocUnsafe() методами конструктора. Это довольно строгий метод, который уменьшает количество всевозможных багов в сфере безопасности ПО. В V8 улучшена реализация Math.random(). Но она все таки не есть криптографически безопасной. Поэтому не используйте ее в коде, если он имеет непосредственное отношение к безопасности. Лучше пользоваться методом crypto.randomBytes() из модуля Crypto. [20]

2.3 Базы данных

2.3.1 MySQL

MySQL — это система управления базами данных, которая позволяет управлять реляционными базами данных. Это программное обеспечение с открытым исходным кодом, поддерживаемое Oracle. Это означает, что можно использовать MySQL бесплатно. Кроме того, если нужно, то можно изменить его исходный код в соответствии с потребностями.

Несмотря на то, что MySQL — это программное обеспечение с открытым исходным кодом, можно купить коммерческую лицензионную версию от Oracle, чтобы получить премиальные сервисы поддержки.

MySQL довольно легко освоить по сравнению с другими базами данных, такими как Oracle Database или Microsoft SQL Server. [10]

MySQL может работать на разных платформах UNIX, Linux, Windows и т.д. Можно установить его на сервере или даже на рабочем столе. Кроме того, MySQL надежный, масштабируемый и быстрый.

К преимуществам использования MySQL можно отнести следующие:

  1. Его легко использовать.

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

  1. Это Open-Source проект.

Покупка Oracle Sun Microsystems (и по ассоциации, MySQL) была встречена с некоторыми предубеждениями сообщества разработчиков. Общий страх заключался в том, что Oracle превратит инструмент в закрытую, запатентованную экосистему. Хотя Oracle несколько упростила контроль над MySQL, его все еще можно считать опцией базы данных с открытым исходным кодом, поскольку код по-прежнему доступен для бесплатного онлайн-использования [3].

  1. Это очень дешевый вариант выбора.

В зависимости от того, для чего планируется использовать его, реализация MySQL может варьироваться в цене от бесплатных до 10 000 долларов США и более. В любом случае, это значительно дешевле, чем большинство других вариантов базы данных на рынке (кроме конкурентов с открытым исходным кодом MySQL) [5].

  1. Это промышленный стандарт.

Хотя популярность MySQL в последние годы несколько ослабевает, она остается одной из самых используемых систем баз данных в мире. Он совместим практически с каждой операционной системой и является более или менее отраслевым стандартом.

К недостаткам использования MySQL можно отнести следующие пункты:

  1. У него есть несколько проблем со стабильностью.

Согласно Digital Ocean, MySQL, как правило, несколько менее надежна, чем его конкуренты. Эти проблемы стабильности связаны с тем, как он обрабатывает определенные функции (например, ссылки и транзакции). Хотя база данных, безусловно, все еще пригодна для использования в свете этих проблем, они, как правило, делают MySQL плохим выбором для определенных случаев использования.

  1. Он страдает от относительно низкого масштабирования производительности.

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

  1. Развитие не связано с сообществом - и, следовательно, отстало.

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

  1. Его функциональность, как правило, сильно зависит от дополнений.

Хотя MySQL относительно легко настроить, он имеет меньше функциональности, чем многие другие системы баз данных на рынке. Некоторые функции, такие как текстовый поиск и соответствие ACID, зависят не от основного ядра, а от приложений и надстроек. Хотя верно, что существует множество хорошо продуманных приложений для MySQL, их отслеживание иногда может быть сложным и может заставить некоторых разработчиков просто выбрать альтернативу, которая, хотя и не так легко устанавливается, предлагает более оперативную функциональность. [4]

MySQL не предназначен для всех. База данных не полностью совместима с SQL и имеет тенденцию ограничиваться в областях, включая хранение данных, отказоустойчивость и диагностику производительности.

2.3.2 Microsoft SQL Server

Microsoft SQL Server — популярная система управления реляционными базами данных (RDBMS), разработанная Microsoft. Будучи сервером базы данных, его основной функцией является сохранение и извлечение данных по запросу других программных приложений. Администрирование базы данных сервера Microsoft SQL может помочь оптимизировать, а также поддерживать производительность сервера, обеспечивая при этом его работоспособность и доступность [1].

К преимуществам MS SQL можно отнести следующие:

  1. Установка оптимизирована.

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

  1. Функции безопасности лучше.

SQL Server 2008 использует политическое управление для обнаружения политик безопасности, которые не соответствуют требованиям. Эта функция позволяет только авторизованному персоналу получить доступ к базе данных. Аудит безопасности и события могут автоматически записываться в файлы журнала.

  1. Улучшенная производительность.

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

  1. Снижение стоимости владения.

SQL-сервер включает в себя эффективные инструменты управления данными и интеллектуального анализа данных наряду с разделением дисков. Оптимальное обслуживание сервера может быть обеспечено с помощью эффективных методов управления данными. Эти методы также помогают обеспечить доступность и возможность восстановления данных [1, 15].

Таким образом, преимущества Microsoft SQL Server следующие:

  • Благодаря своей способности обрабатывать большие объемы данных, эта СУБД очень хорошо подходит для малых предприятий, средних и крупных компаний;
  • Типы СУБД имеют преимущества в управлении пользовательскими данными, и каждый пользователь может установить права для доступа к базе данных с помощью DBA;
  • Имеет уровень безопасности данных, который является очень хорошим;
  • Возможность резервного копирования, восстановление и откат данных очень легки;
  • Имеет преимущество в создании базы данных зеркального отображения и кластеризацию.

Недостатки Microsoft SQL Server:

  • СУБД этого типа может работать только на Windows совместимых операционных системах и платформах;

Это программное обеспечение имеет лицензию от Microsoft, поэтому для его использования требуются значительные финансовые затраты. [1]

2.3.3 PostgreSQL

PostgreSQL — это универсальная и объектно-реляционная система управления базами данных, самая передовая система баз данных с открытым исходным кодом. PostgreSQL был разработан на основе POSTGRES 4.2 в отделе компьютерных наук Беркли Университета Калифорнии.

PostgreSQL был разработан для работы на UNIX-подобных платформах. Тем не менее, PostgreSQL был также разработан так, чтобы быть портативным, чтобы он мог работать на различных платформах, таких как Mac OS X, Solaris и Windows.

PostgreSQL — бесплатное программное обеспечение с открытым исходным кодом. Его исходный код доступен под лицензией PostgreSQL, благодаря этому его можно свободно использовать, изменять и распространять в любой форме. [16]

PostgreSQL требует очень минимальных поддерживаемых усилий из-за его стабильности. Поэтому, если разрабатывается приложение на основе PostgreSQL, общая стоимость вхождения низкая по сравнению с другими системами управления базами данных. [15]

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

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

PostgreSQL — это первая система управления базами данных, которая реализует функцию контроля параллелизма нескольких версий (MVCC), даже до Oracle. Функция MVCC известна как изоляция моментальных снимков в Oracle.

PostgreSQL — это универсальная система управления объектно-реляционными базами данных. Он позволяет добавлять пользовательские функции, разработанные с использованием разных языков программирования, например, таких как C/C ++, Java и т.д. [16]

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

Многие компании создали продукты и решения, используя PostgreSQL. Например, такие признанные компании, как Apple, Fujitsu, Red Hat, Cisco, Juniper Network и т.д.

Первоначальное имя PostgreSQL - Postgres, поэтому PostgreSQL иногда называют Postgres [16].

2.4 Системы управления контентом

Система управления контентом (от англ. Content management system, CMS) – это WEB-интерфейс или компьютерная программа, которая используется, для:

  • добавления, редактирования, удаления информации на сайте (контента сайта, например, текстов, картинок, документов, видеороликов, документов, описаний и характеристик товаров);
  • представления контента в виде, удобном для восприятия, навигации и поиска;
  • управления структурой, а иногда и внешним видом сайта;
  • публикации содержимого в сети Интернет.

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

Современные CMS предоставляют не только инструменты для управления информацией, но и фактически обеспечивают полноценную работу сайта в сети Интернет. [2, 3]

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

CMS – это инструмент, который позволяет «не программисту» управлять сайтом и информацией, размещаемой на нем.

CMS иначе называют еще системой администрирования сайта или, проще, движком сайта.

Все системы управления контентом делятся на две больших группы:

  • Платные;
  • Бесплатные.

Среди платных и бесплатных систем управления контентом, в свою очередь, выделяют:

  • Коробочные;
  • Облачные платформы;
  • Самописные.

Также, CMS разделяют по их специализации, исходя из удобства их использования при создании различных типов сайтов. Можно выделить следующие типы сайтов:

  • Лендинги (одностраничные сайты);
  • Сайты-визитки;
  • Корпоративные сайты;
  • Блоги;
  • Интернет-магазины. [3]

3. Сравнительный анализ средств разработки

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

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

В процессе разработки web-сайта или какого-либо web-сервиса в сети интернет обычно написание кода стоит на первом плане и подразумеваются такие инструменты для разработки, как HTML, CSS, JavaScript и PHP.

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

Разработку «с нуля» стоит сразу отбросить, так как этот подход может быть правильным только в том случае, если создание проекта – это основная задача компании, а ресурсов под эту задачу выделено очень много. Хорошие проекты «с нуля» пишутся очень долго, хотя этот подход позволяет создавать очень серьёзные решения. Поэтому рассмотрим только создание сайта на базе платформ. [8]

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

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

Коробочные CMS-системы написаны на PHP и использует СУБД MySQL, что делает данные коробочные решения легко модернизируемыми путем изменения кода при необходимости разработчиком.

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

Фреймворк в веб-разработке – это программный продукт, упрощающий создание и поддержку технически сложных или нагруженных проектов. Фреймворки содержат только базовые программные модули, а все специфичные для проекта компоненты разработчик может реализовать на их основе, что позволяет достичь высокой скорости разработки, без потери высокой производительности и надёжности решений. Следовательно, решения, разработанные на фреймворках, работают значительно быстрее и выдерживают большую нагрузку, чем CMS и самописные системы. [8]

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

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

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

SaaS-платформы (software as a service – ПО как услуга) – это способ распространения программного обеспечения на арендной основе. Иными словами, не надо покупать CMS или заказывать разработку, достаточно только сконфигурировать выданный поставщиком сайт под свои задачи и ежемесячно вносить абонентскую плату.

Следовательно, данная платформа позволяет быстро разрабатывать свое web-приложение, так как разработка заключается в определении структуры сайта и наполнении его страниц необходимыми материалами. SaaS-платформы в краткосрочной перспективе обходятся гораздо дешевле заказной разработки. Также в данные решения входит всё необходимое для полноценной работы проекта (установка и настройка CMS, хостинг и настроенный сервер, сопровождение, которое выполняется поставщиком). [8]

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

Описание и сравнение платформ для создания сайтов. [8]

Признак

CMS

Фреймворк

SaaS

Функционал

Избыточный стандартный функционал; невозможность доработки нестандартными функциями

Набор стандартных модулей, на основе которых можно выстраивать необходимый функционал

Готовый, стандартный функционал, не возможность выхода за рамки предоставленного функционала

Реализация бизнес-процессов

Заложены основные бизнес-процессы

Реализация любых бизнес-процессов

Сопровождение

Удобное

Простое

Занимается поставщик

Масштабируемость

Простое, но в рамках заложенного функционала

Легко масштабируемы

Нет

Модульность

Да

Наличие базовых программных модулей

Нет

Быстрота и удобство разработки

Да

Легкая, быстрая за счет подключения вспомогательных программ, библиотек, сценариев

Быстрая и простая разработка

Возможность доработки кода

Есть

Есть

Есть

Производительность

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

Высокая

Низкая

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

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

1. Функциональные возможности (необходимость наличия специфичного функционала, необходимость внесения изменений в код, необходимость создания новых модулей).

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

3. Масштабируемость.

4. Ограничения по срокам разработки приложения.

Таким образом, можно сделать вывод, что для разработки web-приложения для крупных организаций не стоит использовать SaaS платформы, так как она обладает ограниченными функциональными возможностями. Выбор же CMS-системы или фреймворка будет основываться на требованиях к конкретному разрабатываемому проекту, так как достоинства одной системы выступают недостатком другой. Значит, для определения платформы разработки необходимо определить значимость для проекта предложенных критериев и выбрать наиболее подходящую систему для реализации тебований: CMS или же фреймворк. [8]

ЗАКЛЮЧЕНИЕ

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

В рамках работы решены следующие задачи:

  • раскрыто понятие “веб-разработка”;
  • проведён анализ языков программирования используемых на стороне клиента и на стороне сервера;
  • изучены виды баз данных наиболее часто используемых для этих задач;
  • изучены системы управления контентом;
  • выведены критерии выбора средств разработки веб-приложений.

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

СПИСОК ЛИТЕРАТУРЫ

  1. Бен-Ган И. Microsoft SQL Server 2012. Основы T-SQL. — Эксмо, 2012. — 401 с.
  2. Грачёв А. Создаем свой сайт на WordPress: быстро, легко и бесплатно. – Питер, 2014 — 272 с.
  3. Горнаков Г. Осваиваем популярные системы управления сайтом (CMS). — ДМК Пресс, 2013. — 331 с.
  4. Диго С.М. Базы данных. Проектирование и создание. – УМК: ЕАОИ, 2011. – 171 с.
  5. Колисниченко Д. PHP и MySQL. Разработка веб-приложений. — БХВ-Петербург, 2015. — 573 с.
  6. Никсон Р. Создаем динамические веб-сайты с помощью PHP, MySQL, JavaScript, CSS и HTML5. — Питер, 2016. — 767 с.
  7. Пьюривал С. Основы разработки веб-приложений. — Питер, 2015. — 272 с.
  8. Рындина А.С. Выбор платформы для разработки web-сайта. Вестник современных исследований. — 2017 С. 103-107
  9. Сэмми Пьюривал Основы разработки веб-приложений. — Питер, 2015. — 272 с.
  10. Тарасов С. СУБД для программиста. Базы данных изнутри. — СОЛОН-Пресс, 2015. — 322 с.
  11. Терри Фельке-Моррис Большая книга веб-дизайна. — Эксмо, 2012. — 606 с.
  12. Рамальо Л. Python. К вершинам мастерства. — ДМК Пресс, 2016. — 770 с.
  13. Jessica Miller, Victoria Kirst, Marty Stepp Web Programming Step by Step. — Step by Step Publishing, 2012. — 668 p.
  14. Jeff Gothelf Lean UX: Designing Great Products with Agile Teams. — O'Reilly Media, 2016. — 208 p.
  15. Jeffrey A. Hoffer Modern Database Management. — Pearson, 2015. — 601 p.
  16. Regina O. Obe , Leo S. Hsu PostgreSQL: Up and Running: A Practical Guide to the Advanced Open Source Database 3rd Edition. — O'Reilly Media, 2017. — 314 p.
  17. Xia Jiajia UI/UX Meet Up. — Artpower International, 2017. — 240 p.
  18. Laine Campbell Database Reliability Engineering: Designing and Operating Resilient Database Systems. — O'Reilly Media, 2017. — 294 p.
  19. Preal.ru [Электронный ресурс] Статьи о веб-разработке Режим доступа http://preal.ru/webhist/istoriya-razvitiya-veb-saytov-web-razrabotki/ (Дата обращения 13.01.2019)
  20. HyperHost [Электронный ресурс] О Node.js для начинающих Режим доступа https://hyperhost.ua/info/o-node-js-dlya-nachinayushhih/ (Дата обращения 13.01.2019)