.NET开发工具QcloudSharp、Hangfire、BSF.Aop、octokit.net介绍

以下为你介绍的.NET开发工具都可用在Linux系统上:QcloudSharp(腾讯云 API 的非官方 .Net (C#) 封装)、Hangfire(执行后台任务工具)、BSF.Aop(静态 Aop 织入框架)、octokit.net(.NET 开发包)。

1、QcloudSharp(腾讯云 API 的非官方 .Net (C#) 封装)

QcloudSharp 是腾讯云 API 的非官方 .Net 封装。提供 Nuget 包和 DynamicObject 用法。简化了 API 调用。

安装:

PM> Install-Package QcloudSharp

范例:

using QcloudSharp;

using Newtonsoft.Json;

dynamic client = new QcloudClient

{

SecretId = "Your_Secret_Id",

SecretKey = "Your_Secret_Key",

Endpoint = Constants.Endpoint.Trade, // Endpoint 可被作为 Dynamic Methods 的第一个参数

Region = Constants.Region.CAN, // Region 可被作为 Dynamic Methods 的第一个或第二个参数

};

var resultString = client.DescribeUserInfo();

// 预期返回值 {"code":0,"message": "","userInfo":{"name":"compName","isOwner":1,"mailStatus":1,"mail":"112233@qq.com","phone":"13811112222"}}

dynamic result = JsonConvert.DeserializeObject(resultString);

try

{

Console.WriteLine(result.Code);

Console.WriteLine(result.userInfo.name);

Console.WriteLine(result.notExist);

}

catch(Exception ex)

{

Console.WriteLine(ex.message);

}

常数:

所有常数由 QcloudSharp.Constants 类提供。

public static class Endpoint // API 端点

public static class Region // 区域(采用三位 IATA 城市编码)

public class ApiResult : DynamicObject

public class QcloudClient : DynamicObject

下载地址:https://github.com/JoyMoe/QcloudSharp

2、Hangfire(执行后台任务工具)

.NET开发工具QcloudSharp、Hangfire、BSF.Aop、octokit.net介绍

Hangfire是一个开源且商业免费使用的工具函数库。可以让你非常容易地在ASP.NET应用(也可以不在ASP.NET应用)中执行多种类型的后台任务,而无需自行定制开发和管理基于Windows Service后台任务执行器。且任务信息可以被持久保存。内置提供集成化的控制台。

通过Nuget就可以在你的应用程序中安装Hangfire:

PM> Install-Package Hangfire

Hangfire的具有如下特性和特点:

支持基于队列的任务处理:任务执行不是同步的,而是放到一个持久化队列中,以便马上把请求控制权返回给调用者。使用方法:BackgroundJob.Enqueue(() => Console.WriteLine("Simple!"));

延迟任务执行:不是马上调用方法,而是设定一个未来时间点再来执行。使用方法:BackgroundJob.Schedule(() => Console.WriteLine("Reliable!"), TimeSpan.FromDays(7));

循环任务执行:只需要简单的一行代码就可以添加重复执行的任务,其内置了常见的时间循环模式,也可以基于CRON表达式来设定复杂的模式。使用方法:RecurringJob.AddOrUpdate(() => Console.WriteLine("Transparent!"), Cron.Daily);

持久化保存任务、队列、统计信息:默认使用SQL Server,也可以配合消息队列来降低队列处理延迟,或配置使用Redis来获得更好的性能表现。

内置自动重试机制:可以设定重试次数,还可以手动在控制台重启任务。

除了调用静态方法外还支持实例方法。

能够捕获多语言状态:即可以把调用者的Thread.CurrentCulture和Thread.CurrentUICulture信息同任务持久保存在一起,以便任务执行的时候多语言信息是一致的。

支持任务取消:使用CancellationToken这样的机制来处理任务取消逻辑。

支持IoC容器:目前支持Ninject和Autofac比较常用的开源IoC容器。

支持Web集群:可以在一台或多台机器上运行多个Hangfire实例以便实现冗余备份。

支持多队列:同一个Hangfire实例可以支持多个队列,以便更好的控制任务的执行方式。

并发级别的控制:默认是处理器数量的5倍工作行程,当然也可以自己设定。

具备很好的扩展性:有很多扩展点来控制持久存储方式、IoC容器支持等。

为什么要使用Hangfire这样的函数库呢?我觉得好处有如下几个方面:

开发简单:无需自己额外做开发,就可以实现任务的队列执行、延迟执行和重复执行。

部署简单:可以同主ASP.NET应用部署在一起,测试和维护都相对简单。

迁移简单:由于宿主不仅限于ASP.NET,那么未来可以非常容易的把任务执行器放到其他地方(需要改变的就是在其他宿主中启动Hangfire服务器)。

扩展简单:由于开源且有很多扩展点,在现有插件都不满足自己需要的情况下能够容易的进行扩展。

之前我把Hangfire运用到两种情况下:

后台长时间的科学计算:这样就可以让请求马上返回给客户端,后台完成长时间计算后,用SignalR实时提醒用户。

后台群发邮件:通过延迟和循环任务分批通过SendCloud这样的服务发送群发邮件。

当然,Hangfire的应用场景还很多,比如在后台处理电商卖家的订单。

下载地址:https://github.com/HangfireIO/Hangfire

3、BSF.Aop(静态 Aop 织入框架)

.Net 免费开源,静态 Aop 织入(直接修改 IL 中间语言)框架,类似 PostSharp (收费); 实现前后 Aop 切面和 INotifyPropertyChanged 注入方式。

描述:

项目结构扩展自 BSF 基础架构,但 dll 方面并不依赖 BSF.dll,可以独立开发使用。

项目代码量少(也就几个类文件),核心功能插件化开发,便于第三方扩展,阅读,调试,一起来完善。

.net Aop 静态织入相关的免费开源项目比较少或暂未听闻,故希望开源这块内容,成为同类型开源项目的起点和借鉴。

示例代码:

1) 前后 Aop 切面示例 (详细参考 BSF.Aop.Test 项目)

public class AroundAopTest

{

[MyAroundAop]

[AttributeInfo(Des = "测试2")]

public void Method(TempInfo info, out int b,int a=1)

{

a = 222;

b = 3;

System.Console.WriteLine("Hello world!"+a);

}

}

public static class AroundAopTest2

{

[MyAroundAop][AttributeInfo(Des ="测试")]

public static void Method2(TempInfo info, int a = 1)

{

a = 222;

System.Console.WriteLine("Hello world!" + a);

}

}

public class MyAroundAop : Aop.Attributes.Around.AroundAopAttribute

{

public MyAroundAop()

{

}

public override void Before(AroundInfo info)

{

var att = info.Method.CustomAttributes.ToList()[0];

info.Params["a"] = 55;

System.Console.WriteLine("before" + info.Params["a"]);

}

public override void After(AroundInfo info)

{

System.Console.WriteLine("after"+ info.Params["a"]);

}

}

public class TempInfo

{

public int T1 { get; set; }

}

public class AttributeInfo : System.Attribute

{

public string Des { get; set; }

}

2) INotifyPropertyChanged 示例(暂未测试真正使用效果,详细参考 BSF.Aop.Test 项目 )

[NotifyPropertyChangedAop]

public class User

{

public string Name { get; set; }

public int Age { get; set; }

[NoAop]

public int B { get; set; }

}

下载地址:https://gitee.com/chejiangyi/BSF.Aop

4、octokit.net(.NET 开发包)

.NET开发工具QcloudSharp、Hangfire、BSF.Aop、octokit.net介绍

octokit.net 是一个 .NET 4.5及以上版本的开发包,它提供了一种与 GitHub API 交互的简单方法。

使用示例:

从一个特定用户中获得公有信息:

var github = new GitHubClient(new ProductHeaderValue("MyAmazingApp"));

var user = await github.User.Get("half-ogre");

Console.WriteLine(user.Followers + " folks love the half ogre!");

安装:

Octokit是.NET的GitHub API客户端库,在NuGet上可用:

Install-Package Octokit

还有一个使用Reactive Extensions的基于IObservable的.NET的GitHub API客户端库:

Install-Package Octokit.Reactive

建立:

Octokit是单个组件,旨在易于部署在任何地方。

要在本地克隆和构建它,请单击项目页面上方的“Clone in Desktop”按钮,或运行以下git命令:

git clone git@github.com:octokit/Octokit.net.git Octokit

cd Octokit

要构建库,请运行以下命令:

Windows: .\build.ps1

Linux/OSX: ./build.sh

下载地址:https://github.com/octokit/octokit.net

注明

以上就是.NET开发工具QcloudSharp、Hangfire、BSF.Aop、octokit.net的介绍内容,这些.NET开发工具都能使用在Linux操作系统中。

栏目相关文章