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

歡迎訪問 生活随笔!

生活随笔

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

asp.net

[转].NET 开源项目 Anet 介绍

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

使用 Anet 有一段時間了,已經在我的個人網站(如 bookist.cc)投入使用,目前沒有發現什么大問題,所以才敢寫篇文章向大家介紹。

GitHub 地址:

https://github.com/anet-team/anet

Anet 是一個 .NET Core 通用框架,特點是簡單易用。它的目標是:

A .NET Core Common Lib, Framework and Boilerplate.

它的取名正是來自于這個定義的前面四個字母:ANET。Anet 的宗旨是使 .NET 項目開發變得簡單和快速。它適用于面向微服務開發 WebAPI、服務程序和網站。

Anet 說是框架,其實特別簡單,幾乎沒有學習成本。

為什么選擇 Anet

很多傳統的 .NET 開源框架模板(比如 ABP)都比較重,學習成本高,使用起來條條框框,比較麻煩。而 Anet 就簡單易用得多,尤其適合面向微服務快速開發。

和其它模板框架一樣,Anet 封裝了一些實用工具類,集成了輕量 ORM 框架 Dapper。但 Anet 對 Dapper 做了一些改進,使得事務可以放在業務層獨立處理,數據訪問層則不需要關心事務(下文有示例)。

Anet 的使用

下面貼一些 Anet 的使用示例,這些示例代碼都可以在 Anet 的 GitHub 倉庫中找到。

使用前先安裝 Nuget 包:

Install-Package Anet # 或者 dotnet add package Anet

1. 查詢操作

public class UserRepository : RepositoryBase<AnetUser> {public UserRepository(Database db) : base(db){}public Task<IEnumerable<UserResponseDto>> GetAllAsync(){var sql = "SELECT * FROM AnetUser;";return Db.QueryAsync<UserResponseDto>(sql);}public Task<UserResponseDto> GetByIdAsync(long id){var sql = Sql.Select("AnetUser", new { Id = id });return Db.QueryFirstOrDefaultAsync<UserResponseDto>(sql);} }

2. 新增操作

public class UserService {private readonly UserRepository userRepository;public UserService(UserRepository userRepository) ? ?{this.userRepository = userRepository;}public async Task CreateUserAsync(UserRequestDto dto) ? ?{var newUser = new AnetUser { UserName = dto.UserName };using (var tran = userRepository.BeginTransaction()){await userRepository.InsertAsync(newUser);// Other business logic code. ? ? ? ? ? ?tran.Commit(); ? ? ? ?} ? ?} ? ?// ...(其它代碼) }

3. 更新操作

public class UserService {private readonly UserRepository userRepository;public UserService(UserRepository userRepository) ? ?{this.userRepository = userRepository;}public async Task UpdateUserAsync(long userId, UserRequestDto dto) ? ?{var user = await userRepository.FindAsync(userId);if (user == null)throw new NotFoundException();using(var tran = userRepository.BeginTransaction()){await userRepository.UpdateAsync(update: new { dto.UserName },clause: new { Id = userId });tran.Commit();}}// ...(其它代碼) }

4. 刪除操作

public class UserService {private readonly UserRepository userRepository;public UserService(UserRepository userRepository) ? ?{this.userRepository = userRepository;}public async Task DeleteUserAsync(long id) ? ?{var rows = await userRepository.DeleteAsync(id);if (rows == 0)throw new NotFoundException();}// ...(其它代碼) }

5. 定時任務

Anet 封裝了一個 JobScheduler,它可以滿足大部分任務調度的需求。下面演示如何通過 Anet 來實現一個簡單任務輪循程序,模擬一個發送消息的任務調度服務。這個示例也可以在 GitHub 倉庫中找到源代碼。

首先創建一個 Console(.NET Core)應用,需要先安裝 Anet 的兩個包:

Install-Package Anet Install-Package Anet.Job

要添加一個定時任務就添加一個 IJob 接口的實現。這里添加一個 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); ? ?} }

你要關心的就是?ExecuteAsync?方法,把你的執行代碼放在此方法中。

然后只需在 Program.cs 的入口 Main 方法中進行初始化和配置即可,例如:

// 初始化應用 App.Init((config, services) => { ? ?// 綁定配置 ? ?Settings = new SettingsModel(); ? ?config.Bind(Settings); ? ?// 注冊服務 ? ?services.AddTransient<MessageJob>(); });var logger = App.ServiceProvider.GetRequiredService<ILogger<Program>>();logger.LogInformation("程序已啟動。");// 啟動定時輪循任務 Scheduler.StartNew<MessageJob>(Settings.JobIntervalSeconds);logger.LogInformation("已啟動消息發送任務處理程序。");// 等待程序關閉 Scheduler.WaitForShutdown();

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

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

Anet 的目前狀態

Anet 才剛起步,處在最小可用狀態。它目前只是一個通用庫,封裝了一些常用的類(比如基于 Snowflake 算法的 Id 生成器、用戶密碼加密等),還算不上框架,還有很多事情要做,連 Wiki 文檔都沒有,后面再慢慢補吧。

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


---------------------
作者:dotNET跨平臺
來源:CSDN
原文:https://blog.csdn.net/sD7O95O/article/details/87400458
版權聲明:本文為作者原創文章,轉載請附上博文鏈接!

總結

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

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