DotNetCore知识栈
#、.NET Core提供的特性
1.开源、免费
2.轻量级、跨平台
3.组件化、模块化、IOC+Nuget、中间件
4.高性能
5.统一了MVC和WebAPI编程模型
a) 比如:ASP.NET Core 中MVC 和Web API 直接或间接继承同一个基类 ControllerBase,提供可使用的API也一致化
b) 比如:旧ASP.NET时代,写全局filter需要针对MVC 和Web API 分别编写代码,但在ASP.NET Core,直接使用一套中间件代码即可
6.可测试性
7.微服务、容器化支持
8.标准化 .NET API 规范- .NET STANDARD
#、迁移到.NET Core
目前市面上还存在很多传统 .NET 旧项目,我们需要根据公司情况决定是否升级到.NET Core。
如果需要进行旧项目升级的,可以参考文章:《.NET项目迁移到.NET Core操作指南》
VS和.NET Core安装
安装 .NET Core Runtime 和.NET Core SDK
【微软官方文档】ASP.NET Core *.* 个版本新特性
[坑]安装 .Net Core 2.2 SDK后,VS2017依然不能设置core2.2为目标框架
基础
.NET Core 运行程序注意事项(dotnet dll 与 dotnet run)
ASP.NET Core 中使用多个环境(开发、预发布、生产)- 默认为 Production
ASP.NET Core 动作结果(ActionResult)
ASP.NET Core 中控制器操作的多路径返回类型(IActionResult)
.NET Core 3.0 新的System.Text.JsonAPI
配置
ASP.NET Core 中的配置(json、xml、命令行、环境变量、内存变量等)
.Net Core 自定义配置源从远程API读取配置(ConfigurationProvider)
路由、模型绑定
ASP.NET Core WebAPI中,Controller标注 [ApiController] 特性,其路由只能使用[route]特性方式
ASP.NET Core MVC 构建可读性更高的ASP.NET Core 路由
ASP.NET Core 中的自定义模型绑定(IModelBinder)
依赖注入(IOC、DI)
什么是控制反转,和依赖注入:
控制反转的意思就是:平常我们需要一个类对象的时候需要new出来,而现在我们把new一个类对象的工作交给了IOC容器,当我们需要一个类对象的时候直接向IOC容器要,就可以了,这个就是控制反转。(控制权交个了IOC容器)
依赖注入的意思就是:当我需要一个类对象,IOC容器给我们这个类对象的过程其实就是依赖注入,依赖注入有构造函数注入和属性注入。
官方推荐通过构造函数。这也是所谓的显式依赖。Asp.Net Core 的标准依赖注入容器不支持属性注入。(可以使用autofac或者其他来实现属性注入)
可以参考 OSharp 框架,设计三个全局注入接口,来实现自动化注入:ISingletonDependency 和 ITransientDependency 、 IScopedDependency ( 单例、瞬时、范围)。
案例1:使用nlog时,想根据需要使用不同的配置文件Nlog.config 写日志时,就可以使用文章中介绍的 Factory 命名注入方案来实现
案例2:使用分布式缓存 IDistributedCache 时,想根据需要在一个项目中同时使用redis和sqlserver
ASP.NET Core 中多个接口对应同一个实现的正确姿势
[OSharp]使用 IServiceProvider.GetService<T>() 实现按需注入,优化性能
#、ASP.NET Core 集合 Autofac 的使用
Asp.Net Core 2.0 之旅---AutoFacIOC容器的使用教程
Asp.Net Core 2.0 之旅---AutoFac仓储泛型的依赖注入(泛型注入)
Asp.Net Core 2.0 之旅---数据访问仓储模式的事务管理(uow+rp)
ASP.NET Core 中使用Autofac实现属性注入的代码片段
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
|
public IServiceProvider ConfigureServices(IServiceCollection services){ // 第一步:替换系统默认Controller创建器(否则Controller下面无法使用属性注入) // 在 services.AddMvc() 之前 services.Replace(ServiceDescriptor.Transient<IControllerActivator, ServiceBasedControllerActivator>()); services.AddMvc(); var builder = new ContainerBuilder(); // 第二步:找到所有Controller的类型 // 通过Autofac对Controller类型进行属性注册 PropertiesAutowired() var assembly = this.GetType().GetTypeInfo().Assembly; var manager = new ApplicationPartManager(); manager.ApplicationParts.Add(new AssemblyPart(assembly)); manager.FeatureProviders.Add(new ControllerFeatureProvider()); var feature = new ControllerFeature(); manager.PopulateFeature(feature); builder.RegisterTypes(feature.Controllers.Select(ti => ti.AsType()).ToArray()).PropertiesAutowired(); // 第三步:配置 ContainerBuilder,返回 IServiceProvider builder.Populate(services); return new AutofacServiceProvider(builder.Build());} |
ASP.NET Core WebAPI
创建ASP.NET Core Web API (ControllerBase、参数绑定源)
ASP.NET Core:MVC 与 Razor Pages
ASP.NET Core MVC 静态文件目录配置与访问授权
新的 Razor 机制
ASP.NET Core 中的 Razor 页面介绍(OnGet、OnPost、单页多Handler方式)
ASP.NET Core 中 Razor 页面的IPageFilter
ASP.NET Core 中 Razor 页面的路由和应用约定
ASP.NET Core Razor 配置:预编译,动态编译,混合编译
WebForm & MVC & Razor Pages
[译]ASP.Net Core 2.0中的Razor Page不是WebForm
ASP.NET Core Razor页面简化了 ASP.NET MVC 应用程序
HttpContext
ASP.NET Core 中访问 HttpContext 的方法
ASP.NET Core 中通过IHttpContextAccessor实现公用静态HttpContext
状态管理
常见方式:Cookie、Session、TempData、查询字符串、HttpContext.Items、缓存、依赖关系注入
#、session
ASP.NET Core 在通用数据保护条例规则下使用 session
#、cookie
ASP.NET Core SameSite 设置引起 Cookie 在 QQ 浏览器中不起作用
[github]ASP.NET Core CookieManager
通信
#、HttpClient
ASP.NET Core HttpClient的各种用法、生命周期管理
DotNetCore 使用Http请求及基于 Polly 的处理故障
DotNetCore 中 HttpClientFactory 类源码分析
#、gRPC
ASP.NET Core 3.0 上的gRPC服务模板初体验(多图)
发布部署
ASP.NET Core 使用Supervisor进行托管部署
配置 ASP.NET Core 以使用代理服务器和负载均衡器
使用 Nginx 在 Linux 上托管 ASP.NET Core
使用 Apache 在 Linux 上托管 ASP.NET Core
单元测试
.NET Core 和 .NET Standard 单元测试最佳做法
使用 dotnet test 和 xUnit 在 .NET Core 中进行 C# 单元测试
使用 dotnet test 和 NUnit 在 .NET Core 中进行 C# 单元测试
使用 dotnet test 和 MSTest 在 .NET Core 中进行 C# 单元测试
使用 dotnet test --filter 进行选择性单元测试
DotNetCore知识栈的更多相关文章
- 【Todo】React & Nodejs学习 &事件驱动,非阻塞IO & JS知识栈:Node为主,JQuery为辅,Bootstrap & React为辅辅,其他如Angular了解用途即可
JS知识栈:Node为主,JQuery为辅,Bootstrap & React为辅辅,其他如Angular了解用途即可 今天在学习ReactJS和NodeJS,看到关于ReactJS的这篇文章 ...
- python全栈开发 * 进程之间的通信,进程之间数据共享 * 180726
进程之间的通信(IPC)队列和管道一.队列 基于管道实现 管道 + 锁 数据安全(一).队列 队列遵循先进先出原则(FIFO) 多用于维护秩序,买票,秒杀 队列的所有方法: put()(给队列里添加数 ...
- 《剑指offer》— JavaScript(20)包含min函数的栈
包含min函数的栈 题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数. 实现代码 var stack = []; function push(node) { stack. ...
- 「Leetcode-算法_MId1006」从单栈到双栈
Mid 1006 笨阶乘 栈/后缀 运算优化 + 栈 思路描述 每四个数一组 这四个数中前三个会进行乘.除 然后与最后一个相加 Stack 入前三个之和 与 最后一个数 以 4 举例 运算式 4 * ...
- 描述高频题之队列&栈
栈和队列 全文概览 基础知识 栈 栈是一种先进后出的数据结构.这里有一个非常典型的例子,就是堆叠盘子.我们在放盘子的时候,只能从下往上一个一个的放:在取的时候,只能从上往下一个一个取,不能从中间随意取 ...
- react入门参考资料--step by step
ReactJS简介 React 起源于 Facebook 的内部项目,因为该公司对市场上所有 JavaScript MVC 框架,都不满意,就决定自己写一套,用来架设 Instagram 的网站.做出 ...
- 4年前端、2年CTO:一个非科班程序员的真实奋斗史
1.引言 我,Scott,一家创业公司的 CTO. 从业6年却很少写文章,近一年来接触了几十个刚毕业的前端新人,也面试了100多个前端工程师和Nodejs工程师,对于前端发展的这个职业算是有些感触 ...
- Day 1 上午
唉,上午就碰到一个开不了机的电脑,白白浪费了半个小时,真的难受QwQ POINT1 枚举 枚举也称作穷举,指的是从问题所有可能的解的集合中一一枚举各元素. 用题目中给定的检验条件判定哪些是无用的,哪些 ...
- 五一培训 清北学堂 DAY1
今天是冯哲老师的讲授~ 1.枚举 枚举也称作穷举,指的是从问题所有可能的解的集合中一一枚举各元素. 用题目中给定的检验条件判定哪些是无用的,哪些是有用的.能使命题成立的即为其解. 例一一棵苹果树上有n ...
随机推荐
- JUnit——assertThat(acture,matcher)
使用hamcrest之前需要引入相关的jar包,包括hamcrest-core.1.3.jar和hamcrest-library-1.3.jar. 具体引入的方法为:右击JUnit工程——build ...
- sh_02_快速体验
sh_02_快速体验 import sh_01_九九乘法表 sh_01_九九乘法表.multiple_table()
- 微信小程序登录 code 40029 天坑
微信登录时 code 大坑(服务端返回如下代码) {"errcode":40029,"errmsg":"invalid code, hints: [ ...
- [CF1101F]Trucks and Cities:分治优化决策单调性
分析 好像是有一个叫这个名字的算法,链接. 令\(f[i][j][k]\)表示一辆每公里耗油量为\(1\)的货车从\(i\)到\(j\)中途加\(k\)次油最小的油箱容量.枚举所有的起点和中途加油的次 ...
- Spring Boot教程(十九)RESTful API单元测试
下面针对该Controller编写测试用例验证正确性,具体如下.当然也可以通过浏览器插件等进行请求提交验证. @RunWith(SpringJUnit4ClassRunner.class) @Spri ...
- bootstrap editable初始化后表单
function loadData() { var url = "${ctx }/sys/marketing/product/page"; $('#tablepager').boo ...
- pymysql 处理数据的几种方式
1.表中提取数据 sql = "SELECT * FROM table WHERE name='%s'AND time='%s'" % (name,time)多个选择条件用AND连 ...
- 后盾网lavarel视频项目---phpstorm 配置ftp, 自动更新同步代码
后盾网lavarel视频项目---phpstorm 配置ftp, 自动更新同步代码 一.总结 一句话总结: 1.在phpstorm中设置:路径Tools/Deployment/Configuratio ...
- [论文理解] Squeeze-and-Excitation Networks
Squeeze-and-Excitation Networks 简介 SENet提出了一种更好的特征表示结构,通过支路结构学习作用到input上更好的表示feature.结构上是使用一个支路去学习如何 ...
- C# 格式化XML方法
/// <summary> /// 格式化XML方法 /// </summary> public class UXMLFormat { public static string ...