.net core java go_.NET Core 开源项目 Anet 在路上-Go语言中文社区

今天给大家介绍我刚开源的一个 .NET Core 项目:Anet。Anet 的目标是实现一个 .NET Core 通用库、通用框架和通用模板。我给它的定义是:A .NET Core Common Lib, Framework and Boilerplate.

它的取名正是来自于这句话的前面四个字母:ANET。Anet 的宗旨是打造一个简单易用的快速开发项目模板,适用于 Console 应用和 Web 应用。

但是这个项目它还处于开发阶段,我现只是起了个头,目前只封装了一些简单的功能,不过已实现的部分已经可以投入使用了。

项目地址:https://github.com/liamwang/anet

为什么选择 Anet?

目前很多 .NET 开源框架模板(比如 ABP)都比较重,学习成本高,使用起来很多条条框框,比较麻烦。在实际开发中,经常要做一些小服务或小工具,选这种重型的框架可能就不太合适了。而 Anet 就是为了解决这个问题,它追求的是简单易用,适合快速开发一个微服务或小工具。

一个简单的任务轮循例子

下面演示如何通过 Anet 来实现一个简单任务轮循程序,模拟一个发送消息的任务调度服务。这个示例在 GitHub 有 Sample,我就不贴所有代码了,只选重点。

实际场景应该是这样的,每隔几秒钟从缓存队列中获取要发送的消息,调用其它接口执行发送,并且需要有日志。如果出现异常,服务不能终止或崩溃,即需要有容错机制(一般还会有重试机制等,就不在这例子中讲了)。Anet 封装了一个 JobScheduler,它可以满足大部分的这一类需求。

首先创建一个 Console(.NET Core)应用,安装 Anet 包:dotnet add package Anet

然后添加一个 MessageJob 类,使它实现 IJob 接口,代码如下:public class MessageJob : IJob

{

private readonly ILogger _logger;

public MessageJob(ILogger logger){

_logger = logger;

}

public Task ExecuteAsync(){

return Task.Run(() =>

{

// 模拟发送消息

_logger.LogInformation("正在发送消息...");

Thread.Sleep(3000);

_logger.LogInformation("消息发送成功。");

});

}

public Task OnExceptionAsync(Exception ex){

_logger.LogError(ex, "发送消息出错。");

return Task.FromResult(0);

}

}

每个 Console 程序都需要先调用 AnetGlobal 中的 InitConsoleApp 方法来初始化,通过这个方法内可以进行一些自定义配置。

在 Program.cs 中添编写如下代码:public class Program

{

public static SettingsModel Settings { get; set; }

static void Main(string[] args){

Console.Title = "Aet 示例 - 简单任务调度程序";

// 初始化应用

AnetGlobal.InitConsoleApp((config, services) =>

{

// 绑定配置

Settings = new SettingsModel();

config.Bind(Settings);

// 注册服务

services.AddTransient();

});

// 1. 简单任务调度示例

JobScheduler.StartNew(Settings.JobIntervalSeconds);

// ...(其它示例)

// 等待 Ctrl+C 或关闭窗口

JobScheduler.WaitForShutdown();

}

}

一个简单的消息发送服务就做好了,每隔指定秒数就会执行发送任务。运行后在控制台看到的效果是:

c6570ed7b59c05a5281f4c6aea2da264.png

这个示例包含了记录日志,控制台上的信息都是临时的,你也可以查看运行目录下的 logs 文件夹中的日志文件。完整代码请前往 GitHub 查看。

Anet 目前状态

Anet 才刚起步,处在最小可用状态。它目前只是一个通用库,封装了一些常用的类(比如基于 Snowflake 算法的 Id 生成器、用户密码加密等),还算不上框架,还有很多事情要做。后面我也会写更多的文章介绍这个项目。

但一个人的力量终究是有限的,特别希望大家能加入到这个项目中和我一起开发。

欢迎贡献代码,期待您的加入!

https://github.com/liamwang/anet

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值