Обзор SDK
О SDK
Enma.Sdk — это .NET-библиотека с буферизованной пакетной отправкой событий, автоматическими повторами, конвейером middleware и интеграцией с ASP.NET Core. Целевая платформа — .NET Standard 2.1, без внешних зависимостей.
Установка
dotnet add package Enma.SdkТребуется .NET Standard 2.1+ (.NET Core 3.0+, .NET 5+).
Быстрый пример
using Enma.Sdk.Core;
await using var enma = new EnmaClient(o =>
{
o.ApiToken = "sdk_your_token";
o.OrganizationId = Guid.Parse("your-org-id");
o.ProjectId = Guid.Parse("your-project-id");
o.SdkClientId = Guid.Parse("your-app-id");
});
// Fire-and-forget
enma.Track("page.viewed", e =>
{
e.Actor.UserId = "user-42";
e.Payload = new { page = "/dashboard" };
});
// Ожидание подтверждения доставки
await enma.TrackAsync("order.created", e =>
{
e.Actor.UserId = "user-42";
e.Payload = new { Amount = 99.99 };
e.Tag("region", "eu-west");
});
await enma.FlushAsync();Как это работает
Track() ──► Channel<T> queue ──► Background loop ──► HTTP POST (batch)
(lock-free) (flush by timer (retry on 5xx)
or batch size)Track()помещает событие в ограниченную очередь (System.Threading.Channels).- Фоновый цикл читает события и группирует в пакеты.
- Пакеты отправляются автоматически каждые
FlushInterval(5с) или при заполнении пакета. - HTTP-запрос повторяется при 5xx/сетевых ошибках (1с → 2с → 4с).
- При
DisposeAsync()илиFlushAsync()все оставшиеся события отправляются.
Ключевые возможности
- Автоматическая группировка — события собираются в пакеты (по умолчанию 50, максимум 200).
- Автоматические повторы — экспоненциальная задержка при ошибках 5xx и сетевых сбоях.
- Конвейер middleware — обогащение и фильтрация событий перед отправкой.
- Lock-free очередь — на основе
System.Threading.Channels. - ASP.NET Core — DI и корректное завершение через IHostedService.
- Без зависимостей — только стандартные типы .NET.
Исходный код
SDK с открытым исходным кодом: enma-repos/enma-sdk
Следующие шаги
- .NET SDK — справочник API и продвинутые паттерны
- Конфигурация — все параметры и значения по умолчанию
- ASP.NET Core — DI и hosted service