官网 在介绍安装环境之前,先介绍周边信息,比如微软net官网. https://www.microsoft.com/net 这个网站是学习微软技术栈比较权威的地方,包括环境下载,学习,架构,文档,社区等等非常有价值的内容. 1.1下载.NET Core 下载网址:https://www.microsoft.com/net/download 微信支付 在逛这个网站的时候,偶然发现微信支付用的微服务就是基于.NET Core技术栈,视频里你还可以看到张善友本人(张善友是微软MVP,.NET Core…
大家好,我是IT人张飞洪,专注于.NET平台十年有余. 工作之余喜欢阅读和写作,学习的内容包括数据结构/算法.网络技术.Linux系统原理.数据库技术原理,设计模式.前沿架构.微服务.容器技术等等…… 喜欢但不限于,Java.C.C++.Python.Javascript……Wait……不装了,因为我也还在学习的路上,愿你我一起终生学习. 这里先给整个文章的系列定一个调调,起名深入浅出ASP.NET Core系列.深入的目的是希望能了解底层机制,浅出是为了学习能不让自己那么枯燥,给自己定个小目标…
希望给你3-5分钟的碎片化学习,可能是坐地铁.等公交,积少成多,水滴石穿,谢谢关注. 很多人第一次在IIS中部署Asp.Net Core App的人都会遇到问题,会发现原来的部署方式无法运行Asp.Net Core App程序.其实大的方式没有多少变化,Asp.Net Core App为了做到跨平台,自带了一个轻量级的Web Server-Kestrel,那么要在IIS中部署Asp.Net Core App,就必须有一种新的机制来协调IIS与Kestrel Server之间的数据传递 Asp.N…
希望给你3-5分钟的碎片化学习,可能是坐地铁.等公交,积少成多,水滴石穿,谢谢关注. WebHost配置 覆盖配置文件和修改启动URL 覆盖配置文件和修改启动URL是经常使用的地方,覆盖配置文件可以自定义自己的配置信息,或者同时支持多个配置文件并存,对配置内容过多的情况可以起到一个分类的目的,非常的好用. 同样UseUrls也可以同时支持多个访问地址和端口,灵活性,实用性兼备. IHostingEnvironment 这是整个宿主环境类,可以通过该环境获取相关站点路径,环境名称等相关信息,它也是…
希望给你3-5分钟的碎片化学习,可能是坐地铁.等公交,积少成多,水滴石穿,谢谢关注. 入门篇 引子 1.1专题介绍 1.2环境安装 1.3创建项目 1.4部署到IIS 1.5准备CentOS和Nginx环境 1.6部署到CentOS 配置管理 2.1命令行和JSON的配置 2.2Bind建立配置文件和实体的映射 2.3用Options建立配置和实体的映射 2.4配置的热更新 2.5配置的框架浅析 依赖注入 3.1依赖注入 3.2依赖注入源码分析 HTTP请求 4.1ASP.NET Core请求过…
希望给你3-5分钟的碎片化学习,可能是坐地铁.等公交,积少成多,水滴石穿,码字辛苦,如果你吃了蛋觉得味道不错,希望点个赞,谢谢关注. Role授权 这是一种Asp.Net常用的传统的授权方法,当我们在生成Token的时候,配置的ClaimTypes.Role为Admin,而ValuesController.cs是一个普通user(如下图所示),我们看下是否能访问成功? 我们把生成的Token通过JWT官网验证一下,发现多了一个"role":"admin" Postm…
希望给你3-5分钟的碎片化学习,可能是坐地铁.等公交,积少成多,水滴石穿,谢谢关注. 大家知道通常我们修改网站的配置文件比如,webconfig的时候,网站需要重启才能读取到最新的修改,所谓热更新就是网站无需重启,修改完配置文件,直接F5就可以看到效果如下图所示: 修改IOption为IOptionsSnapshot 上一节当中我们使用IOption来作为注入,这次我们改成IOptionSnapshot,注意如果我们是在Controller里也是一样的,见下图 修改为IOptionsSnapsh…
希望给你3-5分钟的碎片化学习,可能是坐地铁.等公交,积少成多,水滴石穿,谢谢关注. HTTP请求过程 这里展示整体的HTTP请求的过程,这里化繁为简,保留了主干流程: 从浏览器输入域名开始,这里忽略了建立TCP的3次握手,向服务器发起HTTPRequest请求,服务器接受到之后,会触发服务器对网站的动态解析,然后把生成的网页信息通过HTTPResponse返回给用户,内部包含HTML的Body,Head等信息,最后就是浏览器对这些HTML信息进行内部引擎渲染的过程了. ASP.NET Core…
准备CentOS 1.1虚拟机 CentOS的安装这里使用vmware workstation 14来做虚拟机,当然你也可以用Oracle的虚拟机或者不用虚拟机,使用云服务或者使用双系统,不是什么大问题. 这里提供vmware workstation 14下载地址: http://www.xue51.com/soft/1258.html 如果觉得下载麻烦,也可以留言我这边提供下载和获取注册码. 1.2CentOS安装包 下载地址:https://www.centos.org/download/…
希望给你3-5分钟的碎片化学习,可能是坐地铁.等公交,积少成多,水滴石穿,码字辛苦,如果你吃了蛋觉得味道不错,希望点个赞,谢谢关注. Cookie-Based认证 认证流程 我们先看下传统Web端的认证流程: 以上流程很简单,有过mvc开发经验的都了如指掌,一图胜千言就不展开介绍了,下面简单演示一下实现: 编码实现 首先我们新建一个mvc项目 我们在AdminController.cs里增加[Authorize] 在Startup.cs中 这时候我们访问https://localhost:500…
控制台创建项目 dotnet new --help 使用控制台采集项目,务必要熟练使用命令,--help是命令帮助的指明灯,在你无法google的时候,可以离线状态最快的帮助到你. 根据模板名称,我们可以创建各种模板,比如 dotnet new webaipdotnet new mvc…… 运行命令: dotnet run VS2017创建项目 都是创建,只是采集的方式不一样,殊途同归,前者适合ubuntu或者mac系统的操作方式,后者适合window底下的操作方式. Asp.net支持自寄宿,…
希望给你3-5分钟的碎片化学习,可能是坐地铁.等公交,积少成多,水滴石穿,谢谢关注. 安装.NET Core 官方安装地址: https://www.microsoft.com/net/learn/dotnet/hello-world-tutorial?initial-os=linux 安装完后测试一下版本 测试一个webapi dotnet new webapi dotnet run 默认是在5000端口,虚拟机该端口还没打开,这个时候在虚拟机外面是无法访问的 再开一个终端使用curl访问 返…
希望给你3-5分钟的碎片化学习,可能是坐地铁.等公交,积少成多,水滴石穿,码字辛苦,如果你吃了蛋觉得味道不错,希望点个赞,谢谢关注. Token生成 我们知道一旦我们给API添加[Authorize]后,等于是给资源增加了一道锁,这时候我们Postman的时候是访问不了资源的,如下图所示: 这个时候,我们就需要通过Token来访问.这里需要分两个步骤来做,第一个是进行全局的JWT配置:第二个是生成Token函数的编写. 配置JWT 该配置在上一节已经实现了,这里不再重复,可以访问这里复习.  T…
希望给你3-5分钟的碎片化学习,可能是坐地铁.等公交,积少成多,水滴石穿,谢谢关注. 命令行配置 1.新建控制台项目 2.nuget引入microsoft.aspnetcore.all 这里要注意版本号必须和dotnetcore兼容 3.编码 3.1.引入Microsoft.Extensions.Configuration; 3.2.AddCommandLine() 添加到命令行 3.3.AddInMemoryCollection 添加到内存当中 3.4.代替string.format的新语法糖…
希望给你3-5分钟的碎片化学习,可能是坐地铁.等公交,积少成多,水滴石穿,谢谢关注. 新建MVC项目 这次我们没有使用控制台项目,而是使用mvc来测试. 如下图所示,选择空的项目,建完后,记得把项目设置为启动项 新建配置文件appsettings.json和映射的实体类 这里有个坑,就是json和实体类必须要一一对应,假如json里命名为student,实体类为students,内部自动映射过程会报错,错误如下: Startup启动时注入配置类Configuration 这里就不贴上代码,代码在…
希望给你3-5分钟的碎片化学习,可能是坐地铁.等公交,积少成多,水滴石穿,谢谢关注. Startup.cs中创建MVC中间件 关键代码:services.AddMvc();app.UseMvcWithDefaultRoute(); 关于中间件的内部机制,后续单独专栏进行深入挖掘,此处略过. Option在Controller里的使用 2.1HomeController里使用Option进行绑定 2.2Views的Index.cshtml Index.cshtml的智能感知有时候会莫名失效,重启一…
希望给你3-5分钟的碎片化学习,可能是坐地铁.等公交,积少成多,水滴石穿,谢谢关注. 配置的使用流程 //第一步.初始化Builder var builder = new ConfigurationBuilder(); //第二步.将Source添加到Builder builder.AddJsonFile("student.json", false, true); //builder.AddInMemoryCollection(dict) //builder.AddXmlFile(&q…
希望给你3-5分钟的碎片化学习,可能是坐地铁.等公交,积少成多,水滴石穿,谢谢关注. 从UML来理解依赖 1.1什么是依赖 我们先看下图 可以简单理解,一个HomeController类使用到了DBContext类,而这种关系是有偶然性,临时性,弱关系的,但是DBContext的变化会影响到HomeController 1.2显示依赖和隐式依赖 先看显示依赖代码: 显示依赖通过构造函数,很清楚的描述了HomeController类都依赖了哪些对象,这样就可以很好的管理这些依赖.而隐式依赖的缺点刚…
希望给你3-5分钟的碎片化学习,可能是坐地铁.等公交,积少成多,水滴石穿,谢谢关注. dotnet run的麻烦 如果您使用的是vs code进行跨平台开发,那么dotnet watch run对你的调试就是一把利器!我们先看下使用dotnet run的效果: 如视频所示,我们在vs code里面创建一个mvc项目,dotnet run后,启动调试,一切正常.如果我们发现代码有BUG,于是我们对代码BUG进行修改,修改完成后我们想要重新调试功能是否正常,怎么办?麻烦来了,停止调试,重新调试,还不…
希望给你3-5分钟的碎片化学习,可能是坐地铁.等公交,积少成多,水滴石穿,谢谢关注. 管道流 我们知道一个管道可以有一个或多个中间件,而中间件的职责是根据HttpContext处理HTTP请求,然后往Response里填充东西,最后完成整个Response的输出.了解管道流机制,就能知道如何利用管道进行拦截,自定义封装中间件等高级操作,所以学习管道流机制对我们编码有质的提高.那么管道数据是如何流通的呢?如下图所示,Request进入Middleware 1,叠加一层逻辑代码到HttpContex…
希望给你3-5分钟的碎片化学习,可能是坐地铁.等公交,积少成多,水滴石穿,谢谢关注. 管道实现机制 要了解管道的实现机制,我们必须要深入框架的源码,幸亏微软开源了,我们可以访问GitHub的地址来下载源码. git clone后,我们打开工程,进入Microsoft.AspNetCore.Http项目搜索ApplicationBuilder类(如下图),RequestDelegate是中间件的核心,而ApplicationBuilder是接收多个RequestDelegate的集合,所以解析Ap…
入门篇 1.1.专题介绍 1.2.环境安装 1.3.创建项目 1.4部署到IIS 1.5准备CentOS和Nginx环境 1.6部署到CentOS 2.1命令行和JSON的配置 2.2Bind建立配置文件和实体的映射 2.3Options建立配置和实体的映射 2.4配置的热更新 2.5配置的框架浅析 3.1依赖注入…
黄衫女子的武功似乎与周芷若乃是一路,飘忽灵动,变幻无方,但举手抬足之间却是正而不邪,如说周芷若形似鬼魅,那黄衫女子便是态拟神仙. 这段描写出自<倚天屠龙记>第三十八回. “九阴神抓”本是<九阴真经>中的上乘武功,但当初梅超风夫妇由于拿到的<九阴真经>不完整,学不到里面的内功心法,硬是把这门上乘武功练到了邪路上,于是就成了“九阴白骨爪”.周芷若为求速成,也练就了这门邪功. 但黄衫女子乃出身武林名门(相传是杨过和小龙女的后人),自然修炼的是正宗的<九阴真经>.虽…
前言:由于公司占时没有运维,出于微服务的需要,Apollo只能先装在windows 阿里云上跑起来,由于环境及网络等问题,在安装过程中遇到很多坑,算是一个个坑填完后,最终实现. 一. java jdk环境 java jdk 1.8下载地址: https://www.oracle.com/java/technologies/javase-jdk8-downloads.html   建议JDK安装目录不要带有中文.[空格].特殊符号等,例如:Program Files 这种会导致使用Quick St…
一.管理数据库架构概述 EF Core 提供两种主要方法来保持 EF Core 模型和数据库架构同步.一是以 EF Core 模型为基准,二是以数据库为基准. (1)如果希望以 EF Core 模型为准,请使用迁移. 对 EF Core 模型进行更改时,此方法会以增量方式将相应架构更改应用到数据库,以使数据库保持与 EF Core 模型兼容.  (2)如果希望以数据库架构为准,请使用反向工程. 使用此方法,可通过将数据库架构反向工程到 EF Core 模型来生成相应的 DbContext 和实体…
一.概述 HTTP不仅仅用于提供网页.HTTP也是构建公开服务和数据的API强大平台.HTTP简单灵活且无处不在.几乎任何你能想到的平台都有一个HTTP库,因此HTTP服务可以覆盖广泛的客户端,包括浏览器,移动设备和传统的桌面应用程序. ASP.NET Web API 是一个框架,基于.NET Framework 或.NET Core 之上构建 Web API. 从本章开始学习Web API系列时,先从一个示例开始,下面使用ASP.NET Core MVC 创建 Web API.通过本次演示将了…
一. ASP.NET Core Module 在介绍ASP.NET Core Web实现之前,先来了解下ASP.NET Core Module.该模块是插入 IIS 管道的本机 IIS 模块(本机是指程序所部署的服务器).是基于windows平台处理 IIS和进程内IISHttpServer或Kestrel.用于: (1) 在 IIS 工作进程 (w3wp.exe) 内托管 ASP.NET Core 应用,称为进程内托管模型. (2) 将 Web 请求转发到运行 Kestrel 服务器的后端 A…
前面讲过 .NET Core简介及开发环境安装,本章会讲一讲ASP.NET Core 2.0的项目结构,查看完整的ASP.NET Core系列文章:https://www.cnblogs.com/zhangweizhong/category/1477144.html 新建项目 新建项目, 选择.NET Core 有如下几种类型可选, 分别是Console, ASP.NET Core 的空项目,Web API 我们选择ASP.NET Core Web App(MVC), 没有标注MVC的是采用Ra…
一. MVC介绍 MVC架构模式有助于实现关注点分离.视图和控制器均依赖于模型. 但是,模型既不依赖于视图,也不依赖于控制器. 这是分离的一个关键优势. 这种分离允许模型独立于可视化展示进行构建和测试.ASP.NET Core MVC 包括以下功能: 路由.模型绑定.模型验证.依赖关系注入.筛选器.区域.Web API.可测试性.Razor 视图引擎.强类型视图.标记帮助程序. 视图组件. (1) 路由 ASP.NET Core MVC 建立在 ASP.NET Core 的路由之上,是一个功能强…
一. Razor介绍 在使用ASP.NET Core Web开发时, ASP.NET Core MVC 提供了一个新特性Razor. 这样开发Web包括了MVC框架和Razor框架.对于Razor来说它是一个新特性,在官方介绍ASP.NET Core的优点中提到“Razor Pages可以使基于页面的编码方式更简单高效”. 1.1 Razor结构介绍 (1) Pages文件夹 存放所有Razor页面,包括Razor 页面和支持文件. 每个 Razor 页面都是一对文件: 一个 .cshtml 文…