ASP.NET CORE
文章平均质量分 87
HueiFeng
格局决定梦想。
展开
-
MSIL入门(一)C#代码与IL代码对比
基础概念Microsoft中间语言(MSIL),也成为通用中间语言(CIL),是一组与平台无关的指令,由特定于语言的编译器从源代码生成。MSIL是独立于平台的,因此,他可以在任何公共语言基础架构支持特定的环境上执行。通过JIT编译器将MSIL转换为特定计算机环境的特定机器代码。这是在执行MSIL之前完成的,同样,MSIL在需求的基础上转换为机器代码,既JIT编译器根据需要而不是整个MSIL进行编译。公共语言运行时(CLR)中的执行过程:执行过程包括创建MSIL以及通过JIT编译器将MSIL转换为机器代原创 2020-07-07 20:41:54 · 997 阅读 · 0 评论 -
【翻译】.NET 5 Preview5发布
今天,发布了.NET 5.0 Preview5。主要对它进行了一小部分新功能和性能的改进。.NET 5.0 Preview 4包含了一些计划和.NET 5.0要交付的内容。现在,大多数的功能都已经包含在里面,但是有许多功能还未到最终状态。预计这个版本在Preview 7中完善。可以下载适用于Windows,macOS和Linux的.NET 5.0 Preview 5:Windows and macOS installersBinariesDocker imagesSnap installer原创 2020-06-16 20:13:04 · 611 阅读 · 0 评论 -
ASP.NET Core中间件与HttpModule有何不同
前言在ASP.NET Core中最大的更改之一是对Http请求管道的更改,在ASP.NET中我们了解HttpHandler和HttpModule但是到现在这些已经被替换为中间件那么下面我们来看一下他们的不同处。HttpHandlerHandlers处理基于扩展的特定请求,HttpHandlers作为进行运行,同时做到对ASP.NET响应请求。他是一个实现System.Web.IHttphandler接口的类。任何实现IHttpHandler接口的类都可以作为Http请求处理响应的目标程序。它提供了对原创 2020-06-08 01:14:46 · 335 阅读 · 0 评论 -
ASP.NET Core 3.x API版本控制
前言一般来说需要更改我们API的时候才考虑版本控制,但是我觉得我们不应该等到那时候来实现它,我们应该有一个版本策略从我们应用程序开发时就开始制定好我们的策略,我们一直遵循着这个策略进行开发。我们其实可以通过多种方式进行实现我们API版本的控制,其实对于版本控制没有最好的方式,这完全取决于我们面向的使用者。API版本控制类型安装版本控制包Install-Package Microsoft.AspNetCore.Mvc.Versioning在Startup.cs中的ConfigureService原创 2020-06-02 20:35:03 · 277 阅读 · 0 评论 -
ASP.NET Core中处理中止的请求
当用户向应用程序发出请求时,服务器将解析该请求,生成响应,然后将结果发送给客户端。用户可能会在服务器处理请求的时候中止请求。就比如说用户跳转到另一个页面中获取说关闭页面。在这种情况下,我们希望停止所有正在进行的工作,以浪费不必要的资源。例如我们可能要取消SQL请求、http调用请求、CPU密集型操作等。ASP.NET Core提供了HTTPContext.RequestAborted检测客户端何时断开连接的属性,我们可以通过IsCancellationRequested以了解客户端是否中止连接。[Api原创 2020-05-26 20:51:32 · 610 阅读 · 0 评论 -
ASP.NET 开源导入导出库Magicodes.IE 完成Csv导入导出
Magicodes.IE Csv导入导出说明本章主要说明如何使用Magicodes.IE.Csv进行Csv导入导出.主要步骤1.安装包Magicodes.IE.CsvInstall-Package Magicodes.IE.Csv2.使用Magicodes.IE.Csv导出Csv通过如下代码片段我们将导出的内容通过相应的特性做出相应的处理.ExporterHeaderAttributeDisplayName: 显示名称Format: 格式化IsIgnore: 是否忽略 p原创 2020-05-14 09:58:05 · 276 阅读 · 0 评论 -
ASP.NET Core依赖注入(DI)
ASP.NET Core允许我们指定注册服务的生存期.服务实例将根据指定的生存时间自动处理.因此,我们无需担心清理此依赖关系,他将由ASP.NET Core框架处理.有如下三种类型的生命周期.Microsoft.Extensions.DependencyInjection.ServiceLifetime枚举值public enum ServiceLifetime{ Singleton, Scoped, Transient}Singleton应用程序将在该应用程序生命周期内创建并共享原创 2020-05-12 09:06:05 · 227 阅读 · 0 评论 -
.NET IoC模式依赖反转(DIP)、控制反转(Ioc)、依赖注入(DI)
依赖倒置原则(DIP)依赖倒置(Dependency Inversion Principle,缩写DIP)是面向对象六大基本原则之一。他是指一种特定的的解耦形式,使得高层次的模块不依赖低层次的模块的实现细节,依赖关系被颠倒(反转),从而使得低层次模块依赖于高层次模块的需求抽象.该原则规定:高层次的模块不应该依赖低层次模块,二者都应该依赖其抽象接口.抽象接口不应该依赖于具体实现,而具体实现则应该依赖于抽象接口.通过如下一个简单的示例,我们来看一下,我们通过一个简单地下单流程向我们的用户发送相关的原创 2020-05-12 09:05:27 · 246 阅读 · 0 评论 -
Blazor一个简单的示例让我们来起飞
BlazorBlazor他是一个开源的Web框架,不,这不是重点,重点是它可以使c#开发在浏览器上运行Web应用程序.它其实也简化了SPA的开发过程.Blazor = Browser + Razor为什么选择Blazor?Blazor可以让.NET附有全栈开发功能,它可以使Web开发变得轻松而高效.而且Blazor是开源的,它得到了社区的大力支持,而且发展速度会很快.它还拥有SPA的...原创 2020-05-05 22:57:08 · 2677 阅读 · 0 评论 -
ASP.NET Core WebAPI实现本地化(单资源文件)
在Startup ConfigureServices 注册本地化所需要的服务AddLocalization和 Configure<RequestLocalizationOptions> public void ConfigureServices(IServiceCollection services) { services.AddLo...原创 2020-04-29 18:44:59 · 592 阅读 · 0 评论 -
.NET Core 使用MediatR CQRS模式
前言CQRS(Command Query Responsibility Segregation)命令查询职责分离模式,它主要从我们业务系统中进行分离出我们(Command 增、删、改)和(Query 查),同时他可以明确的区分我们每一个动作向我们的请求模型和响应模型.从而降低了我们系统的复杂性.CQRS模式通过使用不同的接口来分离读取数据和更新数据的操作。CQRS模式可以最大化性能,扩展性以...原创 2020-04-09 09:50:47 · 5971 阅读 · 2 评论 -
ASP.NET Core MVC通过IViewLocationExpander扩展视图搜索路径
IViewLocationExpander APIExpandViewLocations Razor视图路径,视图引擎会搜索该路径.PopulateValues 每次调用都会填充路由项目目录如下所示创建区域扩展器,其实我并不需要多区域,我目前只需要达到一个区域中有多个文件夹进行存放我的视图.所以我通过实现IViewLocationExpander进行扩展添加我自定义视图路径规则...原创 2020-04-05 13:50:06 · 356 阅读 · 0 评论 -
【翻译】.NET 5 Preview2发布
在4月2日,发布了.NET 5.0 Preview2,这次发布对一些功能和性能做了相关的改进,同时后面也会实施5.0版本更多的功能,其中一些功能目前也dotnet/designs在.NET 5 Preview1中可以看到.NET 5里程碑中已经完成的建设任务,当然可以查看相关的设计资料进行反馈,同时可以下载Preview2并进行测试他。可以在Windows MacOS和Linux下载.NET 5...原创 2020-04-04 13:59:12 · 548 阅读 · 0 评论 -
ASP.NET Core AutoWrapper 自定义响应输出
前言AutoWrapper是一个简单可自定义全局异常处理程序和ASP.NET Core API响应的包装。他使用ASP.NET Core middleware拦截传入的HTTP请求,并将最后的结果使用统一的格式来自动包装起来.目的主要是让我们更多的关注业务特定的代码要求,并让包装器自动处理HTTP响应。这可以在构建API时加快开发时间,同时为HTTP响应试试我们统一的标准。安装AutoWra...原创 2020-03-30 23:22:10 · 343 阅读 · 0 评论 -
ASP.NET Core在MacOS上建立HTTPS开发证书
安装安装dotnet dev-certs https -trust移除sudo dotnet dev-certs https --clean安装前安装后原创 2020-06-10 19:38:33 · 427 阅读 · 0 评论 -
ASP.NET Core Razor 视图预编译、动态编译
0x01 前言ASP.NET Core在默认发布情况下,会启动预编译将试图编译成xx.Views.dll,也许在视图中打算修改一处很细小的地方我们需要再重新编译视图进行发布。下面我将从 ASP.NET Core 3 之前版本到 ASP.NET Core 3X 之后版本的一个配置列下下方供大家参考。0x02 预编译在ASP.Core中默认是为我们启动的预编译,默认系统会将视图编译进行预...原创 2020-02-27 17:48:33 · 1445 阅读 · 0 评论 -
ASP.NET Core ResponseCache进行缓存操作
前言本章将介绍客户端缓存将介绍浏览器缓存和服务端缓存,使用浏览器缓存将减少对web服务器的请求次数,同时可以提升性能,避免重复的运算浪费。ASP.NET Core对于HTTP缓存分为两种:客户端(浏览器缓存)服务端缓存客户端缓存通过设置HTTP的响应头 Cache-Control 来完成页面存储到浏览器缓存中如下所示:其实客户端缓存的话只需要进行设置 ResponseC...原创 2020-02-25 13:16:01 · 466 阅读 · 0 评论 -
ASP.NET Core 配置和使用环境变量
前言通常在应用程序开发到正式上线,在这个过程中我们会分为多个阶段,通常会有 开发、测试、以及正式环境等。每个环境的参数配置我们会使用不同的参数,因此呢,在ASP.NET Core中就提供了相关的环境API,方便我们更好的去做这些事情。环境ASP.NET Core使用ASPNETCORE_ENVIRONMENT来标识运行时环境。ASP.NET Core预设环境Developm...原创 2020-02-21 01:00:03 · 2459 阅读 · 0 评论 -
ASP.NET 开源导入导出库Magicodes.IE Docker中使用
Magicodes.IE在Docker中使用更新历史2019.02.13【Nuget】版本更新到2.0.2【导入】修复单列导入的Bug,单元测试“OneColumnImporter_Test”。问题见(https://github.com/dotnetcore/Magicodes.IE/issues/35)。【导出】修复导出HTML、Pdf、Word时,模板在某些情况下编译报错的问题。...原创 2020-02-15 09:31:41 · 219 阅读 · 0 评论 -
ASP.NET 开源导入导出库Magicodes.IE 导出Pdf教程
基础教程之导出Pdf收据说明本教程主要说明如何使用Magicodes.IE.Pdf完成Pdf收据导出要点导出PDF数据自定义PDF模板导出单据如何批量导出单据导出特性PdfExporterAttributeOrientation: 方向(横向或纵向)PaperKind: 纸张类型(默认A4)IsWriteHtml: 是否输出HTML模板ExporterHeader...原创 2020-01-21 16:55:19 · 501 阅读 · 0 评论 -
开源导入导出库Magicodes.IE 导出教程
要点导出特性如何导出Excel表头如何导出数据、如何进行数据的切割、如何使用筛选器导出特性ExporterAttributeName: 名称(当前Sheet 名称)HeaderFontSize:头部字体大小FontSize:正文字体大小MaxRowNumberOnASheet:Sheet最大允许的行数,设置了之后将输出多个SheetTableStyle:表格样式风格Au...原创 2020-01-20 17:05:28 · 1323 阅读 · 0 评论 -
体验.NET Core 命令行应用程序-CommandLineUtils
前言在我们开发中可能需要设计一次性应用程序,这些实用程序可以利用接近原始源代码的优势,但可以在与主Web应用程序完全独立的安全性上下文中启动。具体在 [管理过程](https://12factor.net/admin-processes)中也已经列出了原因。创建控制台应用打开命令提示符,创建创建一个ConsoleDemo的文件夹,键入如下片段dotnet new console...原创 2020-01-13 21:52:57 · 1968 阅读 · 0 评论 -
ASP.NET Core Web程序托管到Windows 服务
前言在 .NET Core 3.1和WorkerServices构建Windows服务 我们也看到了,如何将workerservices构建成服务,那么本篇文章我们再来看看如何将web应用程序托管到我们的服务中.将WEB应用作为服务运行我们需要将我们的WEB应用程序编译成exe文件,在ASP.NETCore中其实这是一个很简单的过程,我们只需要修改.csproj即可。正如下面代码片段...原创 2020-01-11 14:27:19 · 582 阅读 · 0 评论 -
.NET Core 3.1和WorkerServices构建Windows服务
介绍ASP.NET Core 3增加了一个非常有意思的功能Worker Service.他是一个ASP.NET Core模板,他允许我们创建托管长期的运行的后台服务,这些服务具体实现IHostedService接口的后台任务逻辑,他被成为"托管服务".同时他们可以部署到windows中Windows服务,以及Linux守护程序.创建一个托管服务我们通过命令行界面中的dotnet ne...原创 2020-01-06 23:19:49 · 1266 阅读 · 0 评论 -
如何为.NETCore安装汉化包智能感知
引言具体不记得是在群里还是什么地方有人问过,.NETCore有没有汉化包,答案是有,目前微软已经为我们提供了.NETCore多种语言的语言包。下面看看如何安装与使用吧。在哪下载?在微软官方下载当然该地址是.NETCore3.1的语言包,那么大家可以根据自身的框架版本进行选择对应的语言包。选择要为其安装IntelliSense的SDK,然后导航到关联的路径。SDK类型...原创 2019-12-20 15:17:32 · 380 阅读 · 6 评论 -
.NET Core 应用程序三种部署方式
可以为 .NET Core 应用程序创建三种部署:依赖框架的部署。 顾名思义,依赖框架的部署 (FDD) 依赖目标系统上存在共享系统级版本的 .NET Core。 由于已存在 .NET Core,因此应用在 .NET Core 安装程序间也是可移植的。 应用仅包含其自己的代码和任何位于 .NET Core 库外的第三方依赖项。 FDD 包含可通过在命令行中使用 dotnet 实用程序启动的 ....原创 2019-12-13 22:09:26 · 1762 阅读 · 0 评论 -
CentOS 7安装.NetCore
打开终端并运行以下命令。sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm安装.NET Core SDK更新可用于安装的产品,然后安装.NET Core SDK。在您的终端中,运行以下命令。sudo yum install dotnet-sdk-3.1安装AS...原创 2019-12-13 21:22:42 · 720 阅读 · 0 评论 -
ASP.NET Core3.X 终端中间件转换为端点路由运行
引言前几天.NET Core3.1发布,于是我把公司一个基础通用系统升级了,同时删除了几个基础模块当然这几个基础模块与.NET Core3.1无关,其中包括了支付模块,升级完后静文(同事)问我你把支付删除了啊?我说是啊,没考虑好怎么加上(感觉目前不太好,我需要重新设计一下)。故事从这开始考虑支付的时候我考虑的是将支付sdk如何直接引入到系统,以及可以有一系列支付的路由,我需要考虑的是...原创 2019-12-09 12:01:02 · 331 阅读 · 1 评论 -
【翻译】.NET Core3.1发布
.NET Core3.1发布我们很高兴宣布.NET Core 3.1的发布。实际上,这只是对我们两个多月前发布的.NET Core 3.0的一小部分修复和完善。最重要的是.NET Core 3.1是长期支持(LTS)版本,并且将支持三年。和过去一样,我们希望花一些时间来发布下一个LTS版本。额外的两个月(在.NET Core 3.0之后)使我们能够选择和实施在已经非常稳定的基础上进行的正确改进。...翻译 2019-12-04 09:19:54 · 2105 阅读 · 1 评论 -
ASP.NET Core 选项模式源码学习Options IOptionsMonitor(三)
前言IOptionsMonitor 是一种单一示例服务,可随时检索当前选项值,这在单一实例依赖项中尤其有用。IOptionsMonitor用于检索选项并管理TOption实例的选项通知, IOptionsMonitor 支持以下方案:更改通知命名选项可重载配置选择性选项失效 (IOptionsMonitorCache)IOptionsMonitor public ...原创 2019-12-04 08:24:50 · 782 阅读 · 0 评论 -
ASP.NET Core 选项模式源码学习Options IOptions(二)
前言上一篇文章介绍IOptions的注册,本章我们继续往下看IOptionsIOptions是一个接口里面只有一个Values属性,该接口通过OptionsManager实现 public interface IOptions<out TOptions> where TOptions : class, new() { /// <sum...原创 2019-12-04 08:23:39 · 178 阅读 · 0 评论 -
ASP.NET Core 选项模式源码学习Options Configure(一)
前言说到配置我们就会想到web.config和app.config,ASP.NET Core 后我们的配置变得更加轻量级了,在ASP.NET Core中,配置模型得到了显著的扩展和增强,应用程序配置可以存储在多环境变量配置中,appsettings.json用户机密等 并可以通过应用程序中的相同界面轻松访问,除此之外,ASP.NET中的新配置系统允许使用Options的强类型设置。强类型...原创 2019-12-04 08:22:59 · 819 阅读 · 0 评论 -
ASP.NET Core 中的 ObjectPool 对象重用(二)
前言上一篇文章主要介绍了ObjectPool的理论知识,再来介绍一下Microsoft.Extensions.ObjectPool是如何实现的.核心组件ObjectPoolObjectPool是一个泛型抽象接口,他抽象了两个方法Get和ReturnGet方法用于从对象池获取到可用对象,如果对象不可用则创建对象并返回出来Return方法用户将对象返回到对象池 //...原创 2019-12-02 11:07:44 · 282 阅读 · 0 评论 -
ASP.NET Core 中的 ObjectPool 对象重用(一)
前言对象池是一种设计模式,一个对象池包含一组已经初始化过且可以使用的对象,而可以在有需求时创建和销毁对象。池的对象可以从池中取得对象,对其进行操作处理,并在不需要时归还给池子而非直接销毁他,他是一种特殊的工厂对象。若初始化、实例化的代价高,且有需求需要经常实例化,但每次实例化的数量较小的情况下,使用对象池可以过得显著的性能提升。从池子中取得对象的时间是可测的,但新建一个实际所需要的时间是不...原创 2019-12-02 11:07:12 · 236 阅读 · 0 评论 -
【翻译】Orleans 3.0 发布
这是Orleans团队的帖子。Orleans是用于使用.NET构建分布式应用程序的跨平台框架。有关更多信息,请参见https://github.com/dotnet/orleans。我们很高兴宣布Orleans 3.0版本。自Orleans 2.0以来,进行了大量改进和修复,并提供了一些新功能。这些变化是由许多人在各种各样的场景和环境中在生产中运行基于Orleans的应用程序的经验所驱动的,也...翻译 2019-11-29 15:46:29 · 228 阅读 · 0 评论 -
ASP.NET Core主机地址过滤HostFiltering
前言在ASP.Net Core2.X调用的CreateWebHostBuilder和3.X的主要区别在于WebHost的调用,CreateDefaultBuilder被Host替换,另一个区别是对ConfigureWebHostDefaults()的调用;由于新的主机生成器是通用主机生成器,因此我们也需要知道默认Web主机配置默认配置了什么.ConfigureWebHostDefaults...原创 2019-11-14 11:59:09 · 258 阅读 · 0 评论 -
ASP.NET Core 3.x 并发限制
前言Microsoft.AspNetCore.ConcurrencyLimiter AspNetCore3.0后增加的,用于传入的请求进行排队处理,避免线程池的不足.我们日常开发中可能常做的给某web服务器配置连接数以及,请求队列大小,那么今天我们看看如何在通过中间件形式实现一个并发量以及队列长度限制.Queue策略添加NugetInstall-Package Microsoft...原创 2019-11-13 08:45:07 · 1753 阅读 · 0 评论 -
ASP.NET Core如何使用压缩中间件提高Web应用程序性能
前言压缩可以大大的降低我们Web服务器的响应速度,压缩从而提高我们网页的加载速度,以及节省一定的带宽.何时使用相应压缩中间件在IIS,Apache,Nginx中使用基于服务端的响应压缩技术。中间件的执行可能和服务端模块不匹配。HTTP.sys 和Kestrel server目前没有提供内置的压缩支持。什么时候使用Response Compression Middleware:无...原创 2019-11-05 09:57:15 · 309 阅读 · 0 评论 -
.Net Core实现健康检查
ASP.NET Core 提供运行状况检查中间件和库,以用于报告应用基础结构组件的运行状况。运行状况检查由应用程序作为 HTTP 终结点公开。 可以为各种实时监视方案配置运行状况检查终结点:运行状况探测可以由容器业务流程协调程和负载均衡器用于检查应用的状态。 例如,容器业务流程协调程序可以通过停止滚动部署或重新启动容器来响应失败的运行状况检查。 负载均衡器可以通过将流量从失败的实例路由到正常...原创 2019-11-05 09:46:29 · 1264 阅读 · 0 评论 -
asp.netcore 自动挡Docker Nginx Redis(滴滴滴,自动挡)
前言上一章介绍了Docker通过多条命令创建启动运行Docker容器,由此可见这样一个个去创建单独的容器也是相当麻烦的,比如要在某个复杂项目中用DB、缓存、消息等等,这样我们还要去一个个再创建,为此这时候需要用上我们三剑客中的一员大将自动挡的(DockerCompose).Compose是一个用于定义和应用多个容器的工具(镜像、启动命令、端口映射等),一条命令便可配置我们引用中的所有服务....原创 2019-10-04 19:13:56 · 358 阅读 · 0 评论