.NET中如何使用HotReload

今天就跟大家聊聊有关.NET中如何使用 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 _logger;        private static string _dateTimeStr;        public HomeController(ILogger 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中如何使用 HotReload有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注创新互联行业资讯频道,感谢大家的支持。


本文标题:.NET中如何使用HotReload
本文来源:http://pwwzsj.com/article/jhoesi.html