GithubHelp home page GithubHelp logo

marusyk / msa.buildingblocks Goto Github PK

View Code? Open in Web Editor NEW
5.0 3.0 0.0 79 KB

🧱 Common building blocks designed to aid the development of microservice-based applications using .NET

License: MIT License

C# 99.83% PowerShell 0.10% Shell 0.07%
msa microservices dotnet dotnet-core nuget azure rabbitmq azure-storage

msa.buildingblocks's Introduction

MSA.BuildingBlocks

License contributions welcome

MSA.BuildingBlocks is a collection of common building blocks designed to aid the development of microservice-based applications using .NET. This library provides a variety of packages, each offering specific functionalities that cater to different aspects of microservice architecture.

Packages The MSA.BuildingBlocks library includes the following packages:

  • MSA.BuildingBlocks.ServiceClient: Provides infrastructure for internal HTTP communication between services.
  • MSA.BuildingBlocks.Mapping: Contains extensions and interfaces IMapTo<> and IMapFrom<> for AutoMapper, facilitating object-object mapping.
  • MSA.BuildingBlocks.CosmosDbMigration: Implements a migration mechanism for CosmosDB, ensuring your database schema is always up-to-date.
  • MSA.BuildingBlocks.EventBus: Offers infrastructure for working with messaging-broker technologies like Azure Service Bus, RabbitMQ, and Kafka.
  • MSA.BuildingBlocks.RequestReplyBus: Provides infrastructure for working with messaging-broker technologies like Azure Service Bus and RabbitMQ, specifically tailored for request-reply messaging patterns.
  • MSA.BuildingBlocks.FileStorage: Facilitates work with file storage systems such as Azure Blob storage, Azure DataLake, and Amazon S3.
  • MSA.BuildingBlocks.Logging: Contains a common logging infrastructure that uses Serilog with Elasticsearch format and Application Insight sink.
  • MSA.BuildingBlocks.Metrics: Provides extensions for Prometheus metrics.
  • MSA.BuildingBlocks.Tracing: Implements infrastructure for distributed tracing, improving observability in microservice architectures.
  • MSA.BuildingBlocks.WebApp: Provides infrastructure for working with web applications based on ASP.NET Core.
  • MSA.BuildingBlocks.Caching: Implements a common caching infrastructure, improving performance by reducing unnecessary database calls.

How to Install

Install as a library from Nuget:

MSA.BuildingBlocks.Mapping (usage)

NuGet version Nuget

PM> Install-Package MSA.BuildingBlocks.Mapping

MSA.BuildingBlocks.ServiceClient (usage)

NuGet version Nuget

PM> Install-Package MSA.BuildingBlocks.ServiceClient

MSA.BuildingBlocks.CosmosDbMigration (usage)

NuGet version Nuget

PM> Install-Package MSA.BuildingBlocks.CosmosDbMigration

msa.buildingblocks's People

Contributors

igorflyunt1 avatar kanilsz avatar marusyk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

msa.buildingblocks's Issues

MSA.BuildingBlocks.CosmosDbMigrations package

It would be great to execute Cosmos db migrations with console application.
Necessary to provide basic operations:

  1. On database
  • Delete container
  • Recreate container with new partition key
  • Clone container
  • Add indexing policy
  • Create container
  • Replace indexing policy
  • Switch to another container for operations
  1. On container
  • Upsert items
  • Remove items by query
  • Add property to items on any nesting level
  • Remove property from items on any nesting level
  • Switch to another container for operations
  • Switch to another database and container for operations

Also performed that you could inject any logger from ILogger for RUs cost logs.

Define code-style rules in .editorconfig

We are using the code style that is recommended by Microsoft and .NET development team.
To maintain consistent coding styles for multiple developers working on the same project across various editors and IDE we use EditorConfig:

EditorConfig helps maintain consistent coding styles for multiple developers working on the same project across various editors and IDEs. The EditorConfig project consists of a file format for defining coding styles and a collection of text editor plugins that enable editors to read the file format and adhere to defined styles. EditorConfig files are easily readable and they work nicely with version control systems.

The code style rules are based on .NET open-source repositories from Microsoft:
https://github.com/dotnet/runtime/blob/main/.editorconfig
https://github.com/dotnet/aspnetcore/blob/main/.editorconfig
https://github.com/dotnet/efcore/blob/main/.editorconfig

MSA.BuildingBlocks duplicate descriptions in README

Upon reviewing the README for the MSA.BuildingBlocks library collection, I noticed a potential issue in the listing of included libraries. Specifically, there seems to be a duplication with respect to the descriptions of two libraries:

MSA.BuildingBlocks.EventBus - infrastructure for work with messaging-broker infrastructure technology like Azure Service Bus, RabbitMQ and Kafka
MSA.BuildingBlocks.RequestReplyBus - infrastructure for work with messaging-broker infrastructure technology like Azure Service Bus, RabbitMQ and Kafka

Given the identical descriptions, I'm curious about the distinct functionalities or purposes of these two libraries. There might be a mistake in the documentation.

Could you please verify the information and update the README accordingly?

image

Create samples for packages

To my mind, it could be good to have some samples of using release packages.

  • MSA.BuildingBlocks.CosmosDbMigration
  • MSA.BuildingBlocks.ServiceClient
  • MSA.BuildingBlocks.Mapping
  • MSA.BuildingBlocks.EventBus
  • MSA.BuildingBlocks.RequestReplyBus
  • MSA.BuildingBlocks.FileStorage
  • MSA.BuildingBlocks.Logging
  • MSA.BuildingBlocks.Metrics
  • MSA.BuildingBlocks.Tracing
  • MSA.BuildingBlocks.WebApp
  • MSA.BuildingBlocks.Caching

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.