nuget

为.netcore助力--WebApiClient正式发布core版本

爱⌒轻易说出口 提交于 2020-08-13 23:21:24
1 前言 WebApiClient已成熟稳定,发布了WebApiClient.JIT和WebApiClient.AOT两个nuget包,累计近10w次下载。我对它的高可扩展性设计相当满意和自豪,但WebApiClient并不因此而停下脚步,在一年前,我产生了编写其core版本的想法,将asp.netcore服务端先进的思想融入到core版本,在性能与扩展性上得到进一步升华。 对应的,给它叫了WebApiClientCore的名字,为了对得起名字里面的Core字,我在框架设计、性能优化上占用整体开发时间一半以上。 2 框架设计 IActionInvoker WebApiClient时还没有IActionInvoker概念,对应的执行逻辑直接在ApiActionContext上实现。现在我觉得,Context应该是一个状态数据类,而不能也成为一个执行者,因为一个执行者的实例可以无限次地执行多个Context实例。 Refit则更简单粗暴,将所有实现都在一个RequestBuilderImplementation的类上:你们只要也只能使用我内置的Attribute声明,一切执行在我这个类里面包办,因为我是一个万能类。 Core版本增加了IActionInvoker概念,从中Context分开,用于执行Context,职责分明。在实现上又分为多种Invoker

使用 xUnit 编写 ASP.NET Core 单元测试

五迷三道 提交于 2020-08-13 18:21:46
还记得 .NET Framework 的 ASP.NET WebForm 吗?那个年代如果要在 Web 层做单元测试简直就是灾难啊。.NET Core 吸取教训,在设计上考虑到了可测试性,就连 ASP.NET Core 这种 Web 或 API 应用要做单元测试也是很方便的。其中面向接口和依赖注入在这方面起到了非常重要的作用。 本文就来手把手教你如何用 xUnit 对 ASP.NET Core 应用做单元测试。.NET Core 常用的测试工具还有 NUnit 和 MSTest,我本人习惯用 xUnit 作为测试工具,所以本文用的是 xUnit。 创建示例项目 先用 ASP.NET Core API 模板建一个应用。 模板为我们自动创建了一个 ValuesController,为了方便演示,我们只留其中一个 Get 方法: public class ValuesController : ControllerBase { // GET api/values/5 [HttpGet( "{id}" )] public ActionResult< string > Get ( int id) { return "value" ; } } 然后再添加一个 xUnit 单元测试项目: 模板自动为我们添加好了 xUnit 引用: < ItemGroup > < PackageReference

使用Azure Automation Hybrid管理本地SQL Server备份状态(一)

微笑、不失礼 提交于 2020-08-13 16:07:08
Azure Automation是一种云解决方案,可通过自动执行任务,为服务器提供所需的状态配置以及配置管理来帮助组织满足其基础结构和安全性要求。默认情况下,创建Azure自动化后,它将允许在Azure中执行脚本。但是某些组织希望能够在其他云和本地环境中自动化任务,那么此时Hybrid Worker工具是提供这种解决方案的关键。 利用 Azure Automation Hybrid worker功能,既可以直接在托管角色的计算机上运行 Runbook,也可以对环境中的资源运行 Runbook,从而管理这些本地资源。 Runbook 在 Azure 自动化中进行存储和管理,然后发送到一个或多个指定计算机上运行。 若要安装和配置 Windows 混合 Runbook 辅助角色,可使用两种方法。 官方建议的方法是使用自动化 Runbook 来彻底实现配置 Windows 计算机过程的自动化。 第二种方法使用分步过程来手动安装和配置角色。 在接下来的博客中我们会给大家介绍自动化安装的方式进行安装。 部署要求: 部署Azure Automation Hybrid worker的计算机需要满足如下需求: • Windows Server 2012 或更高版本。 • Windows PowerShell 5.1 或更高版本(下载 WMF 5.1)。 • .NET Framework 4.6.2

Xamarin 解决创建空白项目编译提示 linking references 找不到资源

主宰稳场 提交于 2020-08-13 08:37:53
在新建一个 Xamarin 应用,编译时提示了 linking references 和一些诡异的文件无法访问,原因是文件路径问题和 NuGet 还原问题 如果创建的 Xamarin 项目所在的文件路径比较深,同时包含中文等字符时,在编译时可以会诡异失败 oid\Xamarin.Android.Aapt2.targets(155,3): error APT2062: failed linking references. 或者 error APT0000: resource integer/google_play_services_version (aka com.softoursistemas.rutesc.droid:integer/google_play_services_version) not found 也有比较明确的提示 Failed to create JavaTypeInfo for class: Android.Support.V13.View.Inputmethod.InputConnectionCompat/IOnCommitContentListenerImplementor due to MAX_PATH: System.IO.DirectoryNotFoundException: 未能找到路径“g:\lindexi

ASP.NET Core MVC+Layui使用EF Core连接MySQL执行简单的CRUD操作

爱⌒轻易说出口 提交于 2020-08-13 06:41:49
前言:   本章主要通过一个完整的示例讲解ASP.NET Core MVC+EF Core对MySQL数据库进行简单的CRUD操作,希望能够为刚入门.NET Core的小伙伴们提供一个完整的参考实例。关于ASP.NET Core MVC+EF操作MsSQL Server详情请参考官方文档( https://docs.microsoft.com/zh-cn/aspnet/core/data/ef-mvc/?view=aspnetcore-3.1 )。 示例实现功能预览: 博客实例源码下载地址: https://github.com/YSGStudyHards/ASP.NET-Core-MVC-Layui-EF-Core-CRUD_Sample 一、创建ASP.NET Core Web应用程序: 注意,本章节主要以APS.NET Core 3.1版本作为博客的样式实例! 二、添加EF Core NuGet包:   若要在项目中使用EF Core操作MySQL数据库,需要安装相应的数据库驱动包。 本章教程主要使用 MySQL数据库,所以我们需要安装相关驱动包MySql.Data.EntityFrameworkCore。 安装方式: 点击工具=>NuGet包管理器=>程序包管理器控制台输入以下命令: Install-Package MySql.Data

WPF 用 AvalonEdit 开发简单的代码编辑器 支持高亮自动提示

醉酒当歌 提交于 2020-08-13 04:36:42
用 WPF 开发一个代码编辑器的难度很低,因为行业里面有很多小伙伴开发过,这些小伙伴将自己的代码开源了,发布到 NuGet 上,所以让我开发一个代码编辑器的难度实在太低。在不要有奇特的要求情况下,通过 AvalonEdit 可以快速开发出自己想要的代码编辑器 第一步通过 NuGet 安装 AvalonEdit 打开 xaml 界面,添加控件,此时可以在界面设置代码高亮方式等 <avalonEdit:TextEditor xmlns:avalonEdit="http://icsharpcode.net/sharpdevelop/avalonedit" Name="TextEditor" SyntaxHighlighting="C#" FontFamily="Consolas" FontSize="10pt" LineNumbersForeground="Black" ShowLineNumbers="True"> <avalonEdit:TextEditor.Options> <avalonEdit:TextEditorOptions ShowSpaces="True" > <avalonEdit:TextEditorOptions.ColumnRulerPosition> <system:Int32>10</system:Int32> </avalonEdit

ASP.NET Core策略授权和 ABP 授权

拟墨画扇 提交于 2020-08-13 03:14:09
目录 ASP.NET Core 中的策略授权 策略 定义一个 Controller 设定权限 定义策略 存储用户信息 标记访问权限 认证:Token 凭据 颁发登录凭据 自定义授权 IAuthorizationService ABP 授权 创建 ABP 应用 定义权限 Github 仓库源码地址 https://github.com/whuanles/2020-07-12 ASP.NET Core 中的策略授权 首先我们来创建一个 WebAPI 应用。 然后引入 Microsoft.AspNetCore.Authentication.JwtBearer 包。 策略 Startup 类的 ConfigureServices 方法中,添加一个策略的形式如下: services.AddAuthorization(options => { options.AddPolicy("AtLeast21", policy => policy.Requirements.Add(new MinimumAgeRequirement(21))); }); 这里我们分步来说。 services.AddAuthorization 用于添加授权方式,目前只支持 AddPolicy。 ASP.NET Core 中,有基于角色、声明、策略的三种授权形式,都是使用 AddPolicy 来添加授权处理。 其中,有两个

VisualStudio 命令行编译 build 通过 rebuild 不通过

荒凉一梦 提交于 2020-08-13 00:01:29
在使用命令行编译项目,发现使用 build 可以编译通过,但是通过 rebuild 编译提示找不到项目,明明在对应的文件夹存在项目输出的 dll 文件,但是会提示找不到 在命令行编译的 build 和 rebuild 的不同在于使用 build 会用上次编译的内容,如果没有文件更改,那么这个项目不会重新编译。同时会从缓存拿到项目依赖顺序,获取上次编译的项目信息。而 rebuild 会先执行 clean 清理,会清理缓存重新创建项目依赖顺序 而如果 build 能通过而 rebuild 不能通过,此时请尝试清理整个项目仓库的 bin 和 obj 文件夹。在使用 git 管理的项目可以使用下面命令快速清理 git clean -xdf 在执行上面命令之前请先提交本地文件 清理完成之后再次使用 build 命令,关于 msbuild 命令行请看 MSBuild 常用参数 如果清理完成发现通过 build 命令不通过,注意这里的不通过不是因为 nuget 没还原而没通过,那么证明现在的代码是因为依赖上次编译的内容。此时可以清理完成在 VisualStudio 打开,看错误列表内容 如果清理完成发现通过 build 命令能通过,同时用 rebuild 命令如果没有添加 /m 命令也就是并行编译没有问题,而添加了 /m 命令并行重新编译就不通过,提示某些项目的 dll 找不到

从壹开始前后端分离【 .NET Core2.0/3.0 +Vue2.0 】框架之十一 || AOP自定义筛选,Redis入门 11.1

流过昼夜 提交于 2020-08-12 18:18:55
本文3.0版本文章 https://mp.weixin.qq.com/s/pjvleNGi_AazZ7COdxQyPQ Redis 部分的内容,和netcore2.0一样,不需要更新。 代码已上传Github+Gitee,文末有地址   书说上文《 从壹开始前后端分离【 .NET Core2.0 Api + Vue 2.0 + AOP + 分布式】框架之十 || AOP面向切面编程浅解析:简单日志记录 + 服务切面缓存 》,昨天咱们说到了AOP面向切面编程,简单的举出了两个栗子,不知道大家有什么想法呢,不知道是否与传统的缓存的使用有做对比了么?   传统的缓存是在Controller中,将获取到的数据手动处理,然后当另一个controller中又使用的时候,还是Get,Set相关操作,当然如果小项目,有两三个缓存还好,如果是特别多的接口调用,面向Service服务层还是很有必要的,不需要额外写多余代码,只需要正常调取Service层的接口就行,AOP结合Autofac注入,会自动的查找,然后返回数据,不继续往下走Repository仓储了。   昨天我发布文章后,有一个网友提出了一个问题,他想的很好,就是如果面向到了Service层,那BaseService中的CURD等基本方法都被注入了,这样会造成太多的代理类,不仅没有必要,甚至还有问题,比如把Update也缓存了

CAP 3.0 版本发布通告

情到浓时终转凉″ 提交于 2020-08-12 17:48:56
前言 大家好,我们很高兴宣布 CAP 发布了 3.0 版本正式版。 自从上次 CAP 2.6 版本发布 以来,已经过去了几个月的时间,关注的朋友可能知道,在这几个月的时间里,也发布了几个预览版的 3.0 版本的NuGet包。 3.0 是一个主要版本,在这个版本中我们对代码进行了大量重构,重构的目的是为了让代码保持清洁并且逻辑更加清晰易读,并且接口更加合理。作为一个主要版本并进行大量重构的前提下避免不了会带来一些破坏性更新,但这些都是值得的。 简介 可能有些人还不知道 CAP 是什么,老规矩来一个简介。 CAP 是一个用来解决微服务或者分布式系统中分布式事务问题的一个开源项目解决方案( https://github.com/dotnetcore/CAP )同样可以用来作为EventBus使用,目前已经3岁了,目前已经应用到了很多的公司和项目中, 想对 CAP 更多了解的同学可以看下 官方文档 。 本次在 CAP 3.0 版本中我们主要带来了以下破坏性改变和新特性: 破坏性改变: 消息协议和存储 接口改动 分离 Dashboard 项目 新特性: 新的发布Api 新的序列化接口 全新的 Diagnostics 事件和结构 新的Kafka Transport配置项 其他改进 下面我们就来逐一看一下吧。 破坏性改变 本次版本我们带来了一个破坏性的改变,这导致我们的 3.0 版本是不和 2