Веб -приложение (или веб-приложение ) — это прикладное программное обеспечение , созданное с помощью веб-технологий и работающее через веб-браузер . [1] [2] Веб-приложения появились в конце 1990-х годов и позволили серверу динамически формировать ответ на запрос, в отличие от статических веб-страниц . [3]
Веб-приложения обычно распространяются через веб-сервер . Существует несколько различных систем уровней, которые веб-приложения используют для связи между веб-браузерами, клиентским интерфейсом и данными сервера. Каждая система имеет свое собственное применение, поскольку функционирует по-разному. Однако существует множество рисков безопасности, о которых разработчики должны знать во время разработки; надлежащие меры по защите пользовательских данных имеют жизненно важное значение.
Веб-приложения часто создаются с использованием фреймворка веб-приложений . Одностраничный и прогрессивный — два подхода, позволяющие веб -сайту выглядеть более похожим на нативное приложение.
Концепция «веб-приложения» впервые была введена в языке Java в спецификации сервлетов версии 2.2, выпущенной в 1999 году. В то время уже были разработаны и JavaScript, и XML , но объект XMLHttpRequest был представлен только недавно в Internet Explorer 5 как объект ActiveX . [ необходима цитата ] Начиная примерно с начала 2000-х годов, такие приложения, как « Myspace (2003), Gmail (2004), Digg (2004), [и] Google Maps (2005)», начали делать свои клиентские стороны все более и более интерактивными. Скрипт веб-страницы может связываться с сервером для сохранения/извлечения данных без загрузки всей веб-страницы. Эта практика стала известна как Ajax в 2005 году.
В более ранних вычислительных моделях, таких как клиент-сервер, нагрузка по обработке для приложения делилась между кодом на сервере и кодом, установленным на каждом клиенте локально. Другими словами, приложение имело свою собственную предварительно скомпилированную клиентскую программу, которая служила его пользовательским интерфейсом и должна была быть отдельно установлена на персональном компьютере каждого пользователя . Обновление серверного кода приложения обычно также требовало обновления клиентского кода, установленного на каждой рабочей станции пользователя, что увеличивало стоимость поддержки и снижало производительность . Кроме того, как клиентские, так и серверные компоненты приложения были тесно привязаны к определенной компьютерной архитектуре и операционной системе , что делало их перенос на другие системы непозволительно дорогим для всех приложений, кроме самых крупных.
Позже, в 1995 году, Netscape представил клиентский язык сценариев под названием JavaScript , который позволил программистам добавлять динамические элементы в пользовательский интерфейс, работающий на стороне клиента. По сути, вместо отправки данных на сервер для генерации целой веб-страницы, встроенные скрипты загруженной страницы могут выполнять различные задачи, такие как проверка ввода или отображение/скрытие частей страницы.
« Прогрессивные веб-приложения » — термин, придуманный дизайнером Фрэнсис Берриман и инженером Google Chrome Алексом Расселом в 2015 году, относится к приложениям, использующим новые функции, поддерживаемые современными браузерами, которые изначально работают во вкладке веб-браузера, но позже могут работать полностью в автономном режиме и могут быть запущены без ввода URL-адреса приложения в браузере.
Традиционные приложения для ПК обычно одноуровневые и размещаются исключительно на клиентской машине. Напротив, веб-приложения по своей сути способствуют многоуровневой архитектуре. Хотя возможны многие вариации, наиболее распространенной структурой является трехуровневое приложение . В своей наиболее распространенной форме три уровня называются представлением , приложением и хранилищем . Первый уровень, представление, относится к самому веб-браузеру. Второй уровень относится к любому движку, использующему технологию динамического веб-контента (такую как ASP , CGI , ColdFusion , Dart , JSP/Java , Node.js , PHP , Python или Ruby on Rails ). Третий уровень относится к базе данных, которая хранит данные и определяет структуру пользовательского интерфейса. По сути, при использовании трехуровневой системы веб-браузер отправляет запросы движку, который затем обслуживает их, выполняя запросы и обновления в базе данных и генерируя пользовательский интерфейс.
Трехуровневое решение может оказаться неэффективным при работе с более сложными приложениями и может потребовать замены на n-уровневый подход; наибольшее преимущество которого заключается в том, как бизнес-логика (которая находится на уровне приложения) разбивается на более мелкозернистую модель. [4] Другим преимуществом было бы добавление уровня интеграции, который разделяет уровень данных и предоставляет простой в использовании интерфейс для доступа к данным. [4] Например, доступ к клиентским данным будет осуществляться путем вызова функции «list_clients()» вместо выполнения SQL- запроса непосредственно к клиентской таблице в базе данных. Это позволяет заменить базовую базу данных без внесения каких-либо изменений в другие уровни. [4]
Некоторые рассматривают веб-приложение как двухуровневую архитектуру. Это может быть «умный» клиент, который выполняет всю работу и запрашивает «тупой» сервер, или «тупой» клиент, который полагается на «умный» сервер. [4] Клиент будет обрабатывать уровень представления, сервер будет иметь базу данных (уровень хранения), а бизнес-логика (уровень приложения) будет находиться на одном из них или на обоих. [4] Хотя это увеличивает масштабируемость приложений и разделяет отображение и базу данных, это все еще не позволяет обеспечить настоящую специализацию слоев, поэтому большинство приложений перерастут эту модель. [4]
Нарушения безопасности в таких приложениях вызывают серьезную озабоченность, поскольку они могут затрагивать как корпоративную информацию, так и личные данные клиентов. Защита этих активов является важной частью любого веб-приложения, и есть некоторые ключевые операционные области, которые должны быть включены в процесс разработки. [5] Сюда входят процессы аутентификации, авторизации, обработки активов, ввода, регистрации и аудита. Встраивание безопасности в приложения с самого начала иногда более эффективно и менее разрушительно в долгосрочной перспективе.
Написание веб-приложений упрощается с использованием фреймворков веб-приложений . Эти фреймворки способствуют быстрой разработке приложений , позволяя команде разработчиков сосредоточиться на тех частях своего приложения, которые являются уникальными для их целей, без необходимости решать общие проблемы разработки, такие как управление пользователями. [6]
Кроме того, существует потенциал для разработки приложений на основе интернет-операционных систем , хотя в настоящее время существует не так много жизнеспособных платформ, соответствующих этой модели. [ необходима цитата ]