.NET Core 实战笔记3 ASP.NET Core
期末告一段落,有一周的时间给我折腾折腾,那就继续dotNet Core吧,先列一下文章列表。
- .NET Core 实战笔记1-介绍和安装
- .NET Core 实战笔记2-从命令开始
ASP.NET Core 介绍
ASP.NET Core
是一个跨平台的高性能开源框架,用于生成基于云且连接 Internet 的新式应用程序。
使用 ASP.NET Core
,可以:
- 生成 Web 应用和服务、IoT 应用和移动后端。
- 在 Windows、macOS 和 Linux 上使用喜爱的开发工具。
- 部署到云或本地
- 在
.NET Core
或.NET Framework
上运行。
数百万开发人员在使用(并继续使用)ASP.NET Core
来创建 Web 应用。ASP.NET Core
是重新设计的ASP.NET Core
,对体系结构进行了更改,提供更精简的模块化框架。
ASP.NET Core
具有如下优点:
- 生成 Web UI 和 Web API 的统一场景。
- 新式客户端框架与开发工作流的集成。
- 基于环境的云就绪配置系统。
- 内置依赖项注入。
- 轻型高性能模块化 HTTP 请求管道。
- 能够在 IIS 上进行托管或在自己的进程中进行自托管。
- 可以在
.NET Core
上运行,支持真正的并行应用版本控制。 - 简化新式 Web 开发的工具。
- 能够在 Windows、macOS 和 Linux 进行生成和运行。
- 开源和关注社区。
ASP.NET Core
完全作为 NuGet 包的一部分提供。 这可优化应用,使其只包含需要的 NuGet 包。 较小的应用图面区域的优势包括:提升安全性、减少维护和提高性能。
ASP.NET Core 应用
ASP.NET Core
应用其实就是在Main中创建一个Web服务器的简单控制台应用程序。
如上图,Main方法
调用遵循builder
模式的WebHostBuilder
,用于创建一个Web应用程序的宿主。这个builder
具有定义Web服务器(如UseKestrel
)和startup类型(UseStartup
)的方法。
Build
和Run
方法构建了用于宿主应用程序的IWebHost
,然后启动它来监听传入的HTTP请求。
Startup
上面的Main方法中有写到WebHostBuilder
的UseStartup
方法为应用制定了Startup类
。
Startup类
Startup类
可以用来定义请求和处理管道和配置应用需要的服务。Starup
类必须是public
的,内容实例如下:
在ASP.NET Core
中,Startup类
提供了应用程序的入口并充当为应用程序的启动点。ASP.NET
会在主程序集中搜索名为Startup
的类,Startup
类能够选择性地在构造函数中接受通过依赖注入提供的依赖项,将要被配置的应用程序的方法应定义于Stratup
类的构造函数中,如Configuration
。Startup
类必须定义Configure
方法,可以选择定义一个ConfigureServices
方法,这些方法在应用程序启动时被调用。
Configure方法
Configure
方法用于定义请求管道中的中间件,即指定ASP.NET
应用程序将如何响应每一个HTTP请求,简言之,可以配置每个请求都接收相同的响应。事实上,大多数应用程序都需要更复杂的管道配置并将其封装与中间件(middleware)中,并通过扩展方法添加到IApplicationBuilder
上。
ConfigureServices方法
ConfigureServices
方法用于定义应用所使用的服务(如ASP.NET MVC Core Framework
,Entity Framework Core
,Identity
等)。
服务
服务是应用中用于通用调用的组件。服务通过依赖注入获取并使用。ASP.NET Core内置了一个简单的控制反转(IoC)容器,它默认支持构造器注入,并且可以方便的替换成自己的选用的IoC容器。由于他的松耦合性,依赖注入(DI)使服务在整个应用中都可以使用。例如,Logging在整个应用中都可用。
中间件
在ASP.NET Core
中个可以使用中间件构建请求处理管道。ASP.NET Core
中间件为一个HttpContext
执行异步逻辑,然后按顺序调用下一个中间件或者直接终止请求。一般来说,要使用一个中间件,只需要在Configure
方法中调用IApplicationBuilder
上一个对应的UseXYZ
扩展方法即可。
ASP.NET Core
带来了丰富的内置中间件:
- 静态文件(Static files)
- 路由(Routing)
- 身份验证(Authentication)
可以创建自定义中间件,或者在ASP.NET Core
中使用任何基于OWIN
的中间件。
服务器
ASP.NET Core
托管模式并不会直接监听请求,而是依赖一个HTTP Server
实现来转发请求到应用程序。这个转发的请求会以feature
接口的形式被包装,然后被应用程序组合到一个HttpContext
中去。ASP.NET Core
包含了一个托管的跨平台Web服务器:Kestrel
,通常运行在一个IIS或者Nginx的生产Web服务器之后。
- React Native导航器之react-navigation使用
- Nginx 路由转发配置笔记
- React Native控件之ListView
- Java学习之深拷贝浅拷贝及对象拷贝的两种方式
- [周末课程]什么是“页面业务流程”分析思维导图?如何编写页面假JSON数据? &下一个前端组件“日历”
- Java并发学习之玩转线程池
- Java & PhantomJs 实现html输出图片
- 干货 | React Native实践之携程Moles框架
- Java并发学习之ThreadLocal使用及原理介绍
- ibeacon蓝牙技术简介
- Java并发学习之定时任务的几种玩法
- [视频直播]本周日先行者视频“React多级菜单
- Java并发学习之线程状态及Thread常用方法详解
- Java并发学习之四种线程创建方式的实现与对比
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 剑指Offer第2题详解(附Python、Java代码实现)
- 剑指Offer第3题详解(附Java、Python源码)
- 从String中移除空白字符的多种方式!?差别竟然这么大!
- Stack.peek() 与 Stack.pop() 的区别
- 傅里叶变换有什么用?
- 剑指Offer第4题详解(附Java、Python源码)
- 帅地问我:Dubbo服务调用过程
- 用两个栈实现队列详解(附Java、Python源码)——《剑指Offer》
- PS2020制作电子签名
- 原创 | 险些翻车,差一点没做出来的基础算法题
- 原创 | 你追我,如果你追到我……那就算你赢了
- 原创 | 详解gitignore的使用方法,让你尽情使用git add .
- 第31天:面试比 KMP 还容易被问到的匹配算法!
- 原创 | 深度学习开篇,来聊聊感知机的原理
- 算法题:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字