.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服务无微不至,无时无刻。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/303221.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何撬动机器学习的冰山一角?

目前&#xff0c;人工智能的应用日渐广泛。而作为人工智能核心的机器学习&#xff0c;是一门多领域的交叉学科&#xff0c;专门研究计算机模拟或实现人类学习行为的方法&#xff0c;以获取新的知识或技能&#xff0c;重新组织已有的知识结构使之不断改善自身的性能。简单来说&a…

linux 下运行libnids,libnids出错

2017/03/28因为246上一般用的东西都比较多了&#xff0c;就直接使用了这部分。但当初编译的时候也不是我弄得。今天想试一下libnids的编程。编译错误在网上查了下&#xff0c;说是版本不够的原因&#xff0c;那我也不能重新编译了&#xff0c;毕竟还有别人说不定用的好好的。gc…

服务治理治什么,10张图告诉你答案

凌晨四点被公司的监控告警叫醒了&#xff0c;告警的原因是生产环境跑批任务发生故障。即刻起床处理故障&#xff0c;但还是花了不少时间才解决。这次故障是一次数据校验的跑批任务&#xff0c;校验前面跑批任务的数据是否正确。幸运的是&#xff0c;之前的核心任务已经完成&…

Mapgis6.7 林相图自动注记 .

林业行业制作林相图是一件比较复杂的事。Mapgis注释和子图分别对应arcmap中的标注和符号&#xff0c;区文件填充颜色对应arcmap中的渲染。由于mapgis中上注释文本和子图号都只能手工一个个去上。如果能结合arcmap出图的强大功能&#xff0c;由arcmap负责制图&#xff0c;mapgis…

在linux文件共享接口,入坑Linux-day13(使用vsftpd服务传输文件、使用Samba或NFS实现文件共享)...

一、文件传输协议#ftp是一种在互联网中进行的文件传输协议&#xff0c;基于客户端/服务器模式&#xff0c;默认使用20、21号端口&#xff0c;其中端口20(数据端口)用于进行数据传输&#xff0c;端口21(命令端口)用于接收客户端发出的相关FTP命令与参数。#FTP工作的两种模式主动…

大数据分析了50万条拼多多商品数据, 得出了这样的结论

一、缘起我在杭州有位朋友&#xff0c;提到有家做社交的电商很火&#xff0c;叫拼多多&#xff0c;我没有在意&#xff0c;直到有一天&#xff0c;我居然在电视上看到了它的广告&#xff0c;广告画面活蹦乱跳&#xff0c;余音绕梁&#xff0c;我惊呆了&#xff0c;想知道这是何…

CentOS 7 安装 Greenplum6 (附 dotNET Core 示例)

Mysql 在面对大数据量的时候&#xff0c;还是表现有些吃力&#xff0c;所以产品中需要扩展能支持海量数据的数据库&#xff0c;这里选择的数据库为 Greenplum6 &#xff0c;Greenplum 底层使用的是开源数据库 PostgreSQL 。本文会介绍怎样在 CentOS 7 中安装 Greenplum6&#x…

linux系统故障实验,Linux常见系统故障排除

导读&#xff1a; 前言 运维人员经常会遇到各式各样的系统故障&#xff0c;如何根据故障特征锁定问题根源&#xff0c;需要的不仅仅是技巧&#xff0c;还有遇到故障时的思路&#xff0c;和对系统内部的理解&#xff0c;本文列出了一些常见的系统故障和处理方法&#xff0c;在那…

MIT正式发布编程语言Julia 1.0:Python、R、C++三合一

MIT 开发的 Julia 语言是全球热度上升最快的编程语言之一&#xff0c;下载量超过 200 万次&#xff0c;下载者包括谷歌、Facebook、FAA 和美国能源部等各个部门的开发者。近日&#xff0c;MIT CSAIL 实验室正式发布了 Julia 1.0&#xff0c;该语言期望结合 C 的速度、Matlab 的…

EFCore3.1+编写自定义的EF.Functions扩展方法

前言本文主要是讲解EF Core3.0 如何实现自定义的数据库扩展函数&#xff0c;虽然EF.Functions 提供了很多数据库函数,但是并不全面.比如加密解密..。这样的话 我们就需要自己扩展这些数据库函数 从而达到调用的目的.本文以达梦数据库为例(其他数据库都一样)..上篇文章推荐: EF …

WSUS2.0数据导入、导出(备份、还原)

以前我们做的WSUS实验都是让WSUS服务器通过互联网连接到微软网站去下 载更新补丁&#xff0c;但是现实的生活中有些网络是与互联网隔绝的&#xff0c;这种情况下可以采用导入导出WSUS数据的方法来解决WSUS的更新问题。先在一台能联网的 WSUS服务器上下载所需更新&#xff0c;然…

linux perl模块检测,Linux有问必答:如何用Perl检测Linux的发行版本

提问:我需要写一个Perl程序&#xff0c;它会包含Linux发行版相关的代码。为此&#xff0c;Perl程序需要能够自动检测运行中的Linux的发行版(如Ubuntu、CentOS、Debian、Fedora等等)&#xff0c;以及它是什么版本号。如何用Perl检测Linux的发行版本&#xff1f;如果要用Perl脚本…

借助TensorFlow框架,到底能做什么?

谷歌在七月份正式推出了深度学习框架TensorFlow 1.9 版本&#xff0c;那么TensorFlow框架到底是什么&#xff1f;TensorFlow™ 是一个采用数据流图&#xff08;data flow graphs&#xff09;&#xff0c;用于数值计算的开源软件库。最初由Google大脑小组的研究员和工程师们开发…

在c语言中如何屏蔽一段程序,如何在用C语言关闭TCP程序中的Nagle算法

TCP为了防止在网络中过多的小分组会导致阻塞&#xff0c;因此提供了Nagle算法&#xff1a;要求一个TCP连接上最多只能有一个未被确认的未完成的小分组&#xff0c;在该分组的确认到达之前不能发送其他的小分组。相反&#xff0c;TCP收集这些少量的分组&#xff0c;并在确认到来…

CCNP课堂练习四:frame-relay traffic-shaping(帧中继流量×××)

帧中继(Frame Relay)是一种网络与数据终端设备(DTE)接口标准。它可以减少结点的处理时间,提高网络的吞吐量。帧中继提供的是数据链路层和物理层的协议规范,任何高层协议都独立于帧中继协议,因此,大大地简化了帧中继的实现。目前帧中继的主要应用之一是局域网互联,特别是在局域网…

百度内部培训PPT流出:数据分析的道与术

这是一份来自百度内部的数据分析学习PPT&#xff0c;非常经典的入门教材。主要内容1、什么是数据分析&#xff08;道&#xff09;1.1 数据分析是什么&#xff1f;1.2 什么是做好数据分析的关键&#xff1f;1.3 分析要思考业务&#xff0c;尤其是接地气1.4 分析要言之有物&#…

VS2010 C++下编译调试MongoDB“.NET研究”源码

考虑到mongodb使用了boost库源码&#xff0c;参考mongodb官方文档后&#xff0c;下载编译boost版本是1.42(时间为2010-2-2)或更新版本:boost版本1.42&#xff1a;http://sourceforge.net/projects/boost/files/boost/1.42.0/boost_1_42_0.zip/download 下载boost源码之后…

有了这15款编程游戏,谁都可以学编程!

1、Coding Games一边玩游戏&#xff0c;一边挑战编程难题。Coding games支持包括PHP、C、JavaScript在内的20多种编程语言。用户界面功能强大&#xff0c;可以定制。例如&#xff0c;你可以选择你的代码编辑器的风格&#xff1a; Emacs、Vim、Classic。如果你想提升编程技能&am…

毕业的那天,程序员师兄竟然让我去做这一行

给大家看一份最新的数据&#xff1a;&#xff08;薪资表&#xff09;2018年最新数据&#xff1a;python、大数据、人工智能从业者工资为什么人工智能行业的工资那么高&#xff1f;无论是科研院所&#xff0c;商业巨头还是初创企业&#xff0c;各行各业都在大力开发或者引进人工…

Python 分析《爱情公寓》电影,让我十年情怀一瞬间都喂了狗

深陷抄袭之名、诉讼纠纷的《爱情公寓》终于上映了。情怀粉们的力量不容小觑&#xff0c;截止到8月12&#xff0c;《爱情公寓》票房已经突破3.72亿大关&#xff0c;稳坐票房冠军的宝座&#xff0c;院线排片占比高达40.0%。和超高票房背道而驰的&#xff0c;是各大社交平台上一边…