ASP.NET Core MVC 5.x初始化源码解读(一)
前言初始化比较复杂,文章拆分成3部分Host、WebHost、Startup,逐一分析 对象概念解释 接口定义 IHost : 主机抽象 IServiceProvider : 对象服务提供器 StartAsync : 启动方法 StopAsync : 停止方法 IHostBuilder : 主机构造器抽象 ConfigureHostConfiguration() : 配置主机配置文件 ConfigureAppConfiguration() : 配置应用配置文件 ConfigureServices() : 配置服务 UseServiceProviderFactory() : 配置服务提供商工厂 ConfigureContainer() : 配置容器 Build() : 构造主机 具体实现 Host : 主机 IHostLifetime : 主机生命周期 IServiceProvider : 服务提供商 ApplicationLifetime : 应用生命周期 HostOptions :...
ASP.NET Core MVC 5.x初始化源码解读(二)
WebHost对象概念解释WebHost 接口定义 IWebHost : 主机抽象 IFeatureCollection : 插件容器 IServiceProvider : 对象服务提供器 Start : 启动方法(同步) StartAsync : 启动方法 StopAsync : 停止方法 IWebHostBuilder : 网站主机构建器 Build : 构建 ConfigureAppConfiguration : 配置应用配置文件 ConfigureServices : 配置服务 GetSetting : 读取单个配置值 UseSetting : 设置单个配置项 具体实现 GenericWebHostBuilder : 通用网站主机构造器(HostBuilder桥接器) ConfigureHostConfiguration : 设置主机配置 ConfigureAppConfiguration : 设置应用配置 ConfigureServices : 设置服务 UseStartup :...
前端项目工程
背景刚入门前端,没有搭建过大型前端项目工程,觉得模块间引用很不方便,于是研究了下 工程项目结构12345678910111213141516react-ts-ui/├─ packages/├ ├─ react-components-a/├ ├ ├─ src/├ ├ ├ └─ index.tsx├ ├ ├─ package.json├ ├ └─ tsconfig.json├ └─ react-components-b/├ ├─ src/├ ├ └─ index.tsx├ ├─ package.json├ └─ tsconfig.json├─ src/├ └─ index.tsx├─ package.json└─ tsconfig.json 配置react-components-a ./packages/react-components-a/tsconfig.json 123456{ "compilerOptions": { //... ...
Typescript+React+Webpack整合
介绍TypescriptTypeScript是一种由微软开发的开源、跨平台的编程语言。 他是JavaScript的超集,而且本质上向这个语言添加了可选的静态类型和基于类的面向对象编程,遵循最新的ES5、ES6规范。 React是一个用于构建用户界面的JavaScript库,起源于 Facebook 的内部项目,用来架设 Instagram 的网站,并于 2013 年 5 月开源。React拥有较高的性能,代码逻辑非常简单,越来越多的人已开始关注和使用它。 Webpack是当前前端最热门的前端资源模块化管理和打包工具 项目初始化 初始化项目结构 123mkdir react-ts-uicd react-ts-ui Typescript文件会放在src文件夹里,通过TypeScript编译器编译,然后经webpack处理,最后生成一个bundle.js文件放在dist目录下。 我们自定义的组件将会放在 src/components文件夹下。 1234mkdir srccd srcmkdir componentscd...
初试Storybook
介绍StoryBook,独立开发构建前端UI插件、页面的开源工具。可用于Vue、React、Angular的UI组件 安装本例是采用React作为开发框架 自动安装初始化React-App12345# npx create-react-app react-appcd react-app 初始化SotryBook 全局安装storybook 1yarn add -g sb 局部安装storybook 1yarn add sb 12345# 添加storybooknpx sb init# 在开发模式中启动storybookyarn storybook 初始化数据 新增两个文件夹 .storybook 存放storybook的配置文件,main.js、preview.js src/stories 存放展示组件和数据,storybook初始化Button、Header、Page展示用 手动安装创建项目文件夹react-app并npm初始化 123mkdir react-appcd react-app 添加react相关包 1yarn add -D...
Task的底层实现
async关键字我们将async修饰的方法叫做“异步方法”,但是并不意味着方法是异步执行,也不意味着该方法是异步方法。 源码 12345static async Task MethodAsync(){ await Task.Run(()=>Console.WriteLine("asynchronous run")); Console.WriteLine("synchronous run");} 反编译代码 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374private sealed class <MethodAsync>d__1 : IAsyncStateMachine{ public int <>1__state; ...
基于任务异步编程模式(TAP)
前言TAP是基于Task的异步编程设计模式, 异步编程 async : async关键字修饰的方法都会被视为异步方法,编译器会为方法生成一个对应的状态机 await : await关键字后面代表可等待方法,编译器会转化成TaskAwait去处理异步 async修饰符代表了这个方法是异步方法,编译器会生成状态机。 12345678910//public async Task MethodAsync(){ //do some thing //可等待方法,clr会挂起,等异步方法执行完才会执行剩下的逻辑 await Method1Async(); //do some thing} 异步取消 采用CancellationToken来管理整个取消逻辑 1234567891011121314CancellationTokenSource source = new CancellationTokenSource();CancellationToken token = source.Token;var result await...
基于事件异步编程模式(EAP)
前言EAP,全称Event-based Asynchronous...
ASP.NET Core MVC 源码解读-应用程序模型
概念ASP.NET Core MVC 会定义一个 应用程序模型,用于表示 MVC 应用的各个组件。 读取并处理此模型,以修改 MVC 元素的行为方式。 默认情况下,MVC 遵循特定的约定来确定哪些类被视为控制器、这些类上的哪些方法是操作以及参数和路由的行为方式。 自定义此行为以满足应用程序的需求,方法是创建自定义约定,并将其作为全局或特性应用。 模型(Model)和程序提供器(Provider) 对象模型(Model) ASP.NET Core MVC 应用程序模型包括用于描述 MVC 应用程序的抽象接口和具体实现类。 此模型是 MVC 根据默认约定发现应用的控制器、操作、操作参数、路由和筛选器的结果。 通过使用应用程序模型,修改应用以遵循默认 MVC 行为中的不同约定。 参数、名称、路由和筛选器都用作操作和控制器的配置数据。ASP.NET Core MVC 应用程序模型具有以下结构: ApplicationModel 控制器 (ControllerModel) 属性 (PropertyModel) 操作 (ActionModel) 参数...
Ubuntu 16.04安装Nginx
NginxNginx发音的“engine x”是一个免费的开源高性能HTTP和反向代理服务器,负责处理互联网上一些最大的网站的负载。 本教程将概述在Ubuntu 16.04机器上安装和管理Nginx的步骤。 安装NginxNginx的软件包在Ubuntu默认软件仓库中可用。 安装非常简单,只需键入以下命令:sudo apt updatesudo apt install nginx 安装完成后,请检查Nginx服务状态和版本: 服务状态 123456789101112root@vultr:~# sudo systemctl status nginx● nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2020-11-08 18:11:00...