services

.NET Core3.0-Worker Services

百般思念 提交于 2019-12-06 15:08:34
.NET CORE 3.0新增了Worker Services的新项目模板,可以编写长时间运行的后台服务,并且能轻松的部署成windows服务或linux守护程序。 步骤: 1.创建项目: 创建成功后: 就只有2个类,与ASP.NET Core Web应用程序相比,Program类没什么改变 ,startup类消失了,并且把worker服务添加到DI container中。 worker类继承了 BackgroundService 运行就可知道,每隔1秒打印一次 Windows服务部署 引用包 :Microsoft.Extensions.Hosting.WindowsServices -v3.0.0然后在 program.cs加.UseWindowsService() 然后我们再来发布项目: 第一步: 方法一: 发布在自己想要的位置 方法二: 打开命令,先找到项目:cd +项目路径 然后: dotnet publish -c Release -o 加发布的地址--》 dotnet publish -c Release -o C:\WorkerPub\Release    (主要,如果说找不到文件或者什么的,就是因为你没有先找到项目路径) 第二步:创建windows服务(使用sc.exe 工具) sc .exe create 名称 binPath=可执行程序的路径 --》 sc

使用Cap解决.Netcore分布式事务

扶醉桌前 提交于 2019-12-06 10:57:46
一、什么是Cap CAP 是一个基于 .NET Standard 的 C# 库,它是一种处理分布式事务的解决方案,同样具有 EventBus 的功能,它具有轻量级、易使用、高性能等特点。 在我们构建 SOA 或者 微服务系统的过程中,我们通常需要使用事件来对各个服务进行集成,在这过程中简单的使用消息队列并不能保证数据的最终一致性, CAP 采用的是和当前数据库集成的本地消息表的方案来解决在分布式系统互相调用的各个环节可能出现的异常,它能够保证任何情况下事件消息都是不会丢失的。 你同样可以把 CAP 当做 EventBus 来使用,CAP提供了一种更加简单的方式来实现事件消息的发布和订阅,在订阅以及发布的过程中,你不需要继承或实现任何接口。 以下是CAP集在ASP.NET Core 微服务架构中的一个示意图: 二、安装 你可以运行以下下命令在你的项目中安装 CAP。 PM> Install-Package DotNetCore.CAP CAP 支持 Kafka、RabbitMQ、AzureServiceBus 等消息队列,你可以按需选择下面的包进行安装: PM> Install-Package DotNetCore.CAP.Kafka PM> Install-Package DotNetCore.CAP.RabbitMQ PM> Install-Package DotNetCore

Android_开机动画

雨燕双飞 提交于 2019-12-06 01:53:16
Android_开机动画 平台: 全志A64 源码: Android 7.1  Linux 3.1 全志开机动画: 1. bootanimation.zip内容和制作 2. 原生Android系统中好像没有bootanimation.zip, 可以把bootanimation.zip文件放到设备system/media目录下(需要root权限)。 放到此目录下后,开机会自动加载该文件里的图片,作为动画。 3. bootanimation.zip 文件内容: —— part0 part1 part2 .... xxx.png <文件夹是png格式图片,也就是“动画”了> —— desc.txt : 720 450 30 <第一行 720 450 30 前面两个数据代表像素,即:720 * 450;第三位代表每秒播放多少帧,即每秒播放30张图片> c 1 30 part0 <第二行第一个字母 “c”不知道什么玩意儿,固定以他为开头, 第二个数字“3”或者“0”,代表重复播放多少次,"3”即播放3次,但是“0”则代表无限循环播放,(应该是直到代码里面设置的动画时间耗完为止) 第三个数字“0”代标的是前后两帧之间间隔时间/帧数(比如每秒播放10帧,如果这个数字设为10,则延迟1秒了,待确认 第四个参数,这就是上文说到的和文件夹名称对应的了,如果是folder~则文件夹名称也是这个,我的5

如何在netcore下,愉快的使用IServiceProvider

為{幸葍}努か 提交于 2019-12-05 22:19:54
之前一直做dotnet framework开发,依赖注入使用Autofac,Autofac的一般用法是服务启动时,将用到的接口、实现类名注入进去, 然后在服务其他地方如果使用该类时,直接在Container里面Resolve出来即可。 后来使用netcore 2.0+,框架本身使用了Microsoft.Extensions.DependencyInjection,是服务启动时,把需要注入的服务通过 public void ConfigureServices(IServiceCollection services) 实现依赖注入,在服务其他地方通过构造函数把服务实例化出来,然后实现具体方法的调用。 期初,因为场景比较简单,用起来比较舒服,后来随着业务复杂,就面临了一些挑战: 1)在服务的某个方法中,不想通过构造函数,现在想使用已经注入的接口方法,咋办? 为了解决这个问题,我们引入了IHttpContextAccessor(web服务),在IHttpContextAccessor里面有HttpContext, 在HttpContext里面有个RequestServices就是IServiceProvider类型,里面有我们想要的已经注入的服务: public abstract class ControllerBase : Controller { protected

ASP.NET Core MVC配置差异(3.0和2.X)

南楼画角 提交于 2019-12-05 16:52:51
https://www.cnblogs.com/lonelyxmas/p/10934388.html net core 2.x MVC配置 public void ConfigureServices(IServiceCollection services) { services.addMvc(); } public void Configure(IApplicationBuilder app, IWebHostEnvironment env,IConfiguration configurarion,IWelcome welcome) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseRouting(); app.UseStaticFiles(); app.UseMvc(routs => { routs.MapRoute("default", "{controller=Home}/{action=Index}/{id?}"); }); } net core 3.x MVC配置 public void ConfigureServices(IServiceCollection services) { services.AddControllersWithViews(); } public void

ASP.NET Core 2.2 系列【三】AutoFac 仓储接口的依赖注入

主宰稳场 提交于 2019-12-05 09:14:30
一、准备工作 通过 程序包管理器控制台 安装AutoFac: Install-Package Autofac.Extensions.DependencyInjection 创建新类库(.NetCore 2.2类库),存放接口跟实现类,命名为NetCoreWebApi.Repository。 创建用户仓储接口 在类库项目上右键->添加->新建文件夹,命名为Interface,存放接口类。在Interface文件夹下面新建类:IUserRepository,属性如下: using System.Collections.Generic; using NetCoreWebApi.Model.Models; namespace NetCoreWebApi.Repository.Interface { /// <summary> /// 用户接口 /// </summary> public interface IUserRepository { /// <summary> /// 添加用户 /// </summary> /// <param name="entity">实体对象</param> int Add(TbUser entity); /// <summary> /// 删除用户 /// </summary> /// <param name="entity">实体对象</param>

ASP.NET Core如何限制请求频率

馋奶兔 提交于 2019-12-05 07:29:01
原文: ASP.NET Core如何限制请求频率 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/qq_38613453/article/details/103131788 ASP.NET Core如何限制请求频率,为了防止恶意请求,我们往往会对接口请求的频率做限制,比如请求间隔,一段时间内请求的次数,针对部分IP做出不同的限制策略 如何去限制请求频率不需要我们去实现,用上 AspNetCoreRateLimit 轮子就好了😀 Github地址: https://github.com/stefanprodan/AspNetCoreRateLimit Nuget下载 Install-Package AspNetCoreRateLimit 第一步自然是修改Startup.cs public void ConfigureServices(IServiceCollection services) { // 需要从appsettings.json中加载配置 services.AddOptions(); // 存储IP计数器及配置规则 services.AddMemoryCache(); services.Configure<IpRateLimitOptions>

如何在ASP.NET Core程序启动时运行异步任务(2)

天涯浪子 提交于 2019-12-05 04:12:25
原文: 如何在ASP.NET Core程序启动时运行异步任务(2) 原文: Running async tasks on app startup in ASP.NET Core (Part 2) 作者:Andrew Lock 译者:Lamond Lu 在我的 上一篇博客 中,我介绍了如何在ASP.NET Core应用程序启动时运行一些一次性异步任务。本篇博客将继续讨论上一篇的内容,如果你还没有读过,我建议你先读一下前一篇。 在本篇博客中,我将展示上一篇博文中提出的“在 Program.cs 中手动运行异步任务”的实现方法。该实现会使用一些简单的接口和类来封装应用程序启动时的运行任务逻辑。我还会展示一个替代方法,这个替代方法是在Kestral服务器启动时,使用 IServer 接口。 在应用程序启动时运行异步任务 # 这里我们先回顾一下上一遍博客内容,在上一篇中,我们试图寻找一种方案,允许我们在ASP.NET Core应用程序启动时执行一些异步任务。这些任务应该是在ASP.NET Core应用程序启动之前执行,但是由于这些任务可能需要读取配置或者使用服务,所以它们只能在ASP.NET Core的依赖注入容器配置完成后执行。数据库迁移,填充缓存都可以这种异步任务的使用场景。 我们在一篇文章的末尾提出了一个相对完善的解决方案,这个方案是在 Program.cs 中“手动”运行任务

ASP.NET Core[源码分析篇] - Authentication认证

╄→尐↘猪︶ㄣ 提交于 2019-12-04 21:23:51
原文: ASP.NET Core[源码分析篇] - Authentication认证   追本溯源,从使用开始     首先看一下我们通常是如何使用微软自带的认证,一般在Startup里面配置我们所需的依赖认证服务,这里通过JWT的认证方式讲解 public void ConfigureServices(IServiceCollection services) { services.AddAuthentication(authOpt => { authOpt.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; authOpt.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; }) .AddJwtBearer(o => { o.TokenValidationParameters = new TokenValidationParameters { //配置自己所要验证的参数 }; }); }   我们来看一下源码AddAuthentication主要做了什么  public static class AuthenticationServiceCollectionExtensions { public static

ntpdate更新系统时间时报错Can't find host ntp1.aliyun.com: Servname not supported for ai_socktype (-8)

a 夏天 提交于 2019-12-04 17:57:59
ntpdate更新系统时间时报错Can't find host ntp1.aliyun.com: Servname not supported for ai_socktype (-8) 所报错误: [root@web01 ~]# ntpdate ntp1.aliyun.com Error resolving ntp1.aliyun.com: Servname not supported for ai_socktype (-8) 11 Feb 20:58:03 ntpdate[3318]: Can't find host ntp1.aliyun.com: Servname not supported for ai_socktype (-8) 11 Feb 20:58:03 ntpdate[3318]: no servers can be used, exiting 原因:/etc/services 文件被改动或者不存在 导致域名解析错误 [root@web01 etc]# ls -l servic* -rw-r--r--. 1 root root 10240 Feb 11 02:27 services -rw-r--r-- 1 root root 641020 Feb 11 02:22 services.bak 长格式对比后发现源文件已改动 [root@web01 etc]# mv