Добавлен: 15.05.2023
Просмотров: 577
Скачиваний: 5
СОДЕРЖАНИЕ
1. История и проблематика развития веб-технологий
2. Выбор языка программирования, фреймворка, CMS для написания веб-приложения
2.1. Классификация веб-проектов
2.2. Обзор языков программирования для веб-разработки
2.4. Системы управления контентом (CMS)
2.7. Тренды развития веб-технологий
3. Выбор инструментов для разработки веб-приложений
3.1. Интегрированные среды разработки
ВВЕДЕНИЕ
Веб-технологии прочно вошли в повседневную жизнь большинства жителей развитых стран. Они используются как в экономике, так и в быту. Каждый день в Интернете возникает множество полезных веб-сервисов, поскольку технологии создания нтернет-страниц сравнительно просты для освоения, не связаны с большими затратами. Сегодня свой сайт в состоянии создать даже малое предприятие или частное лицо, решившее выйти на рынок со своим уникальным товаром или услугой.
Веб-приложение - программное обеспечение, ориентированное на решение определенных прикладных задач, таких как заказ товаров и услуг, математические расчеты, обработка графики и т.п. В отличие от обычного компьютерного приложения, например, графических редакторов или калькуляторов, входящих в состав популярных операционных систем, веб-приложение программируется в виде веб-страницы, исполняемой в рамках программы-браузера (веб-клиента), предназначенной для просмотра таких страниц. Страница хранится на веб-сервере - программе, обслуживающей по сети запросы веб-клиентов. Сервер, размещенный, как правило, в сети Интернет, может участвовать в обработке информации веб-приложения наряду с клиентом.
За последние два десятилетия разработка веб-приложений (веб-разработка) прошла сложный путь. Менялись языки программирования, стандарты, концепции, появлялись новые классы устройств. Начав с простого синтаксиса html, эта отрасль сталкивалась в своем развитии с конкуренцией между методиками создания сайтов, кризисами, и даже пережила так называемую «войну браузеров». Всё это наложило отпечаток на сегодняшнее состояние программирования веб-приложений и должно учитываться при выборе инструментов для создания веб-приложений. О развитии Всемирной паутины и трудностях, с которыми столкнулись программисты в его ходе речь пойдет в первой главе настоящей работы.
Преодолев к началу 2010-х годов основные кризисные явления, веб-разработка превратилась в массовую отрасль IT-экономики. Появилось множество языков программирования и готовых решений, ориентированных на использование в веб-приложениях. Стремительное развитие отрасли приводило многие из них к уходу с рынка. Другие, напротив, за считанные месяцы набирали миллионы сторонников. В это движение включились крупные корпорации (Apple, Google, Microsoft), оказавшие сильное влияние на процесс развития. В результате современный рынок изобилует конкурирующими подходами к веб-разработке. Задача второй главы — рассмотреть и сравнить эти концепции, чтобы научиться выбирать наиболее подходящие для создания веб-приложения с заданными характеристиками.
Выбор платформы (оперционной системы, языка программирования, фреймворка), в рамках которой будет разрабатываться веб-приложение, подразумевает еще и организацию определенной инфраструктуры: в каком редакторе будет создаваться код программы? Какие инструменты будут использоваться для компилитования, сборки готового продукта, его отладки? С помощью каких средств программисты будут взаимодействовать друг с другом в процессе разработки? Ответам на эти вопросы посвящена третья глава настоящей работы.
1. История и проблематика развития веб-технологий
Чтобы понять причину успеха веб-технологий, а также проблемы, связанные с выбором средств разработки веб-приложений, следует иметь в виду историю их развития.
В начале 1990-х гг. специалист института ядерных исследований CERN Тим Бернерс Ли разработал набор компьютерных программ и методик, нацеленных на эффективный обмен электронной документацией:
- веб-сервер для хранения и раздачи таких документов;
- браузер (веб-клиент) для их просмотра;
- протокол (свод правил) для обмена такими документами http (Hyper Text Transfer Protocol);
- язык html (Hyper Text Markup Language) для их составления[1].
Электронные документы, предложенные Тимом Бернерсом Ли, отличались от уже существовавших к тому времени наличием гиперссылок. С их помощью можно легко переходить от одного документа к другому, даже если они размещены на разных серверах. Кроме того, правила составления таких документов (язык html) отличаются простотой. Их можно создавать без привлечения сложных средств разработки, просто расставляя т.н. тэги для выделения текста жирным, формирования заголовков, гиперссылок и т. п.
Тим Бернерс Ли выдвинул также концепцию Всемирной паутины[2] (www - World Wide Web), состоящей из связанных гиперссылками и протоколом http серверов, разместить которые в Интернете мог любой желающий. Она оказалась очень плодотворной. Количество веб-серверов в глобальной сети начиная с начала 1990-х гг. начало стремительно расти.

Рисунок 1: Простой html-документ для передачи по протоколу http в рамках взаимодействия веб-клиента и веб-сервера.
Довольно скоро в веб пришли коммерческие предприятия, стремившиеся сделать свои сайты как можно более привлекательными. На Всемирную паутину обратили внимание и крупные IT-корпорации, почувствовав, что ее популярность может стать источником прибыли. Всё это, с одной стороны, вело к дальнейшей интенсификации развития веб-технологий, с другой - довольно скоро породило ряд проблем, решение которых затянулось на долгие годы и некоторые из которых актуальны до сих пор и имеют отношение к теме настоящей работы.
Во-первых, на смену первым простейшим браузерам, таким как Mosaic[3] пришли два более совершенных конкурирующих программных продукта: браузеры Netscape Navigator[4] (независимая разработка) и Internet Explorer (от компании Microsoft). Вскоре выяснилось, что веб-страницы, созданные для одного из них, неправильно отображаются в конкурирующем. Разработчики браузеров стали дополнять язык html собственными тэгами и возможностями, что всё более усложняло разработку веб-страниц.
Противоречия в отображении веб-страниц и связанная с ними борьба корполраций в истории развития информационных технологий получили название “Войны браузеров”[5]. Позднее в нее включились разработчики таких популярных продуктов, как Opera, Google Chrome. В ходе этого противостояния Netscape Navigator был на время вытеснен с рынка и вернулся под новой маркой - Mozilla Firefox. “Войну браузеров” удалось более-менее урегулировать в начале 2010-х годов усилиями консорциума W3C.
Деятельность консорциума W3C — общественной международной организации, в состав которой входят как ведущие специалисты по веб-разработке, так и представители заинтересованных IT-корпораций - сосредоточена на развитии Всемирной паутины, основу которой составляют язык html, языки для сценариев интерактивных веб-страниц (JavaScript, DOM, DHTML, AJAX), протоколы передачи гипертекста (HTTP, HTTPS, XmlHttpRequest), идентификаторы интернет-ресурсов (URI, URL, IRI). Кроме того, к компетенции W3C относится веб-графика, мультимедийные средства с открытым кодом (svg, png и т.п.). Консорциум разрабатывает стандарты и рекомендации для веб-программистов, изготовителей соответствующего оборудования и ПО[6].

Рисунок 2: Структура парадигмы консорциума W3C.
Большим шагом вперед в упорядочивании веб-разработки как отрасли современной экономики и в преодолении анархии и конкуренции на рынке стало принятие 28 октября 2014 г. стандарта html5, в котором интересы всех заинтересованных сторон (в первую очередь разработчиков наиболее популярных браузеров) были приведены к компромиссным вариантам. Была проведена большая обобщающая работа, позволившая взять лучшее из наработок конкурирующих корпораций, а также положить начало устранению устаревших и потенциально опасных практик анимации и интерактивности, таких, как вставки Adobe Flash и Java Applets. Вместо них были предложены более современные, безопасные и эффективные технологии (Canvas, SVG, тэги audio и video и т. д.)[7].
Следует отметить, что несмотря на все перечисленные усилия, некоторые последствия веб-анархии 1990-2000-х гг. ощущаются в сфере разработки сайтов до сих пор, например, программистам всё еще требуется прилагать дополнительные усилия для того, чтобы страницы выглядели во всех браузерах одинаково.
Источником проблем для развития Всемирной паутины стала и непростая эволюция веб-серверов. Если первые программы такого рода были нацелены лишь на раздачу хранящихся на них документов, то очень скоро владельцы сайтов захотели возлагать на веб-серверы более сложные задачи: поиск по всей совокупности хранящихся на сайте документов, подстраивание ответов сервера под индивидуальные интересы пользователя, сохранение некоторых сведений о клиентах, посещающих сайт, ограничение доступа к части информации и т.п. Это привело к появлению на стороне серверов произвольных скриптов (CGI - Common Gateway Interface[8]), что позволило отправлять в ответ на запросы клиентов не статические файлы, а динамически формируемые документы, учитывающие передаваемые в запросах параметры.
Скрипты CGI стали быстро набирать популярность, и к концу 1990-х гг. для их написания приспособили несколько языков программирования: Perl, Bash, Си, C++ и т.д. Вскоре разработчики некоторых языков программирования обзавелись собственными реализациями веб-серверов. Например, для языка Java таким продуктом стал веб-сервер Tomcat[9]; компания Microsoft продвигает на рынке собственный комплект - Internet Infomation Services[10]; для бэкенд-разработок на языке Python существует сервер Jango[11]; для JavaScript — Express и другие решения на основе Node.js[12]. Отдельно следует упомянуть популярную технологию PHP[13], совмещающую в себе фрагменты кода на языке html и вставки, исполняемые на стороне сервера. На ее основе построено большое количество сайтов малого и среднего размера.
В целом можно сказать, что ситуация с выбором средств разработки на стороне сервера также оказалась конкурентной и также, как и в случае с браузерами несколько анархичной. Эта проблема усугублялась тем, что на стороне сервера необходимо обеспечивать соблюдение правил сетевой безопасности: надежное хранение персональных данных, защиту от несанкционированного доступа, всевозможных хакерских атак и т.п. Перечисленные платформы по-разному решают эти проблемы и некоторые из них обладают специфическими уязвимостями, что следует учитывать при выборе технологии серверной части веб-приложения.

Рисунок 3: Уязвимость различных веб-серверов.
Еще одним фактором, способствующим неопределенности в выборе веб-технологий, является многообразие так называемых фреймворков - наборов программного обеспечения и синтаксисов, способствующих более скоростной и эффективной веб-разработке. Если изначальный вариант языка html был довольно компактен и прост, то со временем он существенно расширился за счет подключения всё новых возможностей. Современный html5 - довольно обширный стандарт, требующий для своего детального освоения существенных затрат времени, несмотря на то, что принципы написания тэгов остались такими же, какими они были в начале 1990-х гг.
Возможности html расширены за счет двух сопутствующих технологий: стилевых таблиц css[14] (Cascade Style Sheets) и JavaScript[15] - специальный язык программирования, поддерживаемый современными браузерами и позволяющий предать веб-страницам дополнительные интерактивные возможности. Таким образом, css и JavaScript (js) - дополнительные области знания, которые вынужден осваивать современный веб-разработчик, причем сложность их синтаксисов достаточно высока и тоже требует затрат времени на изучение[16].
Современные фреймворки - Angular, React, Vue и другие ставят своей целью облегчить создание веб-компонентов, построенных на совокупности упомянутых трех технологий (html, css, JavaScript), а также упростить написание процедур для обмена информацией с сервером. Однако сами фреймворки также являются достаточно сложными концепциями и требуют затрат времени на освоение. При этом написанные на них компоненты плохо совместимы друг с другом. Однако создание веб-приложения посредством фреймворка предпочтительнее, чем программирование на «чистых» html, css, JavaScript, поскольку фреймворки предлагают много готовых решений, экономящих трудозатраты.
Таким образом, выбор технологий для разработки веб-приложения предполагает:
- выбор языка, на котором будет производиться разработка серверной части;
- выбор фреймворка, на котором будет оформляться клиентская часть (веб-страница, отображаемая в браузере);
- организация взаимодействия между клиентской и серверной частями.
Рассмотрению этих особенностей будет посвящена следующая глава настоящей работы.