Обзор архитектурных компонентов современного веб-приложения
Краткий обзор элементов классической трехуровневой архитектуры для современных Web-приложений с помощью популярного языка для реализации серверной логики программирования Java. Характеристика современных тенденций в разработке приложений данного типа.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | статья |
Язык | русский |
Дата добавления | 28.11.2020 |
Размер файла | 12,2 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Обзор архитектурных компонентов современного веб-приложения
Волков А.С. студент магистратуры 3 курс, факультет заочного обучения Поволжский государственный университет телекоммуникаций и информатики Россия, г. Самара
Волкова К.А. студент магистратуры 3 курс, факультет заочного обучения Поволжский государственный университет телекоммуникаций и информатики Россия, г. Самара
Аннотация
веб приложение программирование
Статья содержит краткий обзор элементов классической трехуровневой архитектуры для современных Web- приложений. В качестве языка для реализации серверной логики взят язык программирования Java. Затрагиваются современные тенденции по разработке приложений данного типа.
Ключевые слова: архитектура ПО, web-приложение, java, база данных.
Annotation
The article contains a brief overview of the elements of the classic three-tier architecture for modern Web applications. The programming language Java is taken as the language for the implementation of server logic. It affects current trends in the development of applications of this type.
Key words: software architecture, web application, java, database.
Классическая архитектура веб-приложения представлена в виде трехуровневой структуры: слой представления (пользовательский интерфейс), слой бизнес логики (сервер) и слой хранения данных (база данных). Очевидно, что название того или иного слоя определяет суть решаемой на данном слое проблемы. При этом функциональная характеристика системы, как совокупность возможных операций системы, может затрагивать как все три слоя, так и только один из них. Кроме функциональности, информационным системам свойственны такие категории стабильность и надежность, масштабируемость и кластеризация, гибкость и сложность поддержки. В данной статье приведен обзор современных средств, применяемых в различных архитектурах приложений с позиции серверного разработчика на языке программирования Java.
Слой представления
Технически существует возможность разработки пользовательского интерфейса с помощью сервер-ориентированных технологий на базе Java: есть реализации спецификаций Java Enterprise Edition вроде JavaServer Faces, JavaServer Pages; шаблонизатор Spring Thymeleaf или библиотеки, транслирующие Java-код в оптимизированный Javascript - GWT (Google Web Toolkit), Vaadin. Однако в индустрии основной выбор для пользовательского интерфейса строится вокруг применения HTML в связке с JavaScript или любого производного от него фреймворка (программного каркаса) вроде AngularJS, React, Ember. С точки зрения архитектора системы выбор технологии для разработки пользовательского интерфейса часто диктуется навыками и умениями текущей команды разработчиков. В случае, если в команде программисты не обладают навыками работы с Javascript-решениями для реализации данной задачи, то вполне оправдан выбор сервер - ориентированных технологий вроде GWT. При плохом проектировании данный подход может неизбежно привести к повышению связанности серверного кода и его визуального представления. Разрешить данную проблему можно следуя принципам модульности и единственной ответственности каждого компонента системы. Неплохим решением было бы разделение слоя бизнес логики и пользовательского интерфейса сетевыми вызовами.
Слой бизнес логики
Слой бизнес логики, серверный слой или так называемый Middleware может базироваться на реализации спецификаций Java Enterprise Edition [1] - Web Application Server вроде WildFly от RedHat, WebLogic от Oracle или WebSphere от IBM. Данные сервера приложений предлагают разработчику целую платформу, берущую на себя обязанность по соединению с базой данных, кластеризацию, балансировку нагрузки и мониторинг. Однако наиболее популярным решением для серверной логики сегодня является другой подход - использование Spring Framework [2]. Он обладает высокой степенью модульности, имеет множество интеграций с популярными библиотеками, позволяет реализовать различные подходы вроде реактивного программирования основанное на событийной модели, REST-сервисов. Среди модулей данного программного каркаса значатся: Spring Data JPA (работа с БД), Spring MVC (API), Spring Security (безопасность и аутентификация) и т.д. Многие начинающие разработчики сталкиваются с проблемой конфигурации базового окружения, которое бы позволило приступить к непосредственному написанию самого приложения. В данном вопросе производители стремятся облегчить настройку и выпускают версии фреймворка в виде стартеров с набором заранее предопределенных параметров и автоматическим подключением более низкоуровневых библиотек. Яркий пример - Spring Boot.
Брокеры сообщений
Для взаимодействия между компонентами или интеграции с внешними системами в архитектуре приложения, не обязательно написанного на Java, может применяться брокер сообщений. В свою очередь брокер сообщений осуществляет маршрутизацию, возможно гарантирует доставку, распределение потоков данных, подписку на нужные типы сообщений. Примерами брокеров сообщений могут служить - RabbitMQ, ActiveMQ, Kafka.
Слой хранения данных
Реляционные базы данных, например, Oracle Database, PostgreSQL, MySQL, предоставляют широкий функционал по хранению, индексации, репликации и масштабированию данных. Выбор конкретной базы зависит от потенциальной нагрузки, объема данных и финансовых возможностей. SQL базы данных все также остаются стандартом для индустрии, но можно выделить класс задач, которые специализированные средства решают эффективней. Приведем пример: если схема данных меняется так стремительно, что поддерживать разработку в реляционной базе данных становится крайне сложно, решением может быть использование MongoDB. Эта документоориентированная СУБД не требует описания схемы таблиц данных. Проведем сравнение NoSQL и SQL баз данных.
Таблица 1. Сравнение SQL и NoSQL баз данных
MySQL |
MongoDB |
|
Проверенная временем технология, реализующая стандарт SQL. Можно реализовать переход на другие SQL базы данных. Есть поддержка транзакций, возможность тонкой настройки. Относительно сложный языкзапросовчерезSQL. Реляционная структура требует большего планирования и контроля. |
Гибкий JSON формат документов, не требующий изучения сложного SQL. Как следствие простые запросы позволяют допускать меньше ошибок при разработке. Есть возможность динамическименятьсхему документа.Встроенная масштабируемость. Плохо подходит длятранзакционныхопераций. NoSQL-структура дает большую скорость разработки. |
Для хранения и быстрого доступа к некоторой очень востребованной выборке данных, например, сведений об учетной записи текущего пользователя и его правах в системе, могут применяться распределенные кэши (хранилища типа ключ-значения). С удешевлением стоимости оперативной памяти это привело к буму развития распределенных хранилищ данных в памяти, так называемых In-Memory Data Grid. Яркие представители: memcached, Hazelcast, Apache Ignite. Для некоторых доменных областей существуют специализированные средства хранения данных, например, хранилище типа «ключ-значение» Chronicle Map применяется в области трейдинга.
Вывод
Подводя итог, надо отметить, что это далеко не все, что можно встретить в архитектуре современного веб-приложения. Необходимость выдерживать нагрузку под большим числом запросов поставило перед инженерами задачу масштабирования и эффективного развертывания дополнительных экземпляров, балансировки нагрузки (Docker, Kubemetes). Крупные монолитные приложения стали разбивать на небольшие «микросервисы» [3] (Spring Cloud, Netflix OSS). В трендах интеллектуальный анализ, машинное обучение, Big Data. Новые объемы данных и нагрузки порождают спрос на системы мониторинга и поиска по системам логирования (Elasticsearch, Logstash, Kibana). Помимо компонентов архитектуры активно совершенствуются и инструменты разработки, тестирования, сборки и развертывания. Выбор той или иной архитектуры, а также конкретных её компонентов должен проводиться, отталкиваясь от бизнес-требований, технических деталей конкретных решений, компетенций и размера команды разработчиков.
Использованные источники
1. Гупта, А. Java EE 7: Основы / А. Гупта.-- М.: Вильямс, 2014.-- 336 с.
2. Уоллс, К. Spring в деиствии / К. Уоллс.-- М.: ДМК Пресс, 2013.-- 752 с.
3. Microservices. [Электронный ресурс]. URL: https://martinfowler.com/articles/microservices.html (дата обращения: 15.12.2018)
Размещено на Allbest.ru
...Подобные документы
Создание языка программирования с помощью приложения "Java". История названия и эмблемы Java. Обзор многообразия современных текстовых редакторов. Обработка строки. Методы в классе String. Java: задачи по обработке текста. Примеры программирования.
курсовая работа [276,1 K], добавлен 19.07.2014Изучение особенностей операционной системы, набора программ, контролирующих работу прикладных программ и системных приложений. Описания архитектуры и программного обеспечения современных операционных систем. Достоинства языка программирования Ассемблер.
презентация [1,3 M], добавлен 22.04.2014Особенности архитектуры Java. Технология Java Database Connectivity. Кроссплатформенность Java-приложений. Преимущества языка программирования. Логическая структура базы данных. Структура программного комплекса. Верификация программных средств.
курсовая работа [962,8 K], добавлен 13.01.2016Кратка историческая справка развития языка Java. Анализ предметной области. Java platform, enterprise and standart edition. Апплеты, сервлеты, gui-приложения. Розработка программного кода, консольное приложение. Результаты работы апплета, сервлета.
курсовая работа [549,2 K], добавлен 23.12.2015Технология создания многопоточных приложений в современных системах программирования с использованием языка C# в Visual Studio.NET. Разработка алгоритма и структуры программы. Описание и особенности тестирования приложения с разным количеством потоков.
курсовая работа [773,0 K], добавлен 14.03.2013Разработка технологии и средств реализации Java-приложения, сокращающих трудоемкость создания и гибкость модификации интерфейса пользователя. Использование XML-документов для описания внешнего представления, элементов управления и событий экранных форм.
дипломная работа [2,8 M], добавлен 19.08.2011Ознакомление с проблемами реализации сервис-ориентированной архитектуры предприятия. Анализ активных элементов бизнес-архитектуры. Рассмотрение инструментов реализации языка ArchiMate в программном средстве Archi. Исследование мотивационных концепций.
курсовая работа [2,0 M], добавлен 25.08.2017Основные принципы написания оконных приложений с графическим интерфейсом на языке Java в среде Eclipse. Управление компоновками компонентов: показ диалоговых окон, вывод графической информации. Структура приложения и размещение элементов интерфейса.
лабораторная работа [1,1 M], добавлен 01.05.2014Создание клиент-серверного приложения "Чат" с помощью среды визуальной разработки приложений Borland C++ Builder версии 6. Описание функциональности приложения: наличие клиент-серверной архитектуры, обмен короткими сообщениями, а также передача файлов.
курсовая работа [302,0 K], добавлен 30.01.2012Первое устройство, работающее под управлением Android. Приложения под операционную систему Android. Формат установочных пакетов. Разработка приложений на языке Java. Шаблоны основных пакетов и компонентов Android. Сборка приложений, основанная на Gradle.
курсовая работа [492,0 K], добавлен 08.02.2016Обзор программных средств разработки приложений и обоснование выбора языка программирования. Классификация приложений для работы с базами данных. Функциональная структура базы данных с указанием назначения программных модулей, руководство пользователя.
дипломная работа [645,3 K], добавлен 21.11.2010Общая характеристика и оценка возможностей языка программирования си-шарп, его сходные и отличительные черты от С++ и Java. Разработка с помощью данного языка программирования лексического и синтаксического анализатора. Составление таблиц разбора.
курсовая работа [111,6 K], добавлен 11.06.2010Структура базы данных. Визуализация трехуровневой архитектуры, состоящей из презентационного слоя, бизнес-слоя и слоя баз данных, реализованной с помощью UML схем. Основные структурные особенности трехслойных приложений. Исходный код некоторых модулей.
курсовая работа [989,9 K], добавлен 03.11.2012Разработка графического редактора для рисования двухмерной и трехмерной графики, используя язык программирования Java и интерфейсы прикладного программирования Java 2D и Java 3D. Создание графического редактора 3D Paint. Основные методы класса Graphics.
курсовая работа [197,5 K], добавлен 19.11.2009Обзор подходов к разработке музейных приложений с элементами дополненной реальности, формирование требований к ним. Выбор методов разработки приложения, разработка пользовательского интерфейса. Принципы тестирования. Реализация раздела "Распознавание".
дипломная работа [2,8 M], добавлен 03.07.2017Общая характеристика языков программирования. Краткий обзор C, C++, Java, PHP, Python, Delphi и Visual Basic. Процесс разработки программы игра "Крестики и нолики" с помощью AppWizard. Компиляция и компоновка модулей, определение интерфейса приложения.
курсовая работа [2,5 M], добавлен 27.05.2014Архитектура операционной системы Android, набор библиотек для обеспечения базового функционала приложений и виртуальная машина Dalvik. Объектно-ориентированный язык программирования Java как инструмент разработки мобильных приложений для ОС Android.
дипломная работа [1,6 M], добавлен 08.07.2015Знакомство с этапами разработки трёх приложений для системы семейства Linux с использованием языка программирования С++. Анализ особенностей операционной системы Ubuntu 12.10. Характеристика способов тестирования команд с помощью стандартных средств.
контрольная работа [732,1 K], добавлен 06.08.2013Выбор и обоснование аппаратного обеспечения. Типы архитектуры веб-приложений. Шаблоны проектирования архитектуры приложения. Разработка инфологической модели базы данных. Подготовка к разработке приложения. Рассмотрение причин возникновения паттернов.
дипломная работа [3,0 M], добавлен 27.11.2022Современное состояние рынка мобильных приложений. Основные подходы к разработке мобильных приложений. Обоснование выбора целевой группы потребителей приложения. Этапы проектирования и разработки мобильного приложения для операционной системы Android.
курсовая работа [987,1 K], добавлен 27.06.2019