Научная статья на тему 'ТРЕХУРОВНЕВАЯ АРХИТЕКТУРА МИКРОСЕРВИСА В ASP.NET'

ТРЕХУРОВНЕВАЯ АРХИТЕКТУРА МИКРОСЕРВИСА В ASP.NET Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
539
43
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
NET CORE / ЧИСТАЯ АРХИТЕКТУРА / РАЗРАБОТКА ПРОГРАММНЫХ СРЕДСТВ / ПРОГРАММНАЯ ИНЖЕНЕРИЯ / МИКРОСЕРВИС / ТРЕХУРОВНЕВАЯ АРХИТЕКТУРА / ВЕБ РАЗРАБОТКА

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Селяков М.А.

В статье рассмотрен трехуровневый подход при разработке микросервисов с использованием языка программирования C# и кроссплатформенной технологии .NET CORE.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Селяков М.А.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «ТРЕХУРОВНЕВАЯ АРХИТЕКТУРА МИКРОСЕРВИСА В ASP.NET»

УДК 1

Селяков М.А.

студент

Санкт-Петербургский государственный экономический университет

(Россия, г. Санкт-Петербург)

ТРЕХУРОВНЕВАЯ АРХИТЕКТУРА МИКРОСЕРВИСА В ASP.NET

Аннотация: в статье рассмотрен трехуровневый подход при разработке микросервисов с использованием языка программирования C# и кроссплатформенной технологии .NET CORE.

Ключевые слова: .NET CORE, чистая архитектура, разработка программных средств, программная инженерия, микросервис, трехуровневая архитектура, веб разработка.

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

Например, пользовательский интерфейс веб-приложения может быть

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

логику и логику доступа к данным. Эта архитектурная система часто идеально подходит

для встраивания и интеграции стороннего программного обеспечения в существующее

приложение. Эта гибкость интеграции также делает его идеальным для встраивания

аналитического программного обеспечения в уже существующие приложения и по этой

причине часто используется поставщиками встроенных аналитических средств. 376

уровневые архитектуры часто используются в облачных или локальных приложениях,

а также в приложениях «программное обеспечение как услуга»

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

способ логического размещения функционала приложения по 3 разным уровням, но и

подход, позволяющий легко масштабировать систему ввиду слабых зависимостей

между уровнями. Классический проект ASP.NET в соответствии с трехуровневый

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

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

отдельных проектов. Автор рекомендует создавать проекты для написания

интеграционных и юнит тестов, DI модуль, проект-контракт, если ваше API

используется каким-либо другим ресурсом внутри компании. В общие рекомендации

по использованию подхода автор рекомендует придерживаться общепринятых в

современном мире разработке принципов (SOLID, GoF, KISS)

Уровень представления - уровень представления является внешним уровнем в

3-уровневой системе и состоит из пользовательского интерфейса. Этот

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

браузер или веб-приложение, и отображает контент и информацию, полезные для

конечного пользователя. Этот уровень часто основан на веб-технологиях, таких как

HTML5, JavaScript, CSS или других популярных средах веб-разработки, и

взаимодействует с другими уровнями посредством вызовов API.

В контексте применения такого подхода в технологии ASP.NET, уровень

представления - само приложение ASP.NET. Автор рекомендует определять

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

использует сервис (данных и приложения), маппинг моделей DTO в бизнес-модели,

валидаторы, контроллеры API и/или UI и набор визуальных компонент, если есть

необходимость. Автор предлагает использовать для маппинга моделей библиотеку

Джимми Богарда «AutoMapper», а при недостатке функционала встроенного DI

менеджера советует рассмотреть DI контейнер «AutoFac». При разработке API

рекомендуется использовать библиотеку Swagger для контроля корректности работы.

Самый частый подход написания API - REST, который позволяет покрыть классические

77

потребности большинства бизнес-приложений. Если REST подход не удовлетворяет всех требований к API в конкретной ситуации, автор рекомендует рассмотреть возможность использования GraphQL или (g)RPC подходов.

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

В уровни приложений рекомендуется размешать: валидаторы, бизнес-модели, их маппинг на модели уровня доступа данных и Gateway клиентов. Gateway клиенты -паттерн рекомендуемый автором для реализации взаимодействия с другими API, выделяемого в отдельный проект для каждого из ресурсов, класс регистрации всех необходимых сервисов и вспомогательных модулей в соответствии с DI библиотекой, которая была применена в уровне представления. Интерфейсы и их реализации стоит размещать в разных проектах для создания менее связанного кода, также в отдельный проект имеет смысл выносить бизнес-модели.

Уровень данных. Уровень данных состоит из технологии эксплуатации базы данных (ORM) и валидаторов, вспомогательных модулей. Автор рекомендует выделять модели хранения данных, интерфейсы и их реализации в разные проекты. Автор считает, что наилучшим способом написания слабосвязанного кода

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

Глоссарий

API (application programming interface) - любой способ взаимодействия одной программы с другой.

DI (dependency imjection) - один из принципов программирования SOLID

SOLID - свод правил и принципов объектно-ориентированного программирования, где каждая буква - принцип\правило.

KISS (keep it simple, stupid) - принцип программирования, зародившийся в 60-х годах 20 века, рекомендующий преследовать простоту при написании любых программ (например, функции не более 20 строк кода или для понимания происходящего в конкретной функции необходимо потратить не более 30 секунд)

GoF (gang of four) - подход в программировании направленный на создание кода таким образом, чтобы его можно было использовать повторно в других проектах.

RPC (remote procedure calling) - сокращение, подразумевающее удаленный вызов процедур\функций.

GraphQL - расширение технологии REST для приложений с множеством различных источников данных в серверной части.

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

Фронтенд - часть информационной системы, через которую пользователь взаимодействует с серверной частью.

DTO (data transfer object) - Объект для передачи данных, в контексте ASP.NET -класс с определенной структурой.

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

Мартин Роберт. Чистая архитектура. Искусство разработки программного обеспечения. // Издание «Питер» 2018 г.

Эрик Фриман, Элизабет Фриман, Кэти Сиера, Берст Бейтс. Паттерны проектирования // Издание «Питер» 2011 г.

Троелсен Эндрю, Джепикс Филипп. Язык программирования C# 7 и платформы .NET и .NET Core // Издание «Вильямс» 2018 г.

i Надоели баннеры? Вы всегда можете отключить рекламу.