日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

.NET Core 开源项目 Anet 在路上

發布時間:2023/12/4 asp.net 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .NET Core 开源项目 Anet 在路上 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天給大家介紹我剛開源的一個 .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<MessageJob> _logger;
? ?public MessageJob(ILogger<MessageJob> 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<MessageJob>();
? ? ? ?});

? ? ? ?// 1. 簡單任務調度示例
? ? ? ?JobScheduler.StartNew<MessageJob>(Settings.JobIntervalSeconds);

? ? ? ?// ...(其它示例)

? ? ? ?// 等待 Ctrl+C 或關閉窗口
? ? ? ?JobScheduler.WaitForShutdown();
? ?}
}

一個簡單的消息發送服務就做好了,每隔指定秒數就會執行發送任務。運行后在控制臺看到的效果是:

這個示例包含了記錄日志,控制臺上的信息都是臨時的,你也可以查看運行目錄下的 logs 文件夾中的日志文件。完整代碼請前往 GitHub 查看。

Anet 目前狀態

Anet 才剛起步,處在最小可用狀態。它目前只是一個通用庫,封裝了一些常用的類(比如基于 Snowflake 算法的 Id 生成器、用戶密碼加密等),還算不上框架,還有很多事情要做。后面我也會寫更多的文章介紹這個項目。

但一個人的力量終究是有限的,特別希望大家能加入到這個項目中和我一起開發。

歡迎貢獻代碼,期待您的加入!

https://github.com/liamwang/anet

總結

以上是生活随笔為你收集整理的.NET Core 开源项目 Anet 在路上的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。