Веб-приложение ( или веб-приложение ) — это прикладное программное обеспечение , доступ к которому осуществляется с помощью веб-браузера . Веб-приложения предоставляются пользователям во Всемирной паутине с активным сетевым подключением. [1] Внедрение веб-приложений в начале 2000-х годов обеспечило большую гибкость для разработчиков и пользователей с клиентскими интерфейсами.
Существует несколько различных систем уровней, которые веб-приложения используют для связи между веб-браузерами, клиентским интерфейсом и данными сервера. Каждая система имеет свое собственное применение, поскольку функционирует по-разному. Однако существует множество рисков безопасности, о которых разработчики должны знать во время разработки; надлежащие меры по защите пользовательских данных имеют жизненно важное значение.
Одностраничный и прогрессивный — два подхода к веб-сайту , которые делают его более похожим на нативное приложение.
Концепция «веб-приложения» впервые была введена в языке 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-уровневый подход; наибольшее преимущество которого заключается в том, как бизнес-логика (которая находится на уровне приложения) разбивается на более мелкозернистую модель. [2] Другим преимуществом было бы добавление уровня интеграции, который разделяет уровень данных и предоставляет простой в использовании интерфейс для доступа к данным. [2] Например, доступ к клиентским данным будет осуществляться путем вызова функции «list_clients()» вместо выполнения SQL- запроса непосредственно к клиентской таблице в базе данных. Это позволяет заменить базовую базу данных без внесения каких-либо изменений в другие уровни. [2]
Некоторые рассматривают веб-приложение как двухуровневую архитектуру. Это может быть «умный» клиент, который выполняет всю работу и запрашивает «тупой» сервер, или «тупой» клиент, который полагается на «умный» сервер. [2] Клиент будет обрабатывать уровень представления, сервер будет иметь базу данных (уровень хранения), а бизнес-логика (уровень приложения) будет находиться на одном из них или на обоих. [2] Хотя это увеличивает масштабируемость приложений и разделяет отображение и базу данных, это все еще не позволяет обеспечить настоящую специализацию слоев, поэтому большинство приложений перерастут эту модель. [2]
Нарушения безопасности в таких приложениях вызывают серьезную озабоченность, поскольку они могут затрагивать как корпоративную информацию, так и личные данные клиентов. Защита этих активов является важной частью любого веб-приложения, и есть некоторые ключевые операционные области, которые должны быть включены в процесс разработки. [3] Сюда входят процессы аутентификации, авторизации, обработки активов, ввода, регистрации и аудита. Встраивание безопасности в приложения с самого начала иногда более эффективно и менее разрушительно в долгосрочной перспективе.
Написание веб-приложений упрощается с использованием фреймворков веб-приложений . Эти фреймворки способствуют быстрой разработке приложений , позволяя команде разработчиков сосредоточиться на тех частях своего приложения, которые являются уникальными для их целей, без необходимости решать общие проблемы разработки, такие как управление пользователями. [4] Многие из используемых фреймворков являются программным обеспечением с открытым исходным кодом .
Кроме того, существует потенциал для разработки приложений на основе интернет-операционных систем , хотя в настоящее время существует не так много жизнеспособных платформ, соответствующих этой модели. [ необходима цитата ]
Веб-приложение — это компьютерная программа, которая использует веб-браузеры и веб-технологии для выполнения задач через Интернет.