SyZero.Core 1.2.0-dev.1

This is a prerelease version of SyZero.Core.
There is a newer version of this package available.
See the version list below for details.
dotnet add package SyZero.Core --version 1.2.0-dev.1
                    
NuGet\Install-Package SyZero.Core -Version 1.2.0-dev.1
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="SyZero.Core" Version="1.2.0-dev.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="SyZero.Core" Version="1.2.0-dev.1" />
                    
Directory.Packages.props
<PackageReference Include="SyZero.Core" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add SyZero.Core --version 1.2.0-dev.1
                    
#r "nuget: SyZero.Core, 1.2.0-dev.1"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package SyZero.Core@1.2.0-dev.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=SyZero.Core&version=1.2.0-dev.1&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=SyZero.Core&version=1.2.0-dev.1&prerelease
                    
Install as a Cake Tool

SyZero.Core

SyZero.Core 是一个轻量级的 .NET 微服务框架核心库,提供依赖注入、基础领域模型、服务管理和轻量级事件总线等通用能力。

📦 安装

dotnet add package SyZero.Core

✨ 特性

  • 🚀 依赖注入 - 基于 Microsoft.Extensions.DependencyInjection 的约定注册
  • 🧩 应用基础设施 - SyZeroServiceBase、ApplicationService、会话与权限基础能力
  • 💾 仓储与工作单元接口 - 统一抽象,方便接入 EF Core、SqlSugar、MongoDB
  • 🌐 轻量级服务管理 - 内置 LocalServiceManagement、DBServiceManagement
  • 📣 轻量级事件总线 - 内置 LocalEventBus、DBEventBus
  • 🛰 远程服务调用抽象 - IRemoteServiceProvider / IRemoteServiceProxyFactory / RemoteServiceOptions,由 SyZero.Feign 等模块提供具体 Provider 实现,未来可平行新增更多 Provider

💡 v9.1.0 起,原本位于本包的网关抽象(IGateway / IGatewayConfigurationStore / GatewayConfiguration 等)已迁移到独立包 SyZero.Gateway.Abstractions,请按需引用。

  • 🧬 动态 API Provider 抽象 - SyZero.Application.DynamicApi.*:DynamicApiTypeFilter / DynamicApiNameNormalizer / DynamicApiAttributeCache / DynamicApiAssemblyScanner / DynamicApiOptionsBase 等公共能力,被 SyZero.DynamicWebApi 与 SyZero.DynamicGrpc 共用,方便后续平行新增 Provider
  • �🔧 配置与工具 - 统一配置读取、异常模型、常用扩展工具

🚀 快速开始

1. 注册核心服务

using SyZero;

var builder = WebApplication.CreateBuilder(args);

builder.AddSyZero();
builder.Services.AddControllers();

var app = builder.Build();

app.UseSyZero();
app.MapControllers();

app.Run();

2. 使用约定注入

using SyZero.Dependency;

public interface IUserService
{
    Task<string> GetNameAsync(long id);
}

public class UserService : IUserService, IScopedDependency
{
    public Task<string> GetNameAsync(long id)
    {
        return Task.FromResult($"user-{id}");
    }
}

3. 继承应用服务基类

using SyZero.Application.Service;

public class UserAppService : ApplicationService
{
    public string GetCurrentUser()
    {
        return SySession.UserName ?? "anonymous";
    }
}

📖 轻量级服务管理

SyZero 核心包内置两种无需额外中间件的服务管理实现:

实现 场景 特点
LocalServiceManagement 单机 / 开发环境 基于本地文件,无外部依赖
DBServiceManagement 简单多实例部署 基于数据库,支持健康检查和 Leader 选举

示例:

builder.Services.AddLocalServiceManagement(options =>
{
    options.EnableHealthCheck = true;
    options.EnableLeaderElection = false;
});

📖 轻量级事件总线

SyZero 核心包内置两种事件总线实现:

实现 场景 特点
LocalEventBus 进程内事件 基于内存,适合单体应用
DBEventBus 需要持久化与重试 基于数据库,适合简单分布式场景

示例:

using SyZero.EventBus;

builder.Services.AddLocalEventBus();

public class OrderCreatedEvent : EventBase
{
    public long OrderId { get; set; }
}

public class OrderCreatedHandler : IEventHandler<OrderCreatedEvent>
{
    public Task HandleAsync(OrderCreatedEvent @event)
    {
        Console.WriteLine($"order created: {@event.OrderId}");
        return Task.CompletedTask;
    }
}

发布事件:

public class OrderService
{
    private readonly IEventBus _eventBus;

    public OrderService(IEventBus eventBus)
    {
        _eventBus = eventBus;
        _eventBus.Subscribe<OrderCreatedEvent, OrderCreatedHandler>(() => new OrderCreatedHandler());
    }

    public Task CreateAsync(long orderId)
    {
        return _eventBus.PublishAsync(new OrderCreatedEvent
        {
            OrderId = orderId
        });
    }
}

⚠️ 说明

  1. builder.AddSyZero() 会注册核心依赖,并在 app.UseSyZero() 时初始化全局运行时。
  2. ISySession 是请求作用域对象,应只在请求链路内访问。
  3. 轻量级事件总线和服务管理适合简单场景;需要更强可靠性时,建议使用 SyZero.EventBus.RabbitMQ、SyZero.Redis、SyZero.ServiceDiscovery.Consul、SyZero.ServiceDiscovery.Nacos 等模块。

📄 许可证

MIT License - 详见 LICENSE

Product Compatible and additional computed target framework versions.
.NET net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (43)

Showing the top 5 NuGet packages that depend on SyZero.Core:

Package Downloads
SyZero.Web.Common

SyZero-Web-Common

SyZero.EntityFrameworkCore

SyZero-EntityFrameworkCore

SyZero.Redis

SyZero-Redis

SyZero.AspNetCore

SyZero中的Web层扩展

SyZero.DynamicWebApi

SyZero-DynamicWebApi

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
10.0.0 0 10/23/2026
9.1.0 52 10/22/2026
1.2.0 40 10/22/2026
1.2.0-dev.1 36 10/22/2026