From 995a4a0648e1179cd9466e5fa6c1dd33b783b358 Mon Sep 17 00:00:00 2001 From: bicijinlian Date: Sun, 26 May 2024 04:31:28 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E7=AC=94=E8=AE=B0=E6=96=87?= =?UTF-8?q?=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Docs/1.1.概述.ipynb | 71 ++- Docs/1.2.使用准则.ipynb | 420 ++++++++++++++++++ Docs/1.3.0.基础使用.管理客户端.ipynb | 58 +++ Docs/1.3.1.基础使用.发送请求.ipynb | 63 +++ ... 1.3.2.基础使用.使用请求体.ipynb} | 0 Docs/1.3.3.基础使用.处理响应.ipynb | 58 +++ Docs/1.3.4.基础使用.处理错误.ipynb | 58 +++ Docs/1.3.5.基础使用.使用代理.ipynb | 58 +++ Docs/1.3.6.基础使用.使用Json.ipynb | 58 +++ Docs/1.3.7.基础使用.使用Cookie.ipynb | 58 +++ Docs/1.4.0.高级使用.概述.ipynb | 58 +++ Docs/1.4.1.高级使用.初始化.ipynb | 58 +++ Docs/1.4.2.高级使用.连接池.ipynb | 58 +++ Docs/1.4.3.高级使用.重复使用.ipynb | 58 +++ Docs/1.4.4.高级使用.使用管道.ipynb | 58 +++ ....4.5.高级使用.类型化客户端.ipynb | 58 +++ Docs/1.4.6..高级使用.工厂模式.ipynb | 58 +++ Docs/1.4.7.高级使用.Polly.ipynb | 58 +++ Docs/1.5.总结.ipynb | 69 +++ Docs/Assets/架构.001.png | Bin 0 -> 26765 bytes Docs/Assets/架构.002.png | Bin 0 -> 25453 bytes Docs/Assets/架构.003.png | Bin 0 -> 27148 bytes Docs/Assets/架构.004.png | Bin 0 -> 34256 bytes .../UseFactory/UseFactoryDemo.cs | 13 + HttpClientStudy.sln | 19 +- 25 files changed, 1464 insertions(+), 3 deletions(-) create mode 100644 Docs/1.2.使用准则.ipynb create mode 100644 Docs/1.3.0.基础使用.管理客户端.ipynb create mode 100644 Docs/1.3.1.基础使用.发送请求.ipynb rename Docs/{1.2.使用原则.ipynb => 1.3.2.基础使用.使用请求体.ipynb} (100%) create mode 100644 Docs/1.3.3.基础使用.处理响应.ipynb create mode 100644 Docs/1.3.4.基础使用.处理错误.ipynb create mode 100644 Docs/1.3.5.基础使用.使用代理.ipynb create mode 100644 Docs/1.3.6.基础使用.使用Json.ipynb create mode 100644 Docs/1.3.7.基础使用.使用Cookie.ipynb create mode 100644 Docs/1.4.0.高级使用.概述.ipynb create mode 100644 Docs/1.4.1.高级使用.初始化.ipynb create mode 100644 Docs/1.4.2.高级使用.连接池.ipynb create mode 100644 Docs/1.4.3.高级使用.重复使用.ipynb create mode 100644 Docs/1.4.4.高级使用.使用管道.ipynb create mode 100644 Docs/1.4.5.高级使用.类型化客户端.ipynb create mode 100644 Docs/1.4.6..高级使用.工厂模式.ipynb create mode 100644 Docs/1.4.7.高级使用.Polly.ipynb create mode 100644 Docs/1.5.总结.ipynb create mode 100644 Docs/Assets/架构.001.png create mode 100644 Docs/Assets/架构.002.png create mode 100644 Docs/Assets/架构.003.png create mode 100644 Docs/Assets/架构.004.png create mode 100644 HttpClientStudy.Core/UseFactory/UseFactoryDemo.cs diff --git a/Docs/1.1.概述.ipynb b/Docs/1.1.概述.ipynb index 021698a..c44813e 100644 --- a/Docs/1.1.概述.ipynb +++ b/Docs/1.1.概述.ipynb @@ -37,6 +37,15 @@ "![图](./Assets/概要图.svg) " ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "HttpClient是应用程序进程中,封装调用远程请求的类库。整个远程的执行,是由进程向操作系统申请,经由网卡、路由器等网络设备转换、传输到一台Web服务器,然后返回的过程, HttpClient只是其中一个很小的环节。\n", + "\n", + "在这个基础上,理解初代HttpClient问题(网络套接字用完 DNS问题等)、使用原则、请求管道、工厂模式、类型化客户端、Polly等项时会很轻松。比如:即便使用Using包括了 HttpClient,也会有套接字耗尽的问题,是因为using只能释放进程中的对象,但进程管理不了系统及网卡(这是在进程之上的),更不用说路由和互联网及被调用方的服务器了。" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -44,6 +53,28 @@ "## 前世今生" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### WebRequest\n", + "这是.NET创建者最初开发用于使用HTTP请求的标准类。\n", + "\n", + "使用HttpWebRequest可以让开发者控制请求/响应流程的各个方面,如 timeouts, cookies, headers, protocols。另一个好处是HttpWebRequest类不会阻塞UI线程。例如,当您从响应很慢的API服务器下载大文件时,您的应用程序的UI不会停止响应。\n", + "\n", + "HttpWebRequest通常和WebResponse一起使用,一个发送请求,一个获取数据。HttpWebRquest更为底层一些,能够对整个访问过程有个直观的认识,但同时也更加复杂一些。\n", + "\n", + "### WebClient\n", + "WebClient是一种更高级别的抽象,是HttpWebRequest为了简化最常见任务而创建的,使用过程中你会发现他缺少基本的header,timeoust的设置,不过这些可以通过继承httpwebrequest来实现。使用WebClient可能比HttpWebRequest直接使用更慢(大约几毫秒)。但这种“低效率”带来了巨大的好处:它需要更少的代码和隐藏了细节处理,更容易使用,并且在使用它时你不太可能犯错误。\n", + "\n", + "### HttpClient\n", + "HttpClient提供强大的功能,并提供了异步支持,可以轻松配合async await 实现异步请求等。\n", + "\n", + "随着更新发展,已经解决了前期问题(套接字耗尽、DNS、不灵活等),并发展了完整、完善的体系(基于Task的异步、连接池、类型化的客户端、工厂模式、Polly等)。\n", + "\n", + "是本项目的学习目标。" + ] + }, { "cell_type": "markdown", "metadata": { @@ -58,14 +89,50 @@ } }, "source": [ - "## 架构图" + "## HttpClient架构图\n", + "\n", + "### .NetFramework 4及4.5 架构\n", + "HttpClient最初是作为NuGet包提供的,该包可以选择包含在.NET Framework 4.0项目中。在.NET Framework 4.5中,它作为BCL(基本类库)的一部分在框中提供。它建立在预先存在的HttpWebRequest实现之上。在.NET Framework中,ServicePoint API可用于控制和管理HTTP连接,包括通过为端点配置ConnectionLeaseTimeout来设置连接寿命。\n", + "\n", + "![.NetFramework](./Assets/架构.001.png)\n", + "\n", + "### .NET Core 1.0及1.1 架构\n", + ".NET Core 1.0最初于2016年6月发布。与.NET Framework中可用的版本相比,此第一个版本的API接口要小得多,主要用于构建ASP.NET Core Web应用程序。由于.NET Core 1.0是HttpClient,因此提供了API。但是,不包括用于HttpWebRequest和ServicePoint的API。.NET Core 1.0中的HttpClient直接建立在使用非托管代码的OS平台API之上,Windows API使用WinHTTP,Linux和Mac使用LibCurl。\n", + "\n", + "值得注意的是:到2016年8月,很快就注意到,重新使用HttpClient实例以防止套接字耗尽的建议有一个相当麻烦的副作用:DNS\n", + "\n", + "![.NetFramework](./Assets/架构.002.png)\n", + "\n", + "### .NET Core 2.0 架构\n", + "在.NET Core 2.0中,添加了HttpWebRequest以支持.NET Standard 2.0。它位于HttpClient实现的顶层,这与.NET Framework 4.5+中的工作原理相反。还添加了ServicePoint,尽管它的许多API接口要么要么会抛出未实现的异常,要么根本就没有实现。\n", + "\n", + "![.NetFramework](./Assets/架构.003.png)\n", + "\n", + "### .NET CORE 2.1及后续 架构\n", + "这种有问题的行为导致团队不同团队进行了两项工作。\n", + "\n", + "ASP.NET团队开始研究**Microsoft.Extensions.Http包,该包的主要功能是IHttpClientFactory**。这个针对HttpClient实例自用的工厂还包括基础HttpMessageHandler链的生命周期管理。如果您想了解有关此功能的更多信息,可以查看我的系列博客文章,我将在此介绍。\n", + "\n", + "IHttpClientFactory功能是作为ASP.NET Core 2.1的一部分发布的,对于许多人来说,这是一个很好的折衷方案,它解决了连接重用以及生命周期管理的问题。\n", + "\n", + "在同一时间范围内,.NET团队正在研究自己的解决方案。该团队也在.NET Core 2.1中发布,在HttpClient的处理程序链的核心引入了一个新的**SocketsHttpHandler**。该处理程序直接建立在Socket API之上,并在托管代码中实现HTTP。这项工作的一部分包括连接池系统以及为这些连接设置最大生存期的能力。\n", + "\n", + "![.NetFramework](./Assets/架构.003.png)\n", + "\n", + "说明:虽然默认情况下从.NET Core 2.1启用了SocketsHttpHandler,但实现仅限于HTTP / 1.1通信。那些需要HTTP / 2的用户必须禁用该功能并使用较旧的处理程序链,该处理程序链像以前一样依赖非托管代码,并且不包括连接池。\n", + "\n", + "幸运的是,.NET Core 3.0中已消除了此限制,并且现在提供了HTTP/2支持。这应该使用基于适合所有对象的SocketsHttpHandler链的HttpClient。\n", + "\n", + "结语:从.Net core 2.1开始,架构逐步稳定、完善。.Net 5、6、7、8中,逐渐发展出一整套完整机制,包括但不限于 连接池、工厂模式、Polly等。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## 相关资源" + "## 后续\n", + "\n", + "后续将从基础使用到高级使用,一步步展开,一步步学习。" ] }, { diff --git a/Docs/1.2.使用准则.ipynb b/Docs/1.2.使用准则.ipynb new file mode 100644 index 0000000..6d28117 --- /dev/null +++ b/Docs/1.2.使用准则.ipynb @@ -0,0 +1,420 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "dotnet_interactive": { + "language": "csharp" + }, + "polyglot_notebook": { + "kernelName": "csharp" + } + }, + "source": [ + "# HttpClient 使用准则\n", + "System.Net.Http.HttpClient 类用于发送 HTTP 请求以及从 URI 所标识的资源接收 HTTP 响应。 HttpClient 实例是应用于该实例执行的所有请求的设置集合,每个实例使用自身的连接池,该池将其请求与其他请求隔离开来。 \n", + "\n", + "从 .NET Core 2.1 开始,SocketsHttpHandler 类提供实现,使行为在所有平台上保持一致。" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "dotnet_interactive": { + "language": "csharp" + }, + "polyglot_notebook": { + "kernelName": "csharp" + }, + "vscode": { + "languageId": "polyglot-notebook" + } + }, + "source": [ + "## 1、DNS 行为\n", + "HttpClient 仅在创建连接时解析 DNS。它不跟踪 DNS 服务器指定的任何生存时间 (TTL)。 \n", + "\n", + "如果 DNS 条目定期更改(这可能在某些方案中发生),客户端将不会遵循这些更新。 要解决此问题,可以通过设置 PooledConnectionLifetime 属性来限制连接的生存期,以便在替换连接时重复执行 DNS 查找。" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + }, + "polyglot_notebook": { + "kernelName": "csharp" + }, + "vscode": { + "languageId": "polyglot-notebook" + } + }, + "outputs": [], + "source": [ + "using System.Net.Http;\n", + "\n", + "var handler = new SocketsHttpHandler\n", + "{\n", + " // Recreate every 15 minutes\n", + " PooledConnectionLifetime = TimeSpan.FromMinutes(15) \n", + "};\n", + "var sharedClient = new HttpClient(handler);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "上述 HttpClient 配置为重复使用连接 15 分钟。 PooledConnectionLifetime 指定的时间范围过后,系统会关闭连接,然后创建一个新连接。" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2、共用连接(底层自动管理连接池)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "HttpClient 的连接池链接到其基础 SocketsHttpHandler。 \n", + "释放 HttpClient 实例时,它会释放池中的所有现有连接。 如果稍后向同一服务器发送请求,则必须重新创建一个新连接。 \n", + "因此,创建不必要的连接会导致性能损失。 \n", + "此外,TCP 端口不会在连接关闭后立即释放。 (有关这一点的详细信息,请参阅 RFC 9293 中的 TCP TIME-WAIT。)如果请求速率较高,则可用端口的操作系统限制可能会耗尽。 \n", + "\n", + "为了避免端口耗尽问题,建议将 HttpClient 实例重用于尽可能多的 HTTP 请求。" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 什么是连接池\n", + "SocketsHttpHandler为每个唯一端点建立连接池,您的应用程序通过HttpClient向该唯一端点发出出站HTTP请求。在对端点的第一个请求上,当不存在现有连接时,将建立一个新的HTTP连接并将其用于该请求。该请求完成后,连接将保持打开状态并返回到池中。\n", + "\n", + "对同一端点的后续请求将尝试从池中找到可用的连接。如果没有可用的连接,并且尚未达到该端点的连接限制,则将建立新的连接。达到连接限制后,请求将保留在队列中,直到连接可以自由发送它们为止。" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 如何控制连接池" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "有三个主要设置可用于控制连接池的行为。\n", + "\n", + "+ PooledConnectionLifetime,定义连接在池中保持活动状态的时间。此生存期到期后,将不再为将来的请求而合并或发出连接。\n", + "\n", + "+ PooledConnectionIdleTimeout,定义闲置连接在未使用时在池中保留的时间。一旦此生存期到期,空闲连接将被清除并从池中删除。\n", + "\n", + "+ MaxConnectionsPerServer,定义每个端点将建立的最大出站连接数。每个端点的连接分别池化。例如,如果最大连接数为2,则您的应用程序将请求发送到两个www.github.com和www.google.com,总共可能最多有4个打开的连接。\n", + "\n", + "默认情况下,从.NET Core 2.1开始,更高级别的HttpClientHandler将SocketsHttpHandler用作内部处理程序。没有任何自定义配置,将应用连接池的默认设置。\n", + "\n", + "该**PooledConnectionLifetime默认是无限的,因此,虽然经常使用的请求,连接可能会无限期地保持打开状态。该PooledConnectionIdleTimeout默认为2分钟,如果在连接池中长时间未使用将被清理。MaxConnectionsPerServer**默认为int.MaxValue,因此连接基本上不受限制。\n", + "\n", + "如果希望控制这些值中的任何一个,则可以手动创建SocketsHttpHandler实例,并根据需要进行配置。" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + }, + "polyglot_notebook": { + "kernelName": "csharp" + }, + "vscode": { + "languageId": "polyglot-notebook" + } + }, + "outputs": [], + "source": [ + "using System.Net.Http;\n", + "var socketsHandler = new SocketsHttpHandler\n", + "{\n", + "\tPooledConnectionLifetime = TimeSpan.FromMinutes(10),\n", + "\tPooledConnectionIdleTimeout = TimeSpan.FromMinutes(5),\n", + "\tMaxConnectionsPerServer = 10\n", + "};\n", + "\t\n", + "var client = new HttpClient(socketsHandler);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "在前面的示例中,对SocketsHttpHandler进行了配置,以使连接将最多在10分钟后停止重新发出并关闭。如果闲置5分钟,则连接将在池的清理过程中被更早地删除。我们还将最大连接数(每个端点)限制为十个。如果我们需要并行发出更多出站请求,则某些请求可能会排队等待,直到10个池中的连接可用为止。\n", + "要应用处理程序,它将被传递到HttpClient的构造函数中。" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 测试连接寿命" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + }, + "polyglot_notebook": { + "kernelName": "csharp" + }, + "vscode": { + "languageId": "polyglot-notebook" + } + }, + "outputs": [], + "source": [ + "using System.Net;\n", + "using System.Net.Http;\n", + "\n", + "var ips = await Dns.GetHostAddressesAsync(\"www.hao123.com\");\n", + "string firstIp = ips.FirstOrDefault().ToString();\n", + "\t\n", + "foreach (var ipAddress in ips)\n", + "{\n", + " Console.WriteLine(ipAddress.MapToIPv4().ToString());\n", + "}\n", + "\n", + "//自定义行为\n", + "var socketsHandler = new SocketsHttpHandler\n", + "{\n", + " //连接池生命周期为10分钟:连接在池中保持活动时间为10分钟\n", + " PooledConnectionLifetime = TimeSpan.FromMinutes(10),\n", + "\n", + " //池化链接的空闲超时时间为5分钟: 5分钟内连接不被重用,则被释放后销毁\n", + " PooledConnectionIdleTimeout = TimeSpan.FromMinutes(5),\n", + " \n", + " //每端点的最大连接数设置为10个\n", + " MaxConnectionsPerServer = 10\n", + "};\n", + "\n", + "var client = new HttpClient(socketsHandler);\n", + "\n", + "for (var i = 0; i < 5; i++)\n", + "{\n", + " _ = await client.GetAsync(\"https://www.hao123.com\");\n", + " await Task.Delay(TimeSpan.FromSeconds(2));\n", + "}\n", + "\n", + "Console.WriteLine(\"请在程序退出后,执行下面命令行查看网络情况\");\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "使用我们刚刚讨论的设置,此代码依次向同一端点发出5个请求。在每个请求之间,它会暂停两秒钟。该代码还输出从DNS检索到的Google服务器的IPv4地址。我们可以使用此IP地址来查看通过PowerShell中发出的netstat命令对其打开的连接:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "dotnet_interactive": { + "language": "pwsh" + }, + "polyglot_notebook": { + "kernelName": "pwsh" + }, + "vscode": { + "languageId": "polyglot-notebook" + } + }, + "outputs": [], + "source": [ + "#!set --value @csharp:firstIp --name queryIp\n", + "Write-Host \"请先执行上面的单元,再执行本单元\"\n", + "Write-Host \"异常话,很可能是:未查找IP为 $queryIp 的网络状\"\n", + "\n", + "netstat -ano | findstr $queryIp" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 3、推荐使用方式" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "dotnet_interactive": { + "language": "pwsh" + }, + "polyglot_notebook": { + "kernelName": "pwsh" + }, + "vscode": { + "languageId": "polyglot-notebook" + } + }, + "outputs": [], + "source": [ + "#!set --value @csharp:ips --name ips\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "dotnet_interactive": { + "language": "pwsh" + }, + "polyglot_notebook": { + "kernelName": "pwsh" + }, + "vscode": { + "languageId": "polyglot-notebook" + } + }, + "outputs": [], + "source": [ + "#!set --value @csharp:ips --name ips\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + }, + "polyglot_notebook": { + "kernelName": "csharp" + }, + "vscode": { + "languageId": "polyglot-notebook" + } + }, + "outputs": [], + "source": [ + "#!set --value @csharp:ips --name ips\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "dotnet_interactive": { + "language": "pwsh" + }, + "polyglot_notebook": { + "kernelName": "pwsh" + }, + "vscode": { + "languageId": "polyglot-notebook" + } + }, + "outputs": [], + "source": [ + "#!set --value @csharp:firstIp --name firstIp\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "dotnet_interactive": { + "language": "pwsh" + }, + "polyglot_notebook": { + "kernelName": "pwsh" + }, + "vscode": { + "languageId": "polyglot-notebook" + } + }, + "outputs": [], + "source": [ + "#!set --value @csharp:firstIp --name firstIp\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "dotnet_interactive": { + "language": "javascript" + }, + "polyglot_notebook": { + "kernelName": "javascript" + }, + "vscode": { + "languageId": "polyglot-notebook" + } + }, + "outputs": [], + "source": [ + "#!set --value @csharp:firstIp --name firstIp\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "dotnet_interactive": { + "language": "pwsh" + }, + "polyglot_notebook": { + "kernelName": "pwsh" + }, + "vscode": { + "languageId": "polyglot-notebook" + } + }, + "outputs": [], + "source": [ + "#!set --value @pwsh:$sss --name $sss\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".NET (C#)", + "language": "C#", + "name": ".net-csharp" + }, + "language_info": { + "name": "python" + }, + "polyglot_notebook": { + "kernelInfo": { + "defaultKernelName": "csharp", + "items": [ + { + "aliases": [], + "name": "csharp" + } + ] + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Docs/1.3.0.基础使用.管理客户端.ipynb b/Docs/1.3.0.基础使用.管理客户端.ipynb new file mode 100644 index 0000000..da89958 --- /dev/null +++ b/Docs/1.3.0.基础使用.管理客户端.ipynb @@ -0,0 +1,58 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "dotnet_interactive": { + "language": "csharp" + }, + "polyglot_notebook": { + "kernelName": "csharp" + } + }, + "source": [ + "# HttpClient 基础使用" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "dotnet_interactive": { + "language": "csharp" + }, + "polyglot_notebook": { + "kernelName": "csharp" + }, + "vscode": { + "languageId": "polyglot-notebook" + } + }, + "source": [ + "## 1、说明" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".NET (C#)", + "language": "C#", + "name": ".net-csharp" + }, + "language_info": { + "name": "python" + }, + "polyglot_notebook": { + "kernelInfo": { + "defaultKernelName": "csharp", + "items": [ + { + "aliases": [], + "name": "csharp" + } + ] + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Docs/1.3.1.基础使用.发送请求.ipynb b/Docs/1.3.1.基础使用.发送请求.ipynb new file mode 100644 index 0000000..8a16ebd --- /dev/null +++ b/Docs/1.3.1.基础使用.发送请求.ipynb @@ -0,0 +1,63 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "dotnet_interactive": { + "language": "csharp" + }, + "polyglot_notebook": { + "kernelName": "csharp" + } + }, + "source": [ + "# 基础使用-发送请求" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "dotnet_interactive": { + "language": "csharp" + }, + "polyglot_notebook": { + "kernelName": "csharp" + }, + "vscode": { + "languageId": "polyglot-notebook" + } + }, + "source": [ + "## 1、创建客户端" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".NET (C#)", + "language": "C#", + "name": ".net-csharp" + }, + "language_info": { + "name": "python" + }, + "polyglot_notebook": { + "kernelInfo": { + "defaultKernelName": "csharp", + "items": [ + { + "aliases": [], + "name": "csharp" + } + ] + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Docs/1.2.使用原则.ipynb b/Docs/1.3.2.基础使用.使用请求体.ipynb similarity index 100% rename from Docs/1.2.使用原则.ipynb rename to Docs/1.3.2.基础使用.使用请求体.ipynb diff --git a/Docs/1.3.3.基础使用.处理响应.ipynb b/Docs/1.3.3.基础使用.处理响应.ipynb new file mode 100644 index 0000000..7656438 --- /dev/null +++ b/Docs/1.3.3.基础使用.处理响应.ipynb @@ -0,0 +1,58 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "dotnet_interactive": { + "language": "csharp" + }, + "polyglot_notebook": { + "kernelName": "csharp" + } + }, + "source": [ + "# HttpClient 使用原则" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "dotnet_interactive": { + "language": "csharp" + }, + "polyglot_notebook": { + "kernelName": "csharp" + }, + "vscode": { + "languageId": "polyglot-notebook" + } + }, + "source": [ + "## 1、复用" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".NET (C#)", + "language": "C#", + "name": ".net-csharp" + }, + "language_info": { + "name": "python" + }, + "polyglot_notebook": { + "kernelInfo": { + "defaultKernelName": "csharp", + "items": [ + { + "aliases": [], + "name": "csharp" + } + ] + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Docs/1.3.4.基础使用.处理错误.ipynb b/Docs/1.3.4.基础使用.处理错误.ipynb new file mode 100644 index 0000000..7656438 --- /dev/null +++ b/Docs/1.3.4.基础使用.处理错误.ipynb @@ -0,0 +1,58 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "dotnet_interactive": { + "language": "csharp" + }, + "polyglot_notebook": { + "kernelName": "csharp" + } + }, + "source": [ + "# HttpClient 使用原则" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "dotnet_interactive": { + "language": "csharp" + }, + "polyglot_notebook": { + "kernelName": "csharp" + }, + "vscode": { + "languageId": "polyglot-notebook" + } + }, + "source": [ + "## 1、复用" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".NET (C#)", + "language": "C#", + "name": ".net-csharp" + }, + "language_info": { + "name": "python" + }, + "polyglot_notebook": { + "kernelInfo": { + "defaultKernelName": "csharp", + "items": [ + { + "aliases": [], + "name": "csharp" + } + ] + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Docs/1.3.5.基础使用.使用代理.ipynb b/Docs/1.3.5.基础使用.使用代理.ipynb new file mode 100644 index 0000000..7656438 --- /dev/null +++ b/Docs/1.3.5.基础使用.使用代理.ipynb @@ -0,0 +1,58 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "dotnet_interactive": { + "language": "csharp" + }, + "polyglot_notebook": { + "kernelName": "csharp" + } + }, + "source": [ + "# HttpClient 使用原则" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "dotnet_interactive": { + "language": "csharp" + }, + "polyglot_notebook": { + "kernelName": "csharp" + }, + "vscode": { + "languageId": "polyglot-notebook" + } + }, + "source": [ + "## 1、复用" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".NET (C#)", + "language": "C#", + "name": ".net-csharp" + }, + "language_info": { + "name": "python" + }, + "polyglot_notebook": { + "kernelInfo": { + "defaultKernelName": "csharp", + "items": [ + { + "aliases": [], + "name": "csharp" + } + ] + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Docs/1.3.6.基础使用.使用Json.ipynb b/Docs/1.3.6.基础使用.使用Json.ipynb new file mode 100644 index 0000000..7656438 --- /dev/null +++ b/Docs/1.3.6.基础使用.使用Json.ipynb @@ -0,0 +1,58 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "dotnet_interactive": { + "language": "csharp" + }, + "polyglot_notebook": { + "kernelName": "csharp" + } + }, + "source": [ + "# HttpClient 使用原则" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "dotnet_interactive": { + "language": "csharp" + }, + "polyglot_notebook": { + "kernelName": "csharp" + }, + "vscode": { + "languageId": "polyglot-notebook" + } + }, + "source": [ + "## 1、复用" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".NET (C#)", + "language": "C#", + "name": ".net-csharp" + }, + "language_info": { + "name": "python" + }, + "polyglot_notebook": { + "kernelInfo": { + "defaultKernelName": "csharp", + "items": [ + { + "aliases": [], + "name": "csharp" + } + ] + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Docs/1.3.7.基础使用.使用Cookie.ipynb b/Docs/1.3.7.基础使用.使用Cookie.ipynb new file mode 100644 index 0000000..7656438 --- /dev/null +++ b/Docs/1.3.7.基础使用.使用Cookie.ipynb @@ -0,0 +1,58 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "dotnet_interactive": { + "language": "csharp" + }, + "polyglot_notebook": { + "kernelName": "csharp" + } + }, + "source": [ + "# HttpClient 使用原则" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "dotnet_interactive": { + "language": "csharp" + }, + "polyglot_notebook": { + "kernelName": "csharp" + }, + "vscode": { + "languageId": "polyglot-notebook" + } + }, + "source": [ + "## 1、复用" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".NET (C#)", + "language": "C#", + "name": ".net-csharp" + }, + "language_info": { + "name": "python" + }, + "polyglot_notebook": { + "kernelInfo": { + "defaultKernelName": "csharp", + "items": [ + { + "aliases": [], + "name": "csharp" + } + ] + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Docs/1.4.0.高级使用.概述.ipynb b/Docs/1.4.0.高级使用.概述.ipynb new file mode 100644 index 0000000..7656438 --- /dev/null +++ b/Docs/1.4.0.高级使用.概述.ipynb @@ -0,0 +1,58 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "dotnet_interactive": { + "language": "csharp" + }, + "polyglot_notebook": { + "kernelName": "csharp" + } + }, + "source": [ + "# HttpClient 使用原则" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "dotnet_interactive": { + "language": "csharp" + }, + "polyglot_notebook": { + "kernelName": "csharp" + }, + "vscode": { + "languageId": "polyglot-notebook" + } + }, + "source": [ + "## 1、复用" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".NET (C#)", + "language": "C#", + "name": ".net-csharp" + }, + "language_info": { + "name": "python" + }, + "polyglot_notebook": { + "kernelInfo": { + "defaultKernelName": "csharp", + "items": [ + { + "aliases": [], + "name": "csharp" + } + ] + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Docs/1.4.1.高级使用.初始化.ipynb b/Docs/1.4.1.高级使用.初始化.ipynb new file mode 100644 index 0000000..7656438 --- /dev/null +++ b/Docs/1.4.1.高级使用.初始化.ipynb @@ -0,0 +1,58 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "dotnet_interactive": { + "language": "csharp" + }, + "polyglot_notebook": { + "kernelName": "csharp" + } + }, + "source": [ + "# HttpClient 使用原则" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "dotnet_interactive": { + "language": "csharp" + }, + "polyglot_notebook": { + "kernelName": "csharp" + }, + "vscode": { + "languageId": "polyglot-notebook" + } + }, + "source": [ + "## 1、复用" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".NET (C#)", + "language": "C#", + "name": ".net-csharp" + }, + "language_info": { + "name": "python" + }, + "polyglot_notebook": { + "kernelInfo": { + "defaultKernelName": "csharp", + "items": [ + { + "aliases": [], + "name": "csharp" + } + ] + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Docs/1.4.2.高级使用.连接池.ipynb b/Docs/1.4.2.高级使用.连接池.ipynb new file mode 100644 index 0000000..7656438 --- /dev/null +++ b/Docs/1.4.2.高级使用.连接池.ipynb @@ -0,0 +1,58 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "dotnet_interactive": { + "language": "csharp" + }, + "polyglot_notebook": { + "kernelName": "csharp" + } + }, + "source": [ + "# HttpClient 使用原则" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "dotnet_interactive": { + "language": "csharp" + }, + "polyglot_notebook": { + "kernelName": "csharp" + }, + "vscode": { + "languageId": "polyglot-notebook" + } + }, + "source": [ + "## 1、复用" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".NET (C#)", + "language": "C#", + "name": ".net-csharp" + }, + "language_info": { + "name": "python" + }, + "polyglot_notebook": { + "kernelInfo": { + "defaultKernelName": "csharp", + "items": [ + { + "aliases": [], + "name": "csharp" + } + ] + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Docs/1.4.3.高级使用.重复使用.ipynb b/Docs/1.4.3.高级使用.重复使用.ipynb new file mode 100644 index 0000000..7656438 --- /dev/null +++ b/Docs/1.4.3.高级使用.重复使用.ipynb @@ -0,0 +1,58 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "dotnet_interactive": { + "language": "csharp" + }, + "polyglot_notebook": { + "kernelName": "csharp" + } + }, + "source": [ + "# HttpClient 使用原则" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "dotnet_interactive": { + "language": "csharp" + }, + "polyglot_notebook": { + "kernelName": "csharp" + }, + "vscode": { + "languageId": "polyglot-notebook" + } + }, + "source": [ + "## 1、复用" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".NET (C#)", + "language": "C#", + "name": ".net-csharp" + }, + "language_info": { + "name": "python" + }, + "polyglot_notebook": { + "kernelInfo": { + "defaultKernelName": "csharp", + "items": [ + { + "aliases": [], + "name": "csharp" + } + ] + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Docs/1.4.4.高级使用.使用管道.ipynb b/Docs/1.4.4.高级使用.使用管道.ipynb new file mode 100644 index 0000000..7656438 --- /dev/null +++ b/Docs/1.4.4.高级使用.使用管道.ipynb @@ -0,0 +1,58 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "dotnet_interactive": { + "language": "csharp" + }, + "polyglot_notebook": { + "kernelName": "csharp" + } + }, + "source": [ + "# HttpClient 使用原则" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "dotnet_interactive": { + "language": "csharp" + }, + "polyglot_notebook": { + "kernelName": "csharp" + }, + "vscode": { + "languageId": "polyglot-notebook" + } + }, + "source": [ + "## 1、复用" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".NET (C#)", + "language": "C#", + "name": ".net-csharp" + }, + "language_info": { + "name": "python" + }, + "polyglot_notebook": { + "kernelInfo": { + "defaultKernelName": "csharp", + "items": [ + { + "aliases": [], + "name": "csharp" + } + ] + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Docs/1.4.5.高级使用.类型化客户端.ipynb b/Docs/1.4.5.高级使用.类型化客户端.ipynb new file mode 100644 index 0000000..7656438 --- /dev/null +++ b/Docs/1.4.5.高级使用.类型化客户端.ipynb @@ -0,0 +1,58 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "dotnet_interactive": { + "language": "csharp" + }, + "polyglot_notebook": { + "kernelName": "csharp" + } + }, + "source": [ + "# HttpClient 使用原则" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "dotnet_interactive": { + "language": "csharp" + }, + "polyglot_notebook": { + "kernelName": "csharp" + }, + "vscode": { + "languageId": "polyglot-notebook" + } + }, + "source": [ + "## 1、复用" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".NET (C#)", + "language": "C#", + "name": ".net-csharp" + }, + "language_info": { + "name": "python" + }, + "polyglot_notebook": { + "kernelInfo": { + "defaultKernelName": "csharp", + "items": [ + { + "aliases": [], + "name": "csharp" + } + ] + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Docs/1.4.6..高级使用.工厂模式.ipynb b/Docs/1.4.6..高级使用.工厂模式.ipynb new file mode 100644 index 0000000..7656438 --- /dev/null +++ b/Docs/1.4.6..高级使用.工厂模式.ipynb @@ -0,0 +1,58 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "dotnet_interactive": { + "language": "csharp" + }, + "polyglot_notebook": { + "kernelName": "csharp" + } + }, + "source": [ + "# HttpClient 使用原则" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "dotnet_interactive": { + "language": "csharp" + }, + "polyglot_notebook": { + "kernelName": "csharp" + }, + "vscode": { + "languageId": "polyglot-notebook" + } + }, + "source": [ + "## 1、复用" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".NET (C#)", + "language": "C#", + "name": ".net-csharp" + }, + "language_info": { + "name": "python" + }, + "polyglot_notebook": { + "kernelInfo": { + "defaultKernelName": "csharp", + "items": [ + { + "aliases": [], + "name": "csharp" + } + ] + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Docs/1.4.7.高级使用.Polly.ipynb b/Docs/1.4.7.高级使用.Polly.ipynb new file mode 100644 index 0000000..7656438 --- /dev/null +++ b/Docs/1.4.7.高级使用.Polly.ipynb @@ -0,0 +1,58 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "dotnet_interactive": { + "language": "csharp" + }, + "polyglot_notebook": { + "kernelName": "csharp" + } + }, + "source": [ + "# HttpClient 使用原则" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "dotnet_interactive": { + "language": "csharp" + }, + "polyglot_notebook": { + "kernelName": "csharp" + }, + "vscode": { + "languageId": "polyglot-notebook" + } + }, + "source": [ + "## 1、复用" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".NET (C#)", + "language": "C#", + "name": ".net-csharp" + }, + "language_info": { + "name": "python" + }, + "polyglot_notebook": { + "kernelInfo": { + "defaultKernelName": "csharp", + "items": [ + { + "aliases": [], + "name": "csharp" + } + ] + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Docs/1.5.总结.ipynb b/Docs/1.5.总结.ipynb new file mode 100644 index 0000000..92d6ad9 --- /dev/null +++ b/Docs/1.5.总结.ipynb @@ -0,0 +1,69 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "dotnet_interactive": { + "language": "csharp" + }, + "polyglot_notebook": { + "kernelName": "csharp" + } + }, + "source": [ + "# HttpClient 总结" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "dotnet_interactive": { + "language": "csharp" + }, + "polyglot_notebook": { + "kernelName": "csharp" + }, + "vscode": { + "languageId": "polyglot-notebook" + } + }, + "source": [ + "## 1、系统结束,也是新的开始" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "polyglot-notebook" + } + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".NET (C#)", + "language": "C#", + "name": ".net-csharp" + }, + "language_info": { + "name": "python" + }, + "polyglot_notebook": { + "kernelInfo": { + "defaultKernelName": "csharp", + "items": [ + { + "aliases": [], + "name": "csharp" + } + ] + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Docs/Assets/架构.001.png b/Docs/Assets/架构.001.png new file mode 100644 index 0000000000000000000000000000000000000000..310fcdcc9671a86a19f7623eb98577eb699235c5 GIT binary patch literal 26765 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

nYvJ*qQ|94<T1_pRaW94mKNwd&C7Ch}aKA&C z1zEHAmi`U`)1lF;^wzCJs<{N^GtaFpyXD@cidrgSgZ#Qq{VoB=AkS+9Q=B6!vJH@g zfI&a2qXYb8GA)M<68CdRbfisqVpOUo0r9kuFMnWJZRFu%qd-@i)^6RJ6mebFv9-)KxZ@5PW7q9b4vs}72 zdEc_CH&NqBv2Se`W}dpd{W(_D>?ZakqFm)(f{;raH4fW*dZ?iwe_5jAlb0%jnZ2-~ zUJjazhtiP?>Ek!7O5BLkrD2tHk&3#vx3PEazyHc_i?#UNAzoVg{Y#;~rS9iBC^q#C zs_v6Ltg)VBfE}}GmbC7kzVfmF*Epxqc=z&4!nROSHv9qYt^gLqU5`YWU&ih!ByAU+SyP=BW&~3$6f7?OKR{8eB>|&>FRRVL4eQ2^_&zv%! zjm6E49yMg}%j1jpA|1FvlLrQ_#`ZM|GAQNt`c$a*eDgN=}`MEir zd|~<#Z&%@CUrJbY$&dw;g0F1+@S1c6+gw-w`Ad*ZWr>JZ z5Gk&uF&Cm!Ij~mpA;E`BBk(lB`F=XSm+$rg>Q-M#I}{#m)L zP<1Y0>Aew4Qc+042yF2qFxJe6$la8}`ti}x(S647ef6z_ot?031yDfx?alW0ujeq$ z5Im{mDNEpa@p`qvakElgeH^=r{%bP$J1GfaW{PF5em$amhFuk)qSXzW0yGieljj*@ zG-^g0Q2;1uT4m*sIoKosK-KkwaDw2`_rLuqVmQ4m^~)%KfB(tC226WO);nI;?wHRS zh^VKeHTR#BiRk&GjTfn&g?*&E8_hCTcmT3jscBCfmY7*Y(AomrXVEdx}#o>lS!)1;lQ^0*{HfQ^SLfh#b zt*_b`VcWE&GHzbuO*V3S-%kDUi(O=3uCmGb1u|y{lyz z@u}XXQ|j(ntx%KQuY*Y14$H2?)7YK z(x!eyZerp7vQxk@FF)S`%%gU66i|S{8Fv+z{biVxls6Ax6@VOMf_z72W@W`*W7|fq z%d3|MhhAnL44&5tvR5$U_4WTF$Yi5+v^q=D+h0=?_IG2o+k-6_^4)JVa*8YMQOO>P zsqmZZ-o#5vftr~qR9L#B>#PMj{ TD@1@&15fIMtayRwH}C%i@5&@j literal 0 HcmV?d00001 diff --git a/Docs/Assets/架构.004.png b/Docs/Assets/架构.004.png new file mode 100644 index 0000000000000000000000000000000000000000..3cab98f8d57d60b7dc109c88a4cb89df7eac0cc2 GIT binary patch literal 34256 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