Skip to content

ruattd/FlowNet

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

50 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Flow.NET

面向现代 .NET 应用程序的轻量级生命周期与流程控制框架。

[WORKING IN PROGRESS]

NuGet Version GitHub Actions Workflow Status GitHub top language

快速开始

添加依赖:

dotnet add package FlowNet.Core

添加代码:

using FlowNet.Core;
using System.Threading.Tasks;

namespace YourApp.Namespace;

[Flow.Scope("app")]
public sealed partial class Program
{
    // Start application by Flow.NET
    public static Task Main() => FlowInterops.Initialize("app:start");

    [Flow.Task]
    public static async Task Start() 
    {
        // 这个 Task 的全局标识是 app:start, 其中 start 是从方法名推断出来的
        // 若要自定义标识, 可以使用 [Flow.Task("custom")]
        // do something...
    }
}

然后就可以开始写业务逻辑了——就这么简单,简单到连 template 都不用。

基于流程的开发

将 Program 类改成这样:

using FlowNet.Core;
using System.Threading.Tasks;

namespace YourApp.Namespace;

[Flow.Scope("app")]
internal static partial class Program
{
    // Run application based on flow control
    public static Task Main() => FlowInterops.Run();

    // Define base flows
    [Flow.Task("run")] [Flow.Run]
    [Flow.Task("loading:before")] [Flow.Run(After = "app:run")]
    [Flow.Task("loading")] [Flow.Run(After = "app:loading:before")]
    [Flow.Task("exit:before")] [Flow.Run(After = "app:loading")]
    [Flow.Task("exit")]  [Flow.Run(After = "app:exit:before")]
    private static Task Wildcard() => Task.CompletedTask;
}

使用 Flow.Run 标记来定义各流程间的依赖关系,例如:

using FlowNet.Core;
using System.Threading.Tasks;

namespace YourApp.Namespace;

[Flow.Scope("config")]
public sealed partial class ConfigService
{
    [Flow.Task]
    [Flow.Run(After = "app:loading", Before = "*:start")]
    private static async Task _()
    {
        // 这是一个特殊的 Flow 任务,按照一般的标识符推断规则,它的标识符是空的
        // 因此这个任务的全局标识就是外部 scope 的标识,即 config
        // Initialize config service...
    }
}

扩展

Flow.NET 支持使用扩展向框架添加额外功能,你也可以开发自己的扩展,参考 FlowNet.ExampleExtension

常用扩展

名称 功能 仓库 许可
Flow.NET Collector 基于自定义元注解的 IoC 组件收集 ruattd/FlowNet.Collector Apache 2.0
Flow.NET Logging 可扩展的日志工具 ruattd/FlowNet.Logging Apache 2.0

About

面向现代 .NET 应用程序的轻量级生命周期与流程控制框架

Resources

License

Stars

11 stars

Watchers

0 watching

Forks

Contributors

Languages