Приветствую! В рамках одного из технических собеседований мне было предложено разработать современное решение, основанное на микросервисной архитектуре, с взаимодействием через шину. Я принял вызов и с уверенностью решил, что благодаря моему опыту я способен успешно реализовать и продемонстрировать данную концепцию)
Для того, чтобы не делать типичные задания с пользователями и группами, я решил, что могу сделать что-то полезное для будущего проекта благотворительного фонда Александра Невского. Этот проект будет полноценной экосистемой сервисов и продуктов для Православного мира
Этот микросервис будет представлять из себя полноценный CRUD по REST API, охватывающий широкий функционал в будущем. В его контексте будут рассмотрены данные о религиозных учреждениях, молитвах, иконах, святых и православных праздниках. Планируется развитие и расширение функционала для обеспечения полноценной поддержки различных аспектов религиозной тематики
Представляет собой набор методов, которые обеспечивают получение информации о религиозных учреждениях.
-
Метод GET используется для извлечения данных из базы данных энциклопедии.
-
Extended/{id} предоставляет возможность извлечения данных из базы данных энциклопедии. При использовании фильтра для получения комментариев, данные могут также быть извлечены из микросервиса SocialNetwork
Этот микросервис будет представлять из себя полноценный CRUD по REST API, охватывающий широкий функционал в будущем для создания внутренней социальной сети, где пользователи смогут оставлять свои комментарии по данным из энциклопедии, а также взаимодействовать и общаться друг с другом. Планируется развитие и расширение функционала для обеспечения полноценной поддержки различных аспектов, как у социальной сети
- GetCommentsConsumer предназначен для межсервисного получения данных о комментариях, относящихся к религиозному учреждению по шине
Проект разработан с использованием современных технологий и инструментов на 2023 год:
-
ASP.NET 7: Веб-фреймворк, обеспечивающий высокую производительность и гибкость при создании веб-приложений.
-
MediatR: Для управления взаимодействием между объектами, обеспечивающий легкость расширения и поддержку многозадачности.
-
MassTransit: Распределенная система обмена сообщениями, облегчающая интеграцию микросервисов и повышающая надежность.
-
AutoMapper: Библиотека для автоматического сопоставления объектов, уменьшая сложность и повышая производительность кода.
-
Serilog: Платформа для логирования, обеспечивающая структурированный вывод и поддержку различных целей логирования.
-
Entity Framework: ORM-фреймворк для работы с базами данных, упрощающий доступ и манипуляции с данными.
-
Docker: Платформа для контейнеризации приложений, обеспечивающая легкость развертывания и управления зависимостями.
-
PostgreSQL: Реляционная база данных с открытым исходным кодом, обеспечивающая надежное хранение и управление данными.
-
FluentValidation: Библиотека для валидации данных в приложении, с применением языка Fluent API для удобного описания правил валидации.
-
xUnit: Фреймворк для юнит-тестирования в .NET, обеспечивающий легкость написания и выполнения тестов.