Git Product home page Git Product logo

amirnotch / csharpmicroservices Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 0.0 128 KB

Microservices on .Net platforms which used Asp.Net Web API, Docker, RabbitMQ, MassTransit, Grpc, Ocelot API Gateway, MongoDB, Redis, PostgreSQL, SqlServer, Dapper, Entity Framework Core, CQRS and Clean Architecture implementation. Also includes Cross-Cutting concerns like Implementing Centralized Distributed Logging with Elasticsearch, Kibana

License: MIT License

C# 95.10% Dockerfile 4.90%

csharpmicroservices's Introduction

CSharpMicroservices

image

Реализация микросервисов на платформе .Net, которая использует Asp.Net Web API, Docker, RabbitMQ, MassTransit, gRPC, Ocelot API Gateway, MongoDB, Redis, PostgreSQL, SQL Server, Dapper, Entity Framework Core, реализацию CQRS и чистую архитектуру. Также включает в себя обработку пересекающихся аспектов, таких как реализация централизованного распределенного логирования с использованием Elasticsearch и Kibana.

Для этой работы вам понадобятся следующие инструменты:

  • Visual Studio 2019-2022.
  • .Net 6 SDK.
  • Docker Desktop.
  • Желательно 16 ГБ RAM памяти.

В этом репозитории включены следующие функции:

Catalog микросервисов, который включает:

  • Приложение ASP.NET Core Web API
  • Принципы REST API и операции CRUD
  • Подключение и контейнеризация базы данных MongoDB
  • Реализация шаблона репозитория
  • Внедрение Swagger Open API

Микросервис Basket, который включает:

  • Приложение ASP.NET Web API
  • Принципы REST API и операции CRUD
  • Подключение и контейнеризация базы данных Redis
  • Использование сервиса Grpc для межсервисного взаимодействия для расчета конечной цены продукта
  • Публикация очереди BasketCheckout с использованием MassTransit и RabbitMQ

Микросервис Discount, который включает:

  • Приложение ASP.NET Grpc Server
  • Высокопроизводительное межсервисное взаимодействие с микросервисом корзины с использованием Grpc
  • Предоставление Grpc-сервисов с созданием сообщений Protobuf
  • Использование Dapper для реализации микро-ORM для упрощения доступа к данным и обеспечения высокой производительности
  • Подключение и контейнеризация базы данных PostgreSQL

Взаимодействие между микросервисами:

  • Синхронное межсервисное взаимодействие с использованием Grpc
  • Асинхронное межсервисное взаимодействие с использованием сообщений RabbitMQ
  • Использование модели обмена Publish/Subscribe с RabbitMQ
  • Использование MassTransit для абстракции над системой сообщений RabbitMQ
  • Публикация события BasketCheckout из микросервиса корзины и подписка на это событие из микросервиса заказа

Ordering микросервис:

  • Реализация DDD, CQRS и Clean Architecture с использованием лучших практик
  • Разработка CQRS с использованием пакетов MediatR, FluentValidation и AutoMapper
  • Получение сообщений очереди BasketCheckout из RabbitMQ с использованием конфигурации MassTransit-RabbitMQ
  • Подключение к базе данных SqlServer и ее контейнеризация
  • Использование ORM Entity Framework Core и автоматическое мигрирование на SqlServer при запуске приложения

Микросервис API Gateway Ocelot:

  • Реализация API Gateway с использованием Ocelot
  • Образцы микросервисов и контейнеров для перенаправления через API Gateway
  • Запуск разных типов контейнеров API Gateway/BFF
  • Шаблон агрегации Gateway в Shopping.Aggregator

Микросервис веб-приложения ShoppingApp:

  • ASP.NET Core веб-приложение с Bootstrap 4 и шаблоном Razor
  • Вызов API с помощью HttpClientFactory и Polly

Пересекающиеся реализации микросервисов:

  • Централизованное распределенное логирование с использованием Elastic Stack (ELK): Elasticsearch, Logstash, Kibana и SeriLog для микросервисов
  • Использование функции HealthChecks в бэк-энд микросервисах ASP.NET
  • Использование службы Watchdog в отдельном сервисе, который может следить за состоянием и нагрузкой микросервисов и предоставлять информацию о состоянии микросервисов, запросив HealthChecks

Реализация устойчивости микросервисов:

  • Использование IHttpClientFactory для реализации устойчивых HTTP-запросов
  • Реализация шаблонов Retry и Circuit Breaker с экспоненциальной задержкой с использованием IHttpClientFactory и политик Polly

Вспомогательные контейнеры-Docker:

  • Использование Portainer для управления контейнерами с удобным интерфейсом
  • Использование pgAdmin PostgreSQL Tools для администрирования и разработки PostgreSQL
  • Настройка Docker Compose со всеми микросервисами в Docker, включая контейнеризацию микросервисов и баз данных, а также переопределение переменных среды.

image

Мой LinkedIn - https://www.linkedin.com/in/amir-ibragimov-7139b515b/

csharpmicroservices's People

Contributors

amirnotch avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.