Byndyusoft.DotNet.Web.ProjectTemplate 1.3.1

There is a newer version of this package available.
See the version list below for details.
dotnet new install Byndyusoft.DotNet.Web.ProjectTemplate::1.3.1                
This package contains a .NET Template Package you can call from the shell/command line.

Шаблон сервиса .NET Core

Что включает?

Шаблон включает:

  • Настройка swagger
  • Пакет для трассировки http-запросов Byndyusoft.AspNetCore.Instrumentation.Tracing
  • Пакет для логирования Byndyusoft.Logging
  • Пакет для работы с БД Byndyusoft.Data.Relational
  • Пакет для маскирования чувствительных данных в логах и в трассировке Byndyusoft.MaskedSerialization
  • Хэлчеки через метод /healthz
  • Подключены OpenTelemetry Tracing & Metrics. Добавлены основные инструменты для метрик. Добавлен пример для метрик приложения.

Проекты:

  • Domain - бизнес-логика приложения
  • DataAccess - слой доступа к данным
  • Migrator - мигратор базы данных на основе https://github.com/fluentmigrator/fluentmigrator
  • Api - веб-апи приложения
  • Api.Client - клиент для веб-апи, расширение для подключения клиента в потребителе
  • Api.Contracts - контракты для веб-апи и клиента
  • IntegrationTests - интеграционные тесты на веб-апи
  • UnitTests - юнит-тесты

Как использовать шаблон?

Установка шаблона из nuget.org

Установка шаблона из nuget в консоли Windows:

dotnet new --install Byndyusoft.DotNet.Web.ProjectTemplate

В списке должен появиться шаблон с коротким именем bsapi.

Создание нового сервиса из шаблона (выполнять в пустой директории)

dotnet new bsapi -n {Название сервиса}

Проект готов к использованию!

Установка шаблона из файла пакета .nupkg.

Создание nuget пакета для шаблона в корне:

dotnet pack

Вместо создания пакета его можно скачать из nuget.org.

Установка шаблона из созданного нами пакета:

dotnet new --install .\Byndyusoft.Template.1.3.0.nupkg

Примечание: Версия может отличаться.

Создание нового сервиса из шаблона (выполнять в пустой директории)

dotnet new bsapi -n {Название сервиса}

Проект готов к использованию!

Пример с метриками

В коде был добавлен пример с метриками, которые определяются в классе ApiTemplateMetrics.cs.

В этом классе добавлены поля (терминология взята из OpenTelemetry Metrics API):

  • Name - наименование meter (измеритель).
  • DurationName - наименование instrument (инструмента).
  • DurationBuckets - границы бакетов, используются в настройке отображения метрик в классе MeterProviderBuilderExtensions.cs.

Настройки проекта

Фильтрация запросов для трассировки

В проекте добавлены список запросов, которые не будут попадать в трассироку. Они описаны в файле TracerProviderBuilderExtensions.cs:

var ignoredSegments = new[] { "/swagger", "/favicon", "/healthz", "/metrics" };

Если нужно игнорировать какие-то дополнительные запросы, то их можно добавить в список в этом классе.

Настройки подключения к Jaeger

Для подключения к Jaeger нужно добавить секцию Jaeger в файл настроек:

"Jaeger": {
  "AgentHost": "localhost",
  "AgentPort": 6831
}

Интеграция OpenTelemetry с JaegerTracing

Для интеграции нужно использовать класс JaegerPropagator. Если этого класса еще нет в текущем релизе, можно использовать этот класс из исходников. После релиза он должен появиться в пакете OpenTelemetry.Extensions.Propagators.

Пример использования Propagator для RabbitMq.

Maintainers

github.maintain@byndyusoft.com

  • .NETStandard 2.1

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
2.1.0 4,482 10/16/2023
2.1.0-rc1 216 10/16/2023
2.0.1 339 10/12/2023
2.0.0 245 9/21/2023
1.3.7 312 8/18/2023
1.3.6 211 7/24/2023
1.3.5 166 7/24/2023
1.3.4 193 7/4/2023
1.3.3 156 7/3/2023
1.3.2 162 6/30/2023
1.3.1 150 6/30/2023
1.3.0 153 6/29/2023
1.2.0 144 6/29/2023