.NET 6 HotReload的试用
.net v6.0.0-preview.3的HotReload我是极喜欢的,因为之前有这样的需求——状态不丢,上下文不丢。
为了验证,安装完.net 6 preview 3后,新建一个webapi项目,写了如下简单代码:
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;namespace HotRealoadDemo.Controllers
{[ApiController][Route("[controller]")]public class HomeController : ControllerBase{private readonly ILogger<HomeController> _logger;private static string _dateTimeStr;public HomeController(ILogger<HomeController> logger){if (HomeController._dateTimeStr== null){_dateTimeStr=DateTime.Now.ToString();}_logger = logger;}[HttpGet("/status")]public string GetStastus(){_logger.LogInformation("获取时间列表");return "时间是:"+_dateTimeStr;}[HttpGet("/sleep")]public string Sleep(int i){_logger.LogInformation("延时");if (i == 1){System.Threading.Thread.Sleep(10000);} return "延时结果";}}
}
在项目目录,用dotnet watch运行项目。
状态不丢:
这里的状态我是全局的,放了一个静态的字段_dateTimeStr,当第一次调用/state时,该字段初赋值,之后每次调用都不变,用swagger可以验证。这时,我们修改HomeController的29行代码,把 “时间是”变成“输出时间是”,保存,再次调用swagger的/state,会发现,原来的时间没有变,但输出文本已变成“输出时间是”了,这说明代码起作用了,但_dateTimeStr这个内部状态值没有丢,进程好像没有重启一样。
上下文不丢:
这里用/sleep进行试验,当i=1里,要sleep10s,我会先请求一个/sleep?i=1,这里浏览器在等行,这里把HoemController的40行代码改成“延时结果GSW”,这时可以在swagger上调用/sleep,i传非1值 ,结果会是改变后的“延时结果GSW”,如果上一次的浏览器等待后返回了,你会看到是“延时结果”,并没有GSW,这是因为在这个请求调起时,还没有加上GSW,这个是可以理解的。其实这个功能我在k8s上试过,虽然pod可以优雅停止,但它是固定时间后停止,即使请求没有完成,也会停止的,相对来说没有HotReload更准确。
验证完成,还是相对满意的,因为HotReload是最近才加入的功能,还很不完善,比如这个只能在项目源码文件夹里用dotnet watch启动才行,publish后是不可以的,相信不远的将来,.net团队会更加完善这个功能,给出一个让大家满意的结果。
还有另一方面,不要希望这个功能能处理所有功能变化的HotReload,比如你把状态变量名改了,原来的状态肯定是不会存在的,所以良好的设计,加上HotRealod的功能,才能让我们的对客户提供的api服务无微不至,无时无刻。
.NET 6 HotReload的试用相关推荐
- qt工程在linux系统里颜色显示错误_【飞凌嵌入式RK3399开发板试用体验】+QT开发环境搭建测试(二)...
作者:飞扬的青春 在拿到开发板之后,已经体验了Android操作系统,接下来就是体验Linux下的开发,本次以QT的一个小案例来测试下. 首先是自己先搭建了一个Ubuntu18.04的虚拟机,使用真机 ...
- casperjs 安装试用
纠结了好久,一直报错, 具体错误信息现在已经忘了,后来看了官网的prerequisite,才知道要安装特定版本或greater 的 phantomjs 和 Python.我这边主要是没装python. ...
- 2019智能手表推荐_智能手表一定越贵越好?试用过后这五款才真正值得推荐
随着技术的进步,年轻人手上的普通腕表进化成了智能手表,虽说几年前智能手表产品还存在功能单一和续航太短等问题,然而,经过几年的发展迭代,智能手表技术不断革新,带给人们更好的使用体验,也有越来越多的人愿意 ...
- 卡巴循环30天不限次数循环试用工具
本文需评论之后方可查看! @echo off @title 卡巴循环30天不限次数循环试用工具 @echo off echo 卡巴循环30天不限次数循环试用工具 echo. echo ======== ...
- 从试用到使用:计算机视觉产业新一轮发展的起步年
参加 2018 AI开发者大会,请点击官网报名 CSDN 出品的<2018-2019 中国人工智能产业路线图>V2.0 版即将重磅面世! V1.0 版发布以来,我们有幸得到了诸多读者朋友及 ...
- 代码审查规范(试用版)
目录 1.背景 2.目标 3.流程 4.指定代码审查规范 4.1.命名风格 4.2.常量定义 4.3.代码风格 4.4.注释风格 4.5.控制语句 5.执行代码审查规范 6.开展PR Bash活动 1 ...
- Proovread安装与试用
proovread安装与试用 2018.12.04 19:52:21字数 204阅读 118 [TOC] 安装环境 Ubuntu18.10 Perl 5.10.1 or later Log::Log4 ...
- html阅读开放试用阶段,泰克为不同行业提供100种应用功能免费试用
泰克在3月中旬开始推出的[泰克芯高度,视界大不同]系列线上活动,其中特别针对工程师推出几十种软件包的30天免费试用,每个软件可以单独开通.针对电源设计.汽车电子.无线信号.高速信号等多个行业,泰克开放 ...
- 福利 | 放送AI华人库试用名额!专项代码找到领域专家
文末有福利哦~ 如今,人工智能领域发展如火如荼,国家也高度重视人工智能的发展,自然基金委成立了人工智能的专项代码F06,我们做了一个很有意思的尝试,首先通过在相关领域发表的论文找到2000位左右华人专 ...
最新文章
- Linux 守护进程的原理与实现
- 系统故事 --- 让系统讲故事
- vnc连接linux时出现黑屏
- 如何使用XML 配置的方式配置Spring?
- 列举ospf的5种报文类型_OSPF的5种报文类型
- MVC5+EF6 入门完整教程11--细说MVC中仓储模式的应用
- 阿里的 RocketMQ 如何让双十一峰值之下0故障
- 2019春第一课程设计报告
- Design Pattern: Adapter 模式 - Object Adapter
- python和CSV
- 即插即用,运维工程师必会正则表达式大全
- 一张网络路由器与能源路由器对照表(2015年)
- autosar 与osek 的nm
- MUI框架-01-介绍-准备-创建项目
- getinfo怎么用php,PHP的函数curl-curl_getinfo
- Flutter TextFiled去掉下划线
- scarpy-爬取链家所有成交数据
- 验证网站代码的免费在线工具
- Git提交代码到新仓库(--mirror)
- k203m机型java游戏_唯美中国风 品步步高K203M的江南之美