当前位置: 首页 > news >正文

建设网站建设费用为什么网站百度搜不到了

建设网站建设费用,为什么网站百度搜不到了,沈阳网站开发招聘,重庆免费微网站1、前言NCC WebApiClient 已成熟稳定#xff0c;发布了WebApiClient.JIT 和 WebApiClient.AOT 两个 NuGet 包#xff0c;累计近 10w 次下载。我对它的高可扩展性设计相当满意和自豪#xff0c;但 WebApiClient 并不因此而停下脚步#xff0c;在一年前#xff0c;我产生了编… 1、前言NCC WebApiClient 已成熟稳定发布了WebApiClient.JIT 和 WebApiClient.AOT 两个 NuGet 包累计近 10w 次下载。我对它的高可扩展性设计相当满意和自豪但 WebApiClient 并不因此而停下脚步在一年前我产生了编写其 Core 版本的想法将 ASP.NET Core 服务端先进的思想融入到 Core 版本在性能与扩展性上得到进一步升华。对应的给它叫了 WebApiClientCore 的名字为了对得起名字里面的 Core 字我在框架设计、性能优化上占用整体开发时间一半以上。2、框架设计IActionInvokerWebApiClient 时还没有 IActionInvoker 概念对应的执行逻辑直接在 ApiActionContext 上实现。现在我觉得Context 应该是一个状态数据类而不能也成为一个执行者因为一个执行者的实例可以无限次地执行多个 Context 实例。Refit 则更简单粗暴将所有实现都在一个 RequestBuilderImplementation 的类上你们只要也只能使用我内置的 Attribute 声明一切执行在我这个类里面包办因为我是一个万能类。Core 版本增加了 IActionInvoker 概念从中 Context 分开用于执行 Context职责分明。在实现上又分为多种 InvokerTask 声明返回执行者 ActionInvoker、ITask 声明返回处理处理者 ActionTask以及聚合的 MultiplexedActionInvoker。Middleware思想WebApiClient 时在处理各个特性、参数验证、返回值验证时没有使用 Middleware 思想特别是在处理响应结果和异常短路逻辑难以维护。Refit 还是简单粗暴将所有特性的解释实现都在这个 RequestBuilderImplementation 的类上因为我还是一个万能类。Core 版本增加中间件 Builder将请求前的相关 Attribute 的执行编排 Build 为一个请求处理委托将请求后相关 Attribute 的执行编排 Build 为一个响应处理委托然后把两个委托与真实 http 请求串在一起Build 出一个完整的请求响应委托。得益于 Middleware流程中的请求前参数值验证、结果处理特性短路、异常短路、请求后结果值验和无条件执行 IApiFilterAtrribue 等这些复杂的流程变成简单的管道处理另外接口也变成支持服务端响应多种格式内容每种格式内容在一个 IApiReturnAttribute 上实现和处理比如请求为 Accept: application/json, application/xml不管服务器返回xml或json都能处理。/// summary /// 创建执行委托 /// /summary /// param nameapiActionaction描述器/param /// returns/returns public static FuncApiRequestContext, TaskApiResponseContext Build(ApiActionDescriptor apiAction) {var requestHandler BuildRequestHandler(apiAction);var responseHandler BuildResponseHandler(apiAction);return async request {await requestHandler(request).ConfigureAwait(false);var response await HttpRequest.SendAsync(request).ConfigureAwait(false);await responseHandler(response).ConfigureAwait(false);return response;}; } Context 思想WebApiClient 只有一个 ApiActionContext其 Result 和 Exception 属性在请求前就可以访问或设置但实际上就算设置了值流程也不会短路和中断属于设计失误。Refit 没有相关 Context 概念因为它不提供给用户自定义扩展 Attribute 的能力它内置的 Attribute 也没有执行能力一个 RequestBuilderImplementation 类够了。Core 版本将设计了多个 Context 概念不同阶段有不同的 Context如同 ASP.NET Core 不同 Filter 的 Context 也不同一样。对于一个 Action请求阶段对应是 ApiRequestContext响应阶段是 ApiResponseContext对于 Action 的参数对应是 ApiParameterContext。每种 Context 里面都包含核心的 HttpContext 属性HttpContext 包含请求消息、响应消息和接口配置选项等。Interface 思想输入 WebApiClientCore 命名空间会发现定义了很多 Interface这些 Interface 都是为了用户实现自定义特性用的当然内置的所有特性都是实现了这些接口而已。如果一个特性实现了多个接口它就有多种能力比如内置的 HeaderAttribute它既可以修饰于 Interface 和 Method也可以修饰参数。WebApiClientCore 的 Attribute 描述的逻辑是由 Attribute 自我实现所以整个请求的数据装配逻辑是分散为各个 Attribute 上用什么 Attribute 就有什么逻辑包含框架之外的非内置的自定义 Attribute。Refit 的内置 Attribute 只有欲描述逻辑没有实现逻辑实现逻辑由 RequestBuilderImplementation 包办所以它不需要接口也没有接口。3、性能优化更快的字符串替换像[HttpGet(objects/{id})]这样的path参数在 RESTFul 中常常遇到通过Span 优化Core 版本在替换 path 参数值 CPU 占用时间降低为原版本的十分之一。更快的 JSON 序列化得益于 Sytem.Text.JsonJSON 序列化和反序列化上性能显明提升。更少的缓冲区分配WebApiClientCore 使用了可回收复用的 IBufferWriter在 JSON 序列化得到 Json、Json 装配为 HttpContent 只申请一次 Buffer而且 HttpContent 在发送之后这个 Buffer 被回收复用。IBufferWriter 还于用表单的 URI 编码编码产生的 Buffer 不用申请新的内存内容直接写入表单的 HttpContent。更少的编码操作WebApiClientCore 的 JSON 不再使用 UTF16 的 string 中间类型直接将对象序列化为网络请求需要的 UTF8 编码二进制 JSON表单的 Key 和 Value 编码时也不产生 string 中间类型而是编码后的二进制数据内容然后写入表单的 IBufferWriter。更快的缓存查找WebApiClient 创建代理类实例来执行一个请求时要查找两次缓存通过接口类型查找字典缓存的接口代理类然后实例化代理类在 ApiInterceptor 里面通过 MethodInfo 查找字典缓存的 ApiActionDescriptor。Refit 执行同样逻辑也使用了两次字典缓存接口和接口代理类安全字典缓存 TypeMapping接口和接口方法描述的字典缓存 InterfaceHttpMethods。WebApiClientCore 取消了字典缓存使用静态泛型类的字段作缓存因为字段访问远比字典查找高效。同时通过巧妙的设计在代理类拦截方法执行时直接回传 IActionInvoker 替换原来的 MethodInfoIActionInvoker 包含了ApiActionDescriptor而 IActionInvoker 与代理类型都一起缓存在静态泛型类的字段减少了一次必须的字典缓存查找过程。性能对比排除掉真实的网络请求IO等待时间WebApiClientCore 使用的 CPU 时间仅仅为 WebApiClient.JIT 和 Refit 的三分之一。BenchmarkDotNetv0.12.1, OSWindows 10.0.18362.836 (1903/May2019Update/19H1) Intel Core i3-4150 CPU 3.50GHz (Haswell), 1 CPU, 4 logical and 2 physical cores .NET Core SDK3.1.202[Host] : .NET Core 3.1.4 (CoreCLR 4.700.20.20201, CoreFX 4.700.20.22101), X64 RyuJITDefaultJob : .NET Core 3.1.4 (CoreCLR 4.700.20.20201, CoreFX 4.700.20.22101), X64 RyuJIT MethodMeanErrorStdDevHttpClient_GetAsync3.146 μs0.0396 μs0.0370 μsWebApiClientCore_GetAsync12.421 μs0.2324 μs0.2174 μsRefit_GetAsync43.241 μs0.6713 μs0.6279 μsMethodMeanErrorStdDevHttpClient_PostJsonAsync5.263 μs0.0784 μs0.0733 μsWebApiClientCore_PostJsonAsync13.823 μs0.1874 μs0.1753 μsRefit_PostJsonAsync45.218 μs0.8166 μs0.7639 μs4、NuGet 包与文档NuGet 包PackageReference IncludeWebApiClientCore Version1.0.0 / 项目地址与文档点击项目链接带你 GET 到 N 种使用技能不求 star只求提供良好建议。https://github.com/dotnetcore/WebApiClient
http://www.yutouwan.com/news/229459/

相关文章:

  • 佛山市外贸网站建设公司中国空间站实时位置
  • 分类信息网站推广的意义北京最新发布会直播
  • 昆明网站建设推荐谁好呢vs2017网站开发
  • 展示网站如何做如何申请一个自己的网站
  • 网站开发实战第二章企业如何做好网站运营
  • 国外开发网站临沂做商城网站
  • html5网站代理中国建设银行贵州分行网站
  • 郑州网站建设技术网页制作详细设计
  • 私人免费网站怎么下载用家用电脑建设网站
  • html5网站修改网站建设的工具
  • 网站开发平面设计师岗位要求一个新品牌如何推广
  • 公司做网站需要提供什么条件企业网站的功能有哪些
  • 网站建设实训的报告手机详情页设计模板
  • jquery 购物网站汽车汽配网站建设
  • 泰安做网站建设的如何汉化wordpress
  • 大气宽屏的网站购物网站要多少钱
  • 做网站用的什么空间网站建设的网站分析怎么写
  • 学生做的网站成品如何建设网站使用
  • 营销型网站要素青岛建设大学招聘信息网站
  • 无锡有什么网站怎么自己在家做网站
  • 做卫浴软管的网站wordpress无编辑栏
  • 邢台企业网站建设咨询cms软件有什么功能
  • 河南高端网站建设中国新闻社和新华社有什么区别
  • 开发网站价格精湛的网站建设
  • 聚企360做的网站北京优化seo排名
  • 重庆中环建设有限公司网站华为公司网站建设案例分析
  • 手机网站制作费用益阳网站设计公司
  • wordpress 修改网页网站推广优化张店
  • 协同办公oaseo岗位要求
  • 怎么做p2p的网站河南省建设厅官方网站李学军