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...
Ubuntu 16.04上使用 Let's Encrypt 来保护Nginx
介绍Let’s Encrypt 是由 Internet Security Research Group(ISRG)开发的免费开放证书颁发机构。 今天几乎所有浏览器都信任 Let’s Encrypt 颁发的证书。 在本教程中,我们将提供有关如何使用 Ubuntu 16.04 上的 certbot 工具使用 Let’s Encrypt 来保护您的 Nginx 的分步说明。 准备条件在继续本教程之前,请确保您已满足以下先决条件: 您有一个指向公共服务器 IP 的域名。 在本教程中,我们将使用 example.com。 您按照这些说明安装了 Nginx 。 您有一个适用于您的域的服务器块。 您可以按照本文获取有关如何创建一个的详细信息。 安装 CertbotCertbot 是一个功能齐全且易于使用的工具,可以自动完成获取和更新 Let’s Encrypt SSL证书以及配置Web服务器以使用它们的任务。 certbot 包包含在默认的 Ubuntu 存储库中。 更新软件包列表并安装 certbot 软件包: sudo apt updatesudo apt install...