爱奇艺会员做任务送十天网站,怎样用阿里云服务器做网站,html5网站 欣赏,wordpress数据采集使用 Anet 有一段时间了#xff0c;已经在我的个人网站#xff08;如 bookist.cc#xff09;投入使用#xff0c;目前没有发现什么大问题#xff0c;所以才敢写篇文章向大家介绍。GitHub 地址#xff1a;https://github.com/anet-team/anetAnet 是一个 .NET Core 通用框架… 使用 Anet 有一段时间了已经在我的个人网站如 bookist.cc投入使用目前没有发现什么大问题所以才敢写篇文章向大家介绍。GitHub 地址https://github.com/anet-team/anetAnet 是一个 .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 Anet1. 查询操作public class UserRepository : RepositoryBaseAnetUser{ public UserRepository(Database db) : base(db) { } public TaskIEnumerableUserResponseDto GetAllAsync() { var sql SELECT * FROM AnetUser;; return Db.QueryAsyncUserResponseDto(sql); } public TaskUserResponseDto GetByIdAsync(long id) { var sql Sql.Select(AnetUser, new { Id id }); return Db.QueryFirstOrDefaultAsyncUserResponseDto(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 AnetInstall-Package Anet.Job要添加一个定时任务就添加一个 IJob 接口的实现。这里添加一个 MessageJob 类使它实现 IJob 接口代码如下public class MessageJob : IJob{ private readonly ILoggerMessageJob _logger; public MessageJob(ILoggerMessageJob 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.AddTransientMessageJob();});var logger App.ServiceProvider.GetRequiredServiceILoggerProgram();logger.LogInformation(程序已启动。);// 启动定时轮循任务Scheduler.StartNewMessageJob(Settings.JobIntervalSeconds);logger.LogInformation(已启动消息发送任务处理程序。);// 等待程序关闭Scheduler.WaitForShutdown();一个简单的消息发送服务就做好了每隔指定秒数就会执行发送任务。运行后在控制台看到的效果是这个示例包含了记录日志控制台上的信息都是临时的你也可以查看运行目录下的 logs 文件夹中的日志文件。完整代码请前往 GitHub 查看。Anet 的目前状态Anet 才刚起步处在最小可用状态。它目前只是一个通用库封装了一些常用的类比如基于 Snowflake 算法的 Id 生成器、用户密码加密等还算不上框架还有很多事情要做连 Wiki 文档都没有后面再慢慢补吧。但一个人的力量终究是有限的特别希望大家能加入到这个项目中和我一起开发。