ОШ МАМЛЕКЕТТИК УНИВЕРСИТЕТИНИН ЖАРЧЫСЫ
ВЕСТНИК ОШСКОГО ГОСУДАРСТВЕННОГО УНИВЕРСИТЕТА BULLETIN OF OSH STATE UNIVERSITY
ISSN: 1694-7452 e-ISSN: 1694-8610
№1/2024, 142-154
ИНФОРМАТИКА
УДК: 004.4'236
DOI: 10.52754/16948610 2024 1 13
РАЗРАБОТКА WEB СЕРВЕРНЫХ ПРИЛОЖЕНИЙ НА БАЗЕ .NET CORE В
ПРИМЕРЕ ИНТЕРНЕТ-МАГАЗИНА
^TEPHET^YKe^YH МИСАЛЫНДА .NET CORE БАЗАСЫНДА WEB СЕРВЕРДИК
ТИРКЕМЕЛЕРДИ ИШТЕП ЧЫГУУ
DEVELOPMENT OF WEB SERVER APPLICATIONS BASED ON NET CORE USING THE
EXAMPLE OF AN ONLINE STORE
Аркабаев Нуркасым Кылычбекович
Аркабаев Нуркасым Кылычбекович Arkabayev Nurkasym Kilychbekovich
к.ф.-м.н., доцент, Ошский государственный университет
ф.-м.и.к., доцент, Ош мамлекеттик университети Associate Professor, Osh State University narkabaev@,oshsu.kg
_ORCID: 0009-0000-1912-2225_
Алымова Зулайка Жолборсовна
Алымова Зулайка Жолборсовна Alymova Zulaika Zholborsovna
магистрант, Ошский государственный университет
магистрант, Ош мамлекеттик университети Master, Osh State University [email protected] ORCID: 0009-0004-0434-2902
РАЗРАБОТКА WEB СЕРВЕРНЫХ ПРИЛОЖЕНИЙ НА БАЗЕ .NET CORE В
ПРИМЕРЕ ИНТЕРНЕТ-МАГАЗИНА
Аннотация
Данная статья посвящена практическим вопросам использования платформы ASP.NET Core для разработки высоконагруженных веб-приложений. Актуальность темы обусловлена возрастающей популярностью веб-ориентированных бизнес-систем и необходимостью обеспечения их производительности при больших нагрузках. В работе приводится анализ возможностей и преимуществ использования технологий .NET для создания современных веб-проектов. А также, оотдельное внимание уделено аспектам оптимизации производительности веб-приложений на основе ASP.NET Core. В статье особый акцент сделан на нагрузочном тестировании разработанного решения с использованием стенда JMeter. На основании полученных метрик производительности выработан ряд рекомендаций по оптимизации узких мест и масштабированию подобных систем. Полученные в статье практические результаты могут быть использованы разработчиками веб-приложений для повышения эффективности использования технологий ASP.NET Core и создания высокопроизводительных решений.
Ключевые слова: ASP.NET Core, веб-API, MVC, REST, CRUD, Entity Framework, LINQ, SQL, JMeter.
ИНТЕРНЕТ-ДYКвНДYНМИСАЛЫНДА .NET CORE БАЗА СЫНДА WEB СЕРВЕРДИК ТИРКЕМЕЛЕРДИ ИШТЕП ЧЫГУУ
Аннотация
Бул макала жYктeмY абдан кеп болгон веб-тиркемелерди иштеп чыгууда ASP.NET Core платформасын пайдалануунун практикалык маселелерине арналган. Бул теманын актуалдуулугу вебге багытталган интернет жана бизнес системаларынын популярдуулугунун есушу менен шартталган жана ошондой эле жYктeмY абдан кеп болгон веб-тиркемелердин eндYPYмдYYЛYГYн камсыз кылуу зарылчылыгы менен тYШYндYPYлeт. Макалада заманбап веб долбоорлорун тYЗYY YЧYн .NET технологияларын пайдалануунун мYмкYнчYЛYктeрY жана артыкчылыктары талданат. Ошондой эле ASP.NET Core негизиндеги веб колдонмолорун eндYPYмдYYЛYГYн оптималдаштыруу аспектилерине eзгeчe кeнYл бурулат.
Макалада JMeter стендин колдонуу менен иштелип чыккан чечимдин жYктeмдYк тесттерине eзгeчe басым жасалган. Алынган eндYPYмдYYЛYктYк метриканын негизинде иштелип чыгылган системанын негизги маанилуу жерлерин оптималдаштыруу жана кецейтYY боюнча бир катар сунуштар иштелип чыкты. Макалада алынган практикалык жыйынтыктар веб-тиркемелерди иштеп чыгуучулар YЧYн ASP.NET Core технологияларын натыйжалуу пайдалануу жана жогорку eндYPYмдeгY жыйынтыктарды алуу мYмкYнчYЛYГYн берет. Ачкыч свздвр: ASP.NET Core, веб-API, MVC, REST, CRUD, Entity Framework, LINQ, SQL, JMeter.
DEVELOPMENT OF WEB SERVER APPLICATIONS BASED ON .NET CORE USING THE EXAMPLE OF AN ONLINE STORE
Abstract
This article is devoted to the practical issues of using the ASP.NET Core platform for developing high-load web applications. The relevance of the topic is due to the increasing popularity of web-oriented business systems and the need to ensure their performance under high loads. The paper provides an analysis of the capabilities and benefits of using .NET technologies to create modern web projects. Also, special attention is paid to aspects of optimizing the performance of web applications based on ASP.NET Core. The article places particular emphasis on load testing of the developed solution using the JMeter stand. Based on the obtained performance metrics, a number of recommendations have been developed for optimizing bottlenecks and scaling such systems. The practical results obtained in the article can be used by web application developers to increase the efficiency of using ASP.NET Core technologies and create high-performance solutions.
Keywords: ASP.NET Core, web API, MVC, CRUD, Entity Framework, LINQ, SQL, JMeter.
REST,
Введение
Веб-приложения становятся все более востребованным типом программного обеспечения в современном мире. По оценкам экспертов, к 2025 году доля облачных и веб-ориентированных сервисов и приложений составит около 80% от всего рынка корпоративного ПО [1, 8]. Это обусловлено рядом значительных преимуществ веб-приложений, включая кроссплатформенность, масштабируемость и снижение нагрузки на клиента.
Одной из наиболее востребованных платформ для разработки современных серверных веб-приложений является .NET от корпорации Microsoft. Она предоставляет разработчикам широкий набор готовых компонентов и инструментов, существенно ускоряющих процесс создания надежных и производительных приложений.
Однако на практике вопросы разработки масштабируемых высоконагруженных веб-приложений на базе .NET изучены недостаточно. Ряд аспектов, связанных с оптимизацией производительности, обеспечением отказоустойчивости, распределением нагрузки и вертикальным масштабированием остаются за рамками внимания.
Разработка веб-приложений является одним из наиболее востребованных направлений в IT-индустрии. По данным аналитических агентств, доля веб-приложений в общем объеме разрабатываемого программного обеспечения неуклонно растет и в настоящее время составляет более 50%. Это обусловлено рядом факторов.
Во-первых, веб-приложения позволяют значительно снизить издержки бизнеса за счет централизации бизнес-логики на стороне сервера и использования веб-браузера в качестве универсального клиента.
Во-вторых, такие приложения легко масштабируются для работы с большим количеством пользователей и обеспечивают кроссплатформенность.
Одной из наиболее перспективных и активно развивающихся платформ для разработки серверных веб-приложений является .NET от Microsoft. Она предоставляет разработчику широкий набор инструментов, ускоряющих разработку и позволяющих создавать отказоустойчивые и производительные приложения.
В испытаниях Performance Lab платформа .NET Core 3.1 продемонстрировала сопоставимую, а в ряде случаев и более высокую производительность по сравнению с конкурирующими технологиями, такими как Java и Node.js. Это делает платформу .NET одним из лучших выборов для критичных к скорости работы приложений.
Компания HotTech в своем отчете о разработке высоконагруженной системы обработки пользовательских запросов показала, что решение на базе платформы .NET оказалось на 20% эффективнее и масштабируемее аналогов, спроектированных с использованием Java.
Актуальность рассматриваемой темы
Несмотря на ряд очевидных достоинств, вопросы практического применения технологий .NET для разработки веб-приложений с высокими требованиями к производительности и масштабируемости остаются малоизученными которое определяет актуальности выбранной темы. Исследования возможностей платформы .NET для создания крупномасштабных
серверных веб-приложений и разработки практических рекомендаций в этой области считается самым актуальным вопросом в современности так как в последние годы набирает популярность концепция полностью веб-ориентированных предприятий, когда практически вся ИТ-инфраструктура компании, включая бизнес-системы, данные и приложения переносятся в веб. Это создает колоссальный спрос на надежные и производительные технологии для создания веб-приложений.
В условиях стремительного роста рынка онлайн-сервисов и веб-ориентированных бизнес-систем все более актуальным становится выбор оптимальных технологий и подходов для создания современных высоконагруженных веб-приложений. От того, насколько эффективно реализована серверная инфраструктура, напрямую зависит конкурентоспособность и масштабируемость таких систем.
Одним из наиболее востребованных наборов инструментов для разработки надежных и производительных веб-приложений в настоящее время является платформа ASP.NET Core. Она предоставляет готовую инфраструктуру для создания как backend систем, так и полноценных клиент-серверных веб-приложений.
Вместе с тем многие практические вопросы применения этого фреймворка, особенно для задач масштабирования и оптимизации производительности, остаются открытыми. Это определяет ценность обобщения опыта использования ASP.NET Core в реальных проектах и выработки рекомендаций для разработчиков.
Представленная статья как раз посвящена данной проблематике и соответствует запросам широкого круга разработчиков веб-приложений, заинтересованных в практическом применении новейших инструментов от Microsoft.
Научная новизна статьи
Научная новизна данной статьи заключается в следующих аспектах:
• впервые проведено комплексное практическое исследование производительности и масштабируемости веб-приложения среднего масштаба, разработанного с использованием современных инструментов платформы Microsoft - ASP.NET Core, Entity Framework Core и СУБД MS SQL Server;
• на основании результатов нагрузочного тестирования выявлены узкие места веб-приложения, разработанного на стеке технологий ASP.NET Core, и определен их качественный и количественный вклад в снижение общей производительности и масштабируемости системы;
• впервые получены практические данные по эффективности ряда методов оптимизации (асинхронная обработка запросов, кэширование, оптимизация LINQ-запросов и др.) веб-приложения на основе ASP.NET Core в условиях возрастающей нагрузки. Проведен сравнительный анализ эффективности различных подходов;
• сформулирован комплекс практических рекомендаций по использованию ASP.NET Core и связанных технологий для построения высокопроизводительных и масштабируемых веб-приложений на всех этапах жизненного цикла - от проектирования до развертывания и эксплуатации.
Цель исследования
Целю данного исследования является разработка веб-приложения для онлайн-магазина на платформе ASP.NET Core и исследование возможностей .NET по созданию высоконагруженных серверных веб-приложений с высокими требованиями к производительности и масштабируемости.
Задачами исследования является:
1. Анализ предметной области онлайн-торговли и существующих решений на рынке
2. Проектирование и разработка веб-приложения онлайн-магазина на платформе ASP.NET Core
3. Нагрузочное тестирование разработанного веб-приложения для определения показателей производительности
4. Анализ "узких" мест приложения и разработка рекомендаций по их оптимизации
5. Масштабирование и тестирование веб-приложения после оптимизации
6. Сравнение результатов и формулировка практических выводов о применении ASP.NET Core для высоконагруженных проектов
Материал и методы исследования
Материалом исследования в данной работе послужило веб-приложение для интернет-магазина, реализованное на платформе ASP.NET Core 5.0 с использованием языка программирования C#. В качестве СУБД была выбрана MS SQL Server 2019. Разработка велась с применением принципов чистой архитектуры и паттерна MVC.
Для размещения веб-приложения был задействован облачный сервис Azure App Service, позволяющий гибко масштабировать вычислительные ресурсы. Данные хранились в облаке с использованием полностью менеджируемой Azure SQL Database.
Тестирование разработанного решения проводилось на основе стенда, включающего в себя нагрузочное ПО JMeter, компоненты мониторинга производительности и набор тестовых сценариев, имитирующих поведение пользователей онлайн-магазина.
Методика исследования включала этап проектирования и разработки веб-приложения интернет-магазина, за которым следовало нагрузочное тестирование полученного решения. На основе собранных в ходе тестирования метрик производительности выявлялись узкие места приложения. Далее проводилась оптимизация архитектуры, запросов к БД и программного кода. После оптимизации было проведено повторное тестирование и сравнение результатов.
Такой комплексный подход к исследованию позволил объективно оценить сильные и слабые стороны технологий ASP.NET Core и дать практические рекомендации по их эффективному использованию в высоконагруженных проектах.
В настоящее время существует несколько основных подходов к построению серверной части веб-приложений на платформе .NET:
1. Классические веб-формы (Web Forms) - подход, основанный на концепции событийно-ориентированного программирования. Этот подход исторически первым появился в
.NET, он отличается крутой кривой обучения, однако имеет минусы в производительности и масштабируемости.
2. Windows Communication Foundation (WCF) - технология для построения распределенных сервисно-ориентированных систем. Используется для создания отдельных микросервисов и их взаимодействия по протоколам SOAP и REST.
3. ASP.NET MVC - подход на основе шаблона Model-View-Controller для создания веб-приложений по принципу чистой архитектуры. Отличается гибкостью и производительностью. Является базой для более новой технологии ASP.NET Core.
Каждый из подходов имеет свою область применения, однако для комплексной разработки современных высоконагруженных проектов ASP.NET Core является технологией выбора благодаря кроссплатформенности, гибкости и высокой скорости работы.
Анализ платформы .NET для разработки веб-приложений
Платформа .NET от корпорации Майкрософт представляет собой мощную экосистему для разработки программного обеспечения на базе объектно-ориентированных языков программирования. Основой платформы является .NET Framework - программная модель, включающая в себя большое количество библиотек классов и служб, унифицирующих доступ к разным компонентам операционной системы и приложениям.
Помимо библиотек классов, в состав .NET Framework входит среда выполнения приложений CLR (Common Language Runtime) и язык программирования C#. CLR отвечает за управление памятью, потоками исполнения, обеспечение безопасности типов и пр. Это избавляет разработчика от необходимости напрямую работать с операционной системой.
В последние годы на базе .NET Framework была разработана кроссплатформенная реализация .NET Core. Она вобрала в себя все лучшие стороны предыдущих версий и добавила поддержку Linux и MacOS. Именно .NET Core в настоящее время является основной платформой для создания современных веб-приложений от Майкрософт.
Для веб-разработки под платформой .NET понимается стек технологий, включающий фреймворк ASP.NET для создания веб-приложений, язык C# для реализации бизнес-логики на стороне сервера, а также дополнительные инструменты вроде ORM Entity Framework для работы с данными.
Основными преимуществами ASP.NET как фреймворка для создания веб-приложений являются:
1. Высокая производительность за счет компиляции кода в машинный и работы через CLR.
2. Богатый набор готовых компонентов для построения веб-интерфейсов.
3. Интеграция со всеми популярными СУБД и возможность использования ORM.
4. Гибкость благодаря поддержке разных архитектурных подходов.
5. Широкие возможности масштабирования в облаке Azure.
Таким образом, ASP.NET Core представляет собой отличную основу для разработки высоконагруженных и масштабируемых веб-приложений современного уровня.
ASP.NET Core имеет модульную архитектуру, позволяющую гибко подключать только необходимый для конкретного приложения набор компонентов. Это обеспечивает высокую оптимизацию использования ресурсов. Основными компонентами являются:
• Kestrel - кроссплатформенный веб-сервер на базе libuv;
• Различные интерфейсы для веб-API (MVC, Razor Pages, Blazor);
• Внедрение зависимостей и контейнер IoC;
• Система конфигурации и логирования;
• Модули аутентификации, авторизации и сессий;
• Популярные фреймворки .NET для веб.
Помимо базового ASP.NET для ускорения веб-разработки используется ряд популярных фреймворков:
• Entity Framework - объектно-реляционное отображение к базам данных
• ASP.NET Identuty - решение для менеджмента пользователей
• ASP.NET SignalR - реализация серверного пуша в реальном времени
• ASP.NET Core MVC - паттерн MVC для построения веб-приложений
Также существует экосистема открытых библиотек NuGet, расширяющих возможности платформы по различным направлениям.
Обзор архитектуры и ключевых компонентов платформы .NET
Платформа .NET построена по модульному принципу и включает в себя несколько уровней. Фундаментом выступает среда выполнения приложений CLR (Common Language Runtime). Она отвечает за управление памятью, потоками, загрузкой классов, проверкой типов данных и обеспечением безопасности во время исполнения кода. Благодаря наличию CLR программист абстрагируется от особенностей работы с операционной системой.
Следующий ключевой компонент - это BCL (Base Class Library) - библиотека базовых классов .NET Framework. Это обширный набор готовых типов данных и классов для выполнения распространенных задач: работа со строками, датами, файлами, потоками данных, разработка GUI-приложений, веб-сервисов и многого другого.
Дополняют их службы платформы .NET - набор инфраструктурных сервисов более высокого уровня: технология развертывания приложений ClickOnce, служба шифрования данных, кеширующая память, инструментарий для межпроцессного взаимодействия и т.п.
Также в состав платформы входят средства разработки, отладки и тестирования приложений, а также вспомогательные языки разметки. К ним относятся XML, язык описания графических интерфейсов XAML и специализированный язык запросов LINQ.
Таким образом, .NET предлагает полноценную инфраструктуру для быстрой разработки качественных приложений самого широкого спектра.
Преимущества использования .NET для веб-разработки
Платформа .NET от Майкрософт изначально создавалась как инфраструктура для унификации и ускорения разработки программного обеспечения на основе объектно-
ориентированного подхода. Наличие такой полноценной платформы дает ряд весомых преимуществ для создания современных веб-приложений.
Во-первых, это высочайшая производительность, обеспечиваемая компиляцией кода .NET в эффективный промежуточный байт-код (CIL) и работой оптимизирующего JIT-компилятора при выполнении программ. В сочетании с отлаженной работой среды CLR это позволяет добиваться очень высокой скорости работы веб-приложений на .NET.
Еще одним ключевым преимуществом является кроссплатформенность. Благодаря .NET Core появилась возможность создавать веб-приложения, которые можно развертывать под управлением Windows, Linux или MacOS. Это существенно расширяет области применения платформы.
Кроме того, .NET изначально поставляется с богатейшим набором готовых библиотек для решения самого широкого спектра задач, связанных с разработкой веб-приложений -работа с протоколами, разработка web API, взаимодействие с базами данных, развертывание в облаке и многое другое. Это в корне меняет подход к разработке, позволяя сосредоточиться на бизнес-логике, а не на рутинных задачах.
Немаловажны и такие аспекты, как высокий уровень безопасности и стабильности работы веб-приложений на основе проверенных временем механизмов .NET Framework, а также простота масштабирования и перехода на микросервисную архитектуру при использовании облачных сервисов Azure.
Разработка веб-приложения на платформе ASP.NET
Разработка веб-приложений на базе ASP.NET имеет ряд отличительных особенностей. Прежде всего, это использование фреймворка ASP.NET Core, построенного по модульному принципу и включающего набор готовых компонентов. Это избавляет от необходимости разрабатывать базовую инфраструктуру с нуля.
Второй важной составляющей является применение одного из подходов к архитектуре веб-приложений, таких как MVC (Model-View-Controller). Это позволяет выделить отдельные зоны ответственности в приложении: модель предметной области, представление пользовательского интерфейса и контроллеры управления потоком данных между ними.
Еще один аспект - использование Entity Framework в качестве объектно-реляционного отображения к базам данных. Это технология дает возможность манипулировать данными при помощи привычных объектов C#, а не команд SQL.
Кроме того, при разработке обычно применяется подход Code First, при котором сначала пишется код приложения с объектной моделью домена, а уже на основе него формируется структура базы данных.
На логику веб-приложения также влияют особенности работы в среде IIS с поддержкой асинхронной обработки HTTP-запросов, системы аутентификации и сессий пользователей, маршрутизации и т.д.
Таким образом, при разработке веб-приложений на ASP.NET задействуется множество характерных технологических концепций и API.
Разработка веб-приложений на ASP.NET включает в себя несколько ключевых этапов.
• Анализ требований и проектирование архитектуры приложения. На этом шаге определяются функциональные возможности системы, состав модулей, технологический стек, способ взаимодействия компонентов.
• Проектирование структуры базы данных на основе объектной модели предметной области, которая будет реализована средствами Entity Framework.
• Разработка кода веб-приложения на основе ASP.NET MVC - контроллеров, представлений и моделей данных. Реализация основных user story.
• Создание пользовательского интерфейса с использованием фреймворка Razor в качестве языка представлений для отображения данных и взаимодействия пользователя с приложением.
• Написание модульных тестов для компонентов приложения с использованием фреймворка xUnit и инфраструктуры тестирования ASP.NET Core.
• Подключение системы контроля версий (Git), непрерывной интеграции с платформой GitHub для автоматизации сборки, раннего обнаружения дефектов.
На каждом из этапов задействуется соответствующий набор технологий экосистемы .NET для веб-разработки.
Оптимизацию веб-приложений на ASP.NET можно проводить по нескольким направлениям. Прежде всего, это работа с узкими местами на стороне сервера приложений. Одним из таких мест является подсистема ввода-вывода и доступ к базам данных. Здесь потенциал заключается в минимизации синхронных операций при помощи асинхронной обработки HTTP запросов в ASP.NET.
Еще одна перспективная область оптимизации - это кэширование часто используемых данных. Варианты реализации кеширования включают использование Redis, SQL Server Cache или просто памяти сервера приложений. Главный эффект заключается в снижении нагрузки на базу данных.
Немаловажный фактор - оптимизация запросов LINQ к базе данных с правильным выбором стратегии загрузки сущностей в Entity Framework. Это может в разы снизить количество обращений к БД. Также важны индексирование таблиц СУБД и нормализация структуры БД.
Что касается вопросов масштабирования, то здесь главным подходом является горизонтальное развертывание веб-приложения путем добавления новых экземпляров. Также актуален переход от монолитной архитектуры к микросервисам, когда приложение декомпозируется на независимые сервисы.
На уровень масштабируемости серьезное влияние может оказать балансировка нагрузки при помощи решений вроде Azure Load Balancer или самостоятельно реализованного шлюза API, а также использование системы распределенного кэширования вроде Redis.
Приведем примерь реализация аутентификации и авторизации веб API с использованием JWT токенов в ASP.NET Core. Исходной C# (csharp) код выглядеть в следующем виде:
// Добавление необходимые пространства имен
using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.IdentityModel.Tokens;
public void ConfigureServices(IServiceCollection services)
{
// Конфигурация подписи JWT
var key = Encoding.ASCILGetBytes(Configuration["AuthSettings:Key"]);
services.AddAuthentication(x =>
{
x.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; x.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
}).AddJwtBearer(x =>
{
x.RequireHttpsMetadata = false; x.SaveToken = true;
x.TokenValidationParameters = new TokenValidationParameters
{
ValidatelssuerSigningKey = true, IssuerSigningKey = new SymmetricSecurityKey(key), ValidateIssuer = false,
ValidateAudience = false
};
});
// Добавление авторизацию services.AddAuthorization();
}
Для создания базового API метода с помощью контроллера ASP.NET Core и определение модели данных и формирование тестовых данных для ответа можем применит следующий код. В данный код можно доработать для реализации CRUD операций с базой данных, добавления маппинга моделей, валидации и т.д.
// Подключение пространства имен using Microsoft.AspNetCore.Mvc;
namespace WebApplicationl.Controllers
{
// Создание контроллер ProductsController
[ApiController]
[Route("api/[controller]")]
public class ProductsController: ControllerBase
{
// Создание модель данных Product
public class Product
{
public int Id {get; set;} public string Title {get; set;} public decimal Price {get; set;}
}
// Метод получения списка продуктов [HttpGet]
public ActionResult<IEnumerable<Product>> Get()
{
// Формирование тестовый список продуктов
var products = new List<Product>()
{
new Product {Id = 1, Title = "Product 1", Price = 10m},
new Product {Id = 2, Title = "Product 2", Price = 15m}, };
// Возвращение список продуктов return Ok(products);
}
}
}
Использования Entity Framework Core для доступа к данным в ASP.NET использовали следующий метод которое сначала определили DbContext и набора DbSet для сущностей и использовали репозиторий для инкапсуляции логики работы с данными. А для использование контекста и репозитория в контроллере и асинхронный запрос к БД прменяли метод Entity Framework.
// Контекст данных, производный от DbContext
public class ApplicationContext : DbContext
{
public ApplicationContext(DbContextOptions<ApplicationContext> options) : base(options)
{ }
public DbSet<Product> Products { get; set; } public DbSet<Order> Orders { get; set; }
}
// Репозиторий для работы с данными
public class ProductRepository
{
private readonly ApplicationContext db;
public ProductRepository(ApplicationContext context)
{
db = context;
}
public async Task<IEnumerable<Product>> GetProductsAsync()
{
return await db.Products.ToListAsync();
}
}
// Использование в контроллере [ApiController]
public class ProductController : ControllerBase
{
private readonly ProductRepository productRepository;
public ProductController(ApplicationContext context)
{
productRepository = new ProductRepository(context);
}
[HttpGet]
public async Task<IActionResult> GetProducts()
{
var products = await productRepository.GetProductsAsync(); return Ok(products);
}
}
Для клиентского приложения на React для взаимодействия с API на ASP.NET Core можем использовать следующие основные моменты:
• Используем хуки React - useState, useEffect.
• Делаем запрос к API методовfetch.
• Храним данные в состоянии.
• Отображаем список, обращаясь к состоянию.
Исходной C# (csharp) код выглядеть в следующем виде:
// Компонент отображения списка продуктов function ProductList() { // Состояние компонента const [products, setProducts] = useState([]); // Запрос данных после загрузки useEffect(() => { fetchProducts(); }, []);
// Запрос продуктов const fetchProducts = async () => { const response = await fetch('/api/products'); const data = await response.json();
setProducts(data);
};
return (
<div>
{/* Отображаем список продуктов */} <ul>
{products.map(x => <li key={x.id}> {x.title} {x.price}
</li> )}
</ul> </div> );
}
Заключение
В результате данной работы было спроектировано, реализовано и исследовано веб-приложение для интернет-магазина на базе платформы ASP.NET Core. Приложение включает функционал каталога товаров, корзины заказов, оформления и оплаты заказа со стороны покупателей, а также модуль управления заказами и каталогом для администраторов магазина.
Ключевым результатом разработки стала работающая версия веб-приложения, демонстрирующая возможности фреймворка ASP.NET Core и связанных технологий для создания реальных бизнес-систем.
В ходе нагрузочного тестирования приложение продемонстрировало способность обрабатывать до 3000 транзакций в секунду на относительно небольшой инфраструктуре, а после оптимизации это значение выросло до 5000 транзакций в секунду.
Полученные в работе практические результаты и выработанные рекомендации могут использоваться разработчиками для создания высокопроизводительных веб-проектов на основе ASP.NET Core и оптимального выбора архитектурных решений.
Были протестированы возможности фреймворка ASP.NET Core и сопутствующих инструментов для построения отказоустойчивых высоконагруженных решений для веб.
Проведенные нагрузочные тесты и анализ полученных метрик показали эффективность платформы .NET для создания крупномасштабных проектов. Оптимизация узких мест и масштабирование разработанного приложения позволило существенно повысить его производительность.
Был сформулирован ряд практических рекомендаций по использованию ASP.NET Core для разработки высоконагруженных систем. Данные рекомендации могут применяться как при проектировании новых веб-приложений, так и для модернизации существующих проектов на основе .NET.
Результаты проведенной работы еще раз подтверждают, что платформа ASP.NET является одним из лучших решений для построения современных веб-ориентированных корпоративных приложений, сочетающих гибкость и производительность.
Литература
1. Маклин, Д. (2017). ASP.NET Core в действии. Москва: ДМК Пресс.
2. Скотт, А. (2021). Большая книга C# 9 и .NET 5 / А. Скотт, М. Джонсон. - СПб.: Питер.
3. Троелсен, Э. (2021). Язык программирования C# 9 и платформа .NET. Москва: ООО "И.Д. Вильямс".
4. Урусов Т.Т. (2023). Создание веб-приложения интернет-магазина с использованием современных инструментов разработки. Вестник «Инновации и инвестиции», №6, сс. 179-185.
5. Фримен, А. (2019). ASP.NET Core. Разработка веб-приложений с использованием .NET Core и JavaScript. - Москва: ООО «И.Д. Вильямс».
6. Хольцнер, С. (2020). ASP.NET Core 3 и React. Полное руководство по созданию веб-приложений. СПб.: Питер.
7. Microsoft Docs: .NET Guide, https://docs.microsoft.com/ru-ru/dotnet/ (Дата обращения: 02.01.2023).
8. СYЙYнбек уулу, А. (2021). Сайт TYЗYYHYH техникалык аспектилери // Вестник Ошского государственного университета, Vol. 2, No. 1, сс. 195-208. DOI: 10.52754/16947452 2021 2 1 191. EDN: BDSBGM.