# 模块二 基础巩固 引入

## 2.1 引入 <a href="#id-21-yin-ru" id="id-21-yin-ru"></a>

* http协议
* web server && web application framework
* .net 与 .net core asp .net core
* web api 示例

CS：客户端-服务器

BS：浏览器-服务器

### 2.1.1 http协议 <a href="#id-211http-xie-yi" id="id-211http-xie-yi"></a>

* 请求过程
* 消息结构
* 请求方法
* 状态码
* header

#### 请求过程 <a href="#qing-qiu-guo-cheng" id="qing-qiu-guo-cheng"></a>

* 1.URL解析
* 2.DNS查询
* 3.TCP连接
* 4.处理请求
* 5.接受响应
* 6.渲染页面

在浏览器输入 URL 回车之后发生了什么：

<https://juejin.im/post/6844903922084085773>

#### 消息结构 <a href="#xiao-xi-jie-gou" id="xiao-xi-jie-gou"></a>

了解HTTP请求和响应结构：

<https://juejin.im/post/6844903843277307917>

#### 请求方法 <a href="#qing-qiu-fang-fa" id="qing-qiu-fang-fa"></a>

* GET 获取
* POST 创建
* PUT 替换（资源整体替换）
* PATCH 修改（资源段落性修改）
* DELETE 删除
* OPTIONS

#### 状态码 <a href="#zhuang-tai-ma" id="zhuang-tai-ma"></a>

* 200
* 300 已转移地址/永久移动（response redirect）
* 401 未认证
* 403 未授权
* 404 未找到文件
* 500 内部服务错误，服务器不知道如何处理的错误

HTTP协议详解：

<https://www.cnblogs.com/tankxiao/archive/2012/02/13/2342672.html>

### 2.1.2 web server && web application framework <a href="#id-212-web-server--web-application-framework" id="id-212-web-server--web-application-framework"></a>

#### web server <a href="#web-server" id="web-server"></a>

* IIS
* Nginx
* Apache

#### webapplication framework <a href="#webapplication-framework" id="webapplication-framework"></a>

* asp .net
* asp .net core
* springboot
* express

![](https://3083743005-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8gwpNo3eyzHkX0O40HRA%2Fuploads%2FO0imsm7HVkQWf2lTMHRp%2F182.jpg?alt=media\&token=d598d7fa-bb6a-4acd-8ca2-93d6a3052bd0)

#### 基本功能 <a href="#ji-ben-gong-neng" id="ji-ben-gong-neng"></a>

* url映射
* 安全性（认证、授权等）
* 网页模板系统 razer pages
* 数据库关系与映射（ORM）

#### 扩展功能 <a href="#kuo-zhan-gong-neng" id="kuo-zhan-gong-neng"></a>

* 依赖注入
* 配置
* 日志

### 2.1.3 .net 与 .net core asp .net core <a href="#id-213net-yu-netcoreaspnetcore" id="id-213net-yu-netcoreaspnetcore"></a>

![](https://3083743005-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8gwpNo3eyzHkX0O40HRA%2Fuploads%2FGDEABRXVzCUNUJmawAXs%2F183.jpg?alt=media\&token=bf6c1278-f9be-4191-b77d-c8962cffdb93)

.net 是一个开发者平台的统称，用它可以构建多种类型的应用程序

.net 平台下的开发语言：c#/F#/Visual Basic

#### 平台标准 .NET Standard: <a href="#ping-tai-biao-zhun-netstandard" id="ping-tai-biao-zhun-netstandard"></a>

<https://dotnet.microsoft.com/platform/dotnet-standard>

![](https://3083743005-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8gwpNo3eyzHkX0O40HRA%2Fuploads%2F7sC4pcpptKXj5wo2Xgtj%2F184.jpg?alt=media\&token=e9ecc326-e90e-4e89-b22c-95acb63f55d2)

#### 平台实现 <a href="#ping-tai-shi-xian" id="ping-tai-shi-xian"></a>

* .net core: 跨平台方案
* .net framework: web sites, services, apps on windows
* Xamarin/mono: .net for mobile

每个平台由以下组件构成：

一个或多个运行时。示例：CLR 用于 .NET Framework，CoreCLR 和 CoreRT 用于 .NET Core

实现 .NET Standard 并且可实现其他 API 的类库。示例：.NET Framework 基类库、.NET Core 基类库

可选择包含一个或多个应用程序框架。示例：ASP .NET、Windows 窗体和 Windows Presentation Foundation (WPF) 包含在 .NET Framework 和 .NET Core 中

可包含开发工具。某些开发工具在多个实现之间共享

#### .NET 体系结构 <a href="#net-ti-xi-jie-gou" id="net-ti-xi-jie-gou"></a>

<https://docs.microsoft.com/zh-cn/dotnet/standard/components>

#### .NET Core 平台 <a href="#netcore-ping-tai" id="netcore-ping-tai"></a>

coreclr:

<https://github.com/dotnet/runtime>

包含 garbage collector, JIT compiler, primitive data types and low-level classes

#### asp .net core <a href="#asp-net-core" id="asp-net-core"></a>

.net core 平台下的一个 web 应用框架：

<https://github.com/dotnet/aspnetcore>

Extensions（用于控制台和 web）

ASP .NET CORE (Web Application Framework)

Entity Framework Core (ORM 框架)

### 2.1.4 web api 示例 <a href="#id-214webapi-shi-li" id="id-214webapi-shi-li"></a>

#### 安装 SDK <a href="#an-zhuang-sdk" id="an-zhuang-sdk"></a>

<https://dotnet.microsoft.com/download/dotnet-core/3.1>

#### 新建 web api 示例 <a href="#xin-jian-webapi-shi-li" id="xin-jian-webapi-shi-li"></a>

```
dotnet new webapi -n HelloApi
```

#### 启动程序 <a href="#qi-dong-cheng-xu" id="qi-dong-cheng-xu"></a>

```
dotnet run
```
