We're sunsetting PodQuest on 2025-07-28. Thank you for your support!
Export Podcast Subscriptions
cover of episode Building .NET 9 with Glenn Condron

Building .NET 9 with Glenn Condron

2024/11/21
logo of podcast .NET Rocks!

.NET Rocks!

AI Deep Dive AI Chapters Transcript
People
C
Carl Franklin
G
Glenn Condron
R
Richard Campbell
专注于软件设计中的耦合问题,提出了强度、距离和波动性三个维度的耦合模型。
Topics
Carl Franklin 和 Richard Campbell 讨论了 .NET 9 的新特性,包括性能提升、安全性改进和稳定性增强,并重点关注了 Aspire 项目和 AI 工具集成。Glenn Condron 详细介绍了 Aspire 项目,解释了其简化云原生应用程序构建过程的目标,以及如何通过改进的工具、集成和库来实现这一目标。他还解释了 Aspire 如何解决开发人员在构建云原生应用程序时遇到的常见问题,例如配置、依赖注入和弹性策略。此外,他还讨论了 .NET 9 中的 AI 集成,包括用于与大型语言模型交互的 Extensions.AI 库,以及如何使用 AI 来改进应用程序的各个方面,例如客户支持和报告生成。 Glenn Condron 深入探讨了 Aspire 项目的细节,包括其对工具、集成和库的影响。他解释了 Aspire 如何简化使用诸如 Redis 之类的服务的流程,减少配置步骤,并提高可靠性。他还强调了 Aspire 项目的“极端所有权”原则,以及团队如何与其他团队合作以解决问题并改进用户体验。此外,他还讨论了 Aspire 项目的社区参与,以及如何鼓励开发者贡献和改进。 Richard Campbell 和 Carl Franklin 讨论了 .NET UI 框架的现状,以及跨平台开发的挑战。他们还讨论了 .NET 9 中 AOT 编译的改进,以及其对性能和应用范围的影响。此外,他们还讨论了 .NET 团队在 AI 工具集成方面的努力,以及如何使用 AI 来改进开发人员的工作流程和应用程序的功能。

Deep Dive

Chapters
Glenn Condron discusses the significant enhancements in .NET 9, focusing on performance improvements, security, and the introduction of Aspire for cloud-native applications.
  • Continued performance improvements with AOT compilation.
  • Enhanced security features and stability.
  • Introduction of Aspire for easier cloud-native application development.

Shownotes Transcript

让我们与平台领导者之一讨论.NET 9!Carl和Richard与Glenn Condron讨论了他构建.NET 9的经验。Glenn谈到了.NET每个版本中的常规改进,包括性能、安全性和稳定性。但令人兴奋的是新内容,从Aspire开始。对话深入探讨了Aspire的起源故事,以及团队对使用.NET构建云原生应用程序的未来愿景。然后,深入探讨人工智能方面的一切——帮助开发人员创建应用程序的工具,以及如何在应用程序中包含人工智能功能。而且还有更多内容——.NET 10只有一年之遥!</context> <raw_text>0 您如何喜欢收听无广告的dark hat rocks?很简单。只需每月支付五美元成为赞助者,您就可以访问一个私有的RSS feed,其中所有节目都没有广告。支付二十美元,您将获得上述内容以及一个特殊的.NET Rocks赞助者马克杯。立即在patreon.netrocks.com注册。

嘿,欢迎回到.NET Rocks。我是Carl Franklin,还有Richard Campbell,祝大家秋季快乐,我们昨晚万圣节录制了节目。

我们在录制它时。但是的,这比那晚要晚,因为……

时间推移,我们希望获得更多我们上周讨论的内容,我们希望获得更多,不是上周。好的,时间推移,几期节目之前,是的,但我们希望让它更接近.NET Conf。但你知道Glenn,你知道所有关于.NET 9的事情。

不仅仅是Blazor。我们认为我们会回顾一下他们谈论的内容,然后……所以,嘿。

Richard,我真的很……

我认为我们应该直接进入正题,没有框架。

告诉你,做正确的事。播放音乐。

我有十……

进入……

习惯于查看Github趋势存储库。好吗?这个出现了。它被称为Little Big Mouse O。这是一个开源应用程序,旨在通过在多DPI显示器环境中提供准确的鼠标屏幕交叉位置来增强Windows 10和11上的多显示器体验。不错,对于涉及4K显示器和1080p显示器的设置特别有用。

1080p,啊,所以有缩放问题。DPI问题发生在你的鼠标上,这是一个小问题。

是的,不仅仅是鼠标,存储库中还有一个视频。是的,他拿了一个没有垫子的鼠标,试图在两个屏幕之间拖动它。是的,这始终不是一种愉快的体验,但这非常好。是的,非常好的东西。

我将使用它,就像这个录音设备一样。我有一个纵向的1440屏幕,然后是一个横向的曲面38英寸屏幕,我经常在它们之间拖动鼠标。这些可能会变得很古怪。

是的。所以我也要下载这个,因为我有一些屏幕,我有一个49英寸的,就像你一样,是的,还有几个其他的屏幕。所以这就是我拥有的。Richard,今天谁来和我们谈谈?

第1903期,我们与我们的朋友Jess Massi一起做的节目,我们谈到了Mali和Blazor,是的,并且对这期节目有很多好的评论,因为我们有很多内容。这条评论来自Elf B,他说:“我喜欢你们的节目,听到所有这些UI名称,如WPF、WinUI 3、Maui、WebView2、.NET MAUI,我们开发者都希望拥有这些。不是那么多不同的UI框架。”

WPF仍然似乎是最常用的.NET UI框架这一事实说明了一个问题。微软的.NET UI策略,过去我们使用AvaloniaUI进行跨平台开发,我们已经展示过它了。我们希望从微软那里得到这样的东西。现在,AvaloniaUI在那里。我希望当前快速采用的速度能够持续下去。

所以有两件事让我担心,当前和未来的“混乱”,抱歉,关于.NET UI框架,我们可以只专注于一个,或者只是停止移动开发,可能洗掉跨平台表单,用于Windows、Linux、macOS、iOS、Android和浏览器,以及不明确的跨平台ID策略,以及非常独立的Studio,根本不在VS Code中。我想大多数开发者都希望VS 2028成为跨平台的。你对此有什么想法?

你说20……

28?是的,就像Visual Studio的下一个版本。好的。我的意思是,要明确一点,我在这里已经几年了。是的,Visual Studio只在一个平台上运行:Windows。

曾经有一个适用于Mac的Visual Studio,实际上是MonoDevelop,当他们收购MonoDevelop时,他们发布了它,我认为这样做是不明智的,但现在他们已经停止开发它了。所以这真的不是一回事。我认为你的愿望是一个很好的愿望。它也从未被任何东西实现过,拥有桌面、移动、你知道的,加上所有操作系统,并且它可以正常工作。那将是太棒了。

好吧,我认为,你知道,它的起源,例如,告知了手机是您需要从其开始并从中进行扩展的子集,但从该集合开始然后很好地处理Windows和macOS以及更大的流媒体平台确实很难。所以我认为这仍然是一个故事,Maui的意图是尝试统一所有这些东西,对吧?嗯,是的,我认为你感受到的担忧是合理的,因为你真正感受到的是微软内部正在进行某种政治斗争,关于人们想从事什么工作,谁在做什么,在哪里等等。所有这些事情都在发生,我必须告诉你。

我为自己写了一个Mali应用程序,因为,不,我是一个独奏艺术家,我弹吉他,我有一张纸,通常上面有我的歌单和一些歌词,通常在演出结束时它们都在地上,我有一个iPad,完全……

正常的音乐家的事情,是的,我……

就像我有一个iPad。让我们这样做,所以我开始寻找是否有这样的应用程序,并且有,啊,但他们每月要收取30到40美元的费用来获得一个歌单,一个……是的,或者其他什么东西,我不知道。它们太贵了,我不会为那个愚蠢的东西付钱。

所以无论如何,我写了一个应用程序,它很漂亮。事情是这样的,我的机器非常快,比我的iPad快。所以我可以,我在里面放了一个简单的HTML编辑器,对吧?在我的机器上,我可以添加歌曲,添加歌词等等。

然后我切换到iPad,它只是读取数据,是的,你知道,我昨晚在演出中使用了它,很好。它运行得像冠军一样。是的。所以我喜欢整个Blazor混合模式,因为我可以,我可以把它带到浏览器中。

但我还要说,你正在一个平台上发布,在iPad上发布两个……

两个运行在Windows上,对吧,在我的死亡金属乐队上,然后是iPad,是的,好的,看……

是的,我认为这种斗争,Blazor是相当跨平台的,是的,对统一跨平台故事的斗争是艰难的。而且,总是会有一个起源平台是最强大的,并且会努力使另一个平台变得更好。而且,你知道,这些来自很多不同的方向。

所以你感到一些担忧是有原因的,很高兴你对那个波兰语很满意。我们认为这是一个令人印象深刻的产品。是的。

也许我们应该做另一期节目,非常非常……也许是这样。非常感谢你的评论。一份Music Go By正在寄给你。如果你想获得一份Music Go By,请在网站上、.NET Rocks的Facebook页面上发表评论,我们会在那里发布节目,也许会出现在那里,我会真的……节目会寄给你一份Music Go By。

或者如果你想,只需购买一份Music Go By。去music2code.net,对吧?好吧,在我们开始之前,这是第1925期。我想简要回顾一下历史。

你最喜欢的……

来自二十年代的一些历史事件?好吧,在1月份,墨索里尼在意大利众议院发表了一次关键性讲话,历史学家认为这是他独裁统治的开始。太棒了。

这是一个令人高兴的音符。1月27日至2月1日,1925年血清运行,被称为“伟大的慈悲竞赛”,通过狗拉雪橇横跨美国阿拉斯加地区运送白喉抗毒素,以对抗……

疫情,对吧?

是的,3月18日,三州龙卷风,美国历史上最致命的龙卷风,横扫伊利诺伊州和印第安纳州,造成695人死亡,2027人受伤。这太疯狂了。

但在那时还没有办法真正警告人们,对吧?是的,只有警笛。

还有更多内容。但在4月份,F·斯科特·菲茨杰拉德在纽约出版了《了不起的盖茨比》。

10月16日,共产主义……

对圣索菲亚大教堂的袭击造成大约150人在保加利亚索菲亚丧生,我们曾在那里去过几次……

当时是苏联的一部分。是的。

6月13日,美国工程师查尔斯·弗朗西斯·詹金斯使用48行和机械系统实现了图像和声音的首次同步传输,在“首次公开……

无线电视演示”中,无线电48行。48p,48……

p。7月,斯科普斯审判,对吧,一个测试案例,猴子审判,在田纳西州,约翰·T·斯科普斯,一位年轻的高中科学老师,技术上在5月5日被捕,并在5月25日被起诉,被指控违反田纳西州法律(巴特勒法案)阅读教科书中关于达尔文进化论的内容。他被判有罪,罚款100美元。

尽管判决后来因技术原因被推翻,但审判明确了美国新教徒内部的基本主义者/现代主义者之间的争议,威廉·詹宁·布莱恩(在1926年去世)受到自由主义者克拉伦斯·达罗的挑战。我发誓我不会全部读完这些,但1923年7月,希特勒出版了《我的奋斗》。8月8日,美国纳粹党通过在华盛顿特区举行估计有3.5万名游行者参加的游行来展示其受欢迎程度。8月1日,人类学家玛格丽特·米德抵达美属萨摩亚,在那里进行九个月的实地考察。

这将汇集在她1928年的著作《萨摩亚的青春期》中?这本畅销书将成为第一部流行的人类学研究。它将改变许多人对部落人民的态度。

当地海峡条约于10月5日至16日谈判,并于12月1日在伦敦签署。非常……你知道,为第二次世界大战做准备。是的,1923年11月28日,在田纳西州的WSM广播电台首次播出《WSM谷仓舞会》。

哦,是的。所以那一年很有趣。你有什么……是的,打击?

希特勒出版了《我的奋斗》,改革了纳粹党,并创建了党卫军,所有这些都在同一年,是的,我们与朋友们一起,对吧?就像那样。他回到了任务中,九个月的监禁似乎并没有让他气馁,在啤酒馆政变之后,所以你……

说他是一个被定罪的重罪犯。

他实际上是,但他准备……我的意思是,他被判处五年徒刑,只服刑九个月。是的,我喜欢做到这一点……

作为朋友和……

良好行为……

因为他忙着写书。有权势的朋友。

我想有些事情我并不认为……实际上足够了。

让我们请出我们的嘉宾。Glenn Condron是微软应用程序平台团队的项目经理,他大部分时间都在从事.NET核心运行时的工作。在成为项目经理之前,他是一位软件开发人员和顾问,工作了八年。他之前在微软的工作主要……

为澳大利亚……

政府客户。欢迎,Glenn。你好。你好吗?

是的,确实。嗯,我想我的个人简介需要更新,我想,我可能已经做了很长时间了,我现在是该平台团队的负责人,项目经理团队,几乎所有东西都在那里,没有工具和Maui,对吧,所有这些项目经理,我好吗?所以是的,这就是……

.NET的核心,不是语言。框架……

而且最近包括对语言设计的投入,但就像他说的那样。我实际上……我没有参加语言设计会议,所有那些人都没有参加。我并不假装会影响它。

但技术上来说,是的,很好。

是的,是的。那是我的,那是我的世界的一部分。这意味着我们必须讨论的.NET 9版本,对我来说,有很多Aspire,尤其因为它超出了我开始转向之前所做的事情。我现在有很多Aspire,很多,很多关于AI的东西,两个小时的AI,用于城市。AI,用于你和我,以及我们作为开发者……

像……

Copilot和朋友们,用于代码的AI,然后是AI,关于我如何……我的老板说他想检查董事会。我该如何实现它……或者我该如何在我的应用程序中集成AI?这部分更让我感兴趣,因为好吧,现在你需要库,你需要SDK,你需要体验。

你将如何与LLM对话?你将如何一般地进行AI?你将如何使它工作?我们有很多示例要做,很多合作伙伴……很多。然后是永远的目标,提供安全性、质量、性能。

对吧?是的,安全性,一个大问题,我知道。但几周前我们与Dan Roth谈过。他主要关注的是Blazor以及对Blazor的更改,但我们认为我们会更多地了解……

.NET 9……

和你一起,是的,嗯,我们知道Blazor。.NET 9中与.NET 8相比,其他一些重要的改进是什么?

我明白了。所以很多方面都延续了我们的性能改进之旅。我不知道。对不起,不是性能。我的意思是,是的,我们继续了性能改进之旅。

但我要说的是,在.NET 8中,我相信我在.NET 8中谈到了,甚至可能早在.NET 7中就谈到了。但多年来,我们一直在稳步推进原生化。是的,当我们不断地提供更多内容时,堆栈的更多部分变得非常能够。我们提前做好了提前完成的工作,这是一种更难描述的编译方式,获得原生代码。这给你带来的是,你知道,更好的冷启动时间等等,因为没有JIT。

它带走的是动态性,对吧?所以如果你在这个世界中,特别是如果你像我一样,有一个小型服务,我不需要任何运行时类型的动态运行时功能,这使得在AOT世界中变得困难,那么你可能想要在容器中获得额外的启动时间,在Kubernetes上,对吧?所以我们朝着这个方向做了更多工作。

我们在GC中做了这些事情。有一个新的动态自适应GC模式,用于服务器GC。A,是垃圾回收,所有这些都支持云和构建人们使用.NET的新工作负载和新方式,对吧?

嗯,Aspire是我们曾在.NET 8结束时讨论过的一个重要改进,关于AI,我不确定。我没有……我在那里谈过。我们已经谈论过Aspire,我认为你们已经围绕着它谈论过,对吧?是的,当然。

让我们与平台领导者之一 Glenn Condron 讨论 .NET 9!Carl 和 Richard 与 Glenn Condron 讨论了他构建 .NET 9 的经验。Glenn 谈到了 .NET 每个版本中通常的改进,包括性能、安全性和稳定性。但令人兴奋的是新内容,从 Aspire 开始。谈话深入探讨了 Aspire 的起源故事,以及团队对使用 .NET 构建云原生应用程序的未来愿景。然后,深入探讨 AI 的所有内容——帮助开发人员创建应用程序的工具,以及如何在应用程序中包含 AI 功能。而且还有更多内容——.NET 10 仅有一年之遥!</context> <raw_text>0 还有猎人,还有杰克逊。

是的,啊,节目。

你认为道路。

关于一个间谍,有多少事情需要改变,是的,我知道。

我敢打赌,我认为 IT 是工具。你看到它也在框架中吗?

是的,因为 Aspire 是一种 IT。它实际上几乎跨越了整个团队的交叉点,就像它不影响语言,但它几乎影响其他所有东西,对吧?对吧?所以你有工具,是的,因为你有仪表板来提供所有指标,提供酒店,提供以开发人员为中心的,现在我的右上角发生了什么,对吧,呃,然后你有了集成。

所以集成是一个新的网关包,它们的库与我在我的团队中构建的所有其他库相同,对吧?但是它们已配置。但开箱即用地假设您在这个世界中,您正在使用云端的东西,东西可能不可靠,对吧?啊,例如,我们确实在 Polly 中工作,从一开始就做 Aspire 以改进帮助改进其性能。

我喜欢我们对 Polly 项目贡献了很多,该项目是在构建这个 Aspire 项目的保护伞下进行的,它是由堆栈的元素和成分组成的,Polly 更快。我们有一个减少的东西。我们有这种能力,呃,你知道,我们有大的重试等等,更快,嗯,所有这些成分,然后你开始将它们堆叠在一起,将它们堆叠在一起,将它们堆叠在一起,直到你必须堆叠,对吧,对吧。

所以现在你有了,现在你有了使它更容易获得的库。你知道,我想与 Redis 交谈,但我需要你,我需要一个好的策略。我需要确保正确地处理 DI 并具有正确的生命周期。

Redis 客户端是线程安全的,我不知道,应该是单个事物还是不是。我不知道。我可以,你知道吗?

DI,你能定义一下吗?

DI,所以依赖注入。DI,如果我描述了这个,如果我为你列出这个,如果假设你要使用 Redis,这是我最喜欢的例子,这是我们的一部分,嗯,当我们创建 Aspire 将是什么时,当我们进行这个宣传时,我们有这张幻灯片,在那张幻灯片上说,如果你今天要在现代云中使用 Redis,这就是你必须做的。它有十五个步骤长。

对吧,我可以。

配置,设置所有设置,对吧?

是的,当前参数。

没错。你需要添加正确的,添加新的包,对吧?你找到正确的。

你必须在你的生命周期 APP 中添加依赖注入。生命周期是什么?不知道。

你必须处理狗,确保你得到了正确的。因为如果该事物不能是单个事物或不是,不是是主要的决策点,对吧?我要把它交给 DI,它是否正确记录日志。

它会进入我的日志流吗?当我们开始这项工作时,我们是怎么做的?这太可惜了,你必须这样做。

你必须这样做,这现在有了显著的改进,对吧?我如何在控制器或函数中使用它?然后,比如,弹性策略是什么?如果它有点不稳定,或者发生某些事情,它是否会开启?

恢复,就像它一直在继续?

它无处不在。我们几乎病毒式传播的是,你怎么把这个压缩成只是一个 Redis?看在上帝的份上,给我一些,给我一个真正可以使它与我们描述的所有这些东西一起工作的工具。好吧。

只需给我在云中让我工作的设置。

绝对正确。

因为这里更大的问题是,嘿,如果我们使用 Elastic 并且能够切换它会怎样?如果你实际上让 Redis 运行,对吧,你会有点说,好吧,别碰它。

是的,它现在运行良好。

是的,没错。好吧,这引出了另一个问题,那就是如果你使用 Aspire,对吧,并且你做了所有的事情,并且你拉动了所有开关等等,你添加了 Redis,你是否放弃了在 Aspire 之后手动添加内容的整个想法,就像你总是必须通过 Aspire 来添加内容,这样你就不会打扰自己,对吧?我的意思是,如果你要添加另一个服务。你可以只添加一个服务,所有 Aspire 的东西都会跟上吗?

是的,绝对可以。我认为你谈论的是 Aspire 和集成。

就像在工具中的手势,或者即使你从 Aspire 开始。但你知道,我们拥有多年的手动配置经验,这就是我们所做的,对吧?作为开发人员,我们现在必须把这放在一边。在我们添加它以扩展我们的应用程序之前,我们的应用程序,我们现在是否寻找使用 Aspire 的方法?

我的意思是,我希望,我希望 Aspire 的方法意味着你可以删除一些代码,因此,如果我不关心所有这些,我不需要担心,我总是支持你删除代码,对吧?所以也许,但不是,不是,不是必需的,让你改变你的做事方式,对吧?

所以存在这样的风险,即做一些与我在 Aspire 中设置的内容冲突的事情,也许我甚至不明白,就像你说的所有那些东西一样。

所以最大的风险可能是,嗯,你有一个 Redis 实例,我们内置了,所以你达到了一组特定的策略。

使用 Polly 策略,是的。

然后你用你自己的策略包装它们,现在你有了双层重试或其他什么东西。

就像这实际上发生在我的一位客户身上,我们尝试向其添加 Aspire。我们已经有 Polly 了,对吧?是的。所以那是。

最大的风险可能是你没有意识到你得到的客户端已经在为你重试并为你做所有这些事情,然后你正在为此编写你自己的逻辑,这是一个问题。最大的,是的,是的,但最终,你知道,嗯,我听到这个事情作为我的一部分,就像,是的,让我确保我记住我给朋友 Chris 的信息,嗯,他谈到他,他和你谈论他如何喜欢成为今天的开发人员,因为所有这些东西需要学习,你不会喜欢,你无法想象第一天上班是多么令人不知所措,然后说,酷,你正在构建这种应用程序,对吧?

所以我们最终,我试图在 Aspire 中实现的是,今天,我会说构建现代应用程序的学习曲线就像算术一样,它直线上升,是的,然后它甚至不会变平,对吧?我想让它像,你慢慢地学习越来越多的东西,你可以让它变得新颖。我们可以使学习多少东西才能提高生产力,获得有效的东西,并能在现实中发挥作用,拥有真实的互联网流量,处理它,而不是像倒塌。

并且可以维护。

并且可以维护,对吧?因为今天这只是一团糟。好吧,这非常非常困难,对吧?所以这是一堆有趣的挑战。

因为抛出一个应用程序服务并让它运行并不难?是的,但是你那时还没有做很多事情。

不,那是正确的。是的。如果你,如果你擅长构建这种应用程序服务,与数据库对话,Aspire 在那个世界中仍然有用。它使每次按下 F5 时旋转数据库变得容易等等。但是当你有三个、四个后端 API 或几个函数和一个数据库时,它才真正有用,然后你开始扩展房间,应用程序服务在那个世界中是真正之前的,对吧?嗯,那就是。

所以是的,使曲线变平对我们来说非常非常重要,就像我们进行的一次客户电话,我是在与 Aspire 合作之前进行的,我当时正在与这位工程主管交谈,他说我们说我们问我们的标准脚本的问题之一,因为我们试图问一致的问题,是晚上什么让你睡不着觉,因为我在寻找这个问题的答案,因为如果有什么让你睡不着觉,我可以尝试解决,对吧?是的。他的回答是,我不知道我是否正确地拼凑了乐高积木。

一个好问题。

我的应用程序构建在一堆参数包之上,我知道它可以工作,它可以运行,但是这些东西应该放在一起吗?我是否正确地配置了这个?还有很多事情留给我,我担心明天我的东西会崩溃。

我真的不知道我是否能够做到。我把两样东西放在一起。我应该让 Aspire 与我所做的其他事情一起工作,这会让我遇到一些导致世界崩溃的事情。所以最终,你试图让这个人能够在晚上睡觉,并且能够说我很自信,我很好。我使用了他们所说的所有可以工作的东西,这是一种基于 Aspire 人们构建东西的社区和生态系统来证明的,这样我就可以更有信心,我没有犯那个错误,对吧?这就是为什么在 .NET 9 主题演讲中,我假设它已经出来了,我希望。

这在主题演讲之后出现,你所看到的是这个社区接受了 Aspire 的想法,这只是试图让越来越多的人能够构建由组件组成的、保证质量的东西的想法,这些组件具有相同的需求和指导方针,这些指导方针是 Aspire,我仍然称这些组件为集成,即使我们更改了集成名称。所以,因为,就像什么是集成,实际上我们有这个规范的想法,这意味着你知道你知道你可以连接到依赖注入。你知道有一组,你知道,十到十五件事,为了成为一个集成,你必须勾选。

所以这个社区的这个想法是,你或任何拥有他们想要成为 Aspire 集成库的人,也可以在你说添加 Aspire 集成时出现在列表中。然后,我们将有一个整个社区来努力确保,我们可以继续建立这个社区,当你构建这种类型的应用程序并且你真的想要这种保证时,你会怎么做?这如何运作?对吧?Aspire 也还处于早期阶段。

我们可以做疯狂的事情,比如 Aspire 有你的退休应用程序的模型。我们可以映射它。我们可以给你提供应用程序所有部分的完整描述。

更重要的是,你可以做一些疯狂的事情,就像团队中的一些人昨天也谈到过,他们说,如果我们在每个通信部分之间放置一个代理会怎样?所以在你的开发机器上,你可以在任何特定的连接之间打开数据包丢失,你可以把它作为工具的一个特性。

所以你运行它,它会发生。你打开数据包丢失,对吧?或者诸如此类的事情,对吧?今天可以做到这一点。但是让开发人员努力弄清楚如何去做并打开它,可能不会,但是如果它就在那里,你只需要点击一下,尝试一下,对吧?所以有很多这种工作可以在 Aspire 空间中完成,只是为了帮助人们构建,使他们的应用程序更可靠。

不是以艰难的方式发现。

艰难的方式。我们有很多关于人们以艰难的方式发现的恐怖故事。当我们构建它时,我们试图为这些人解决所有这些问题。

你不会在处理它时发现你的日志记录错误,然后你开始寻找日志,当你发现它已经过去一年了。

是的,对吧?

我的意思是,你在 .NET Conf for .NET 8 上第一次谈到 Aspire,我们在 2024 年 1 月与他们进行了第一次展示。所以我们现在是 V2 还是 V1?我觉得你一年前还在做实验。

这不是微软常用的说法,V2 是你开始尝试它的时候。这不是我们总是,从不,人们过去常说的吗?

V3,V3,它有什么好处?V3 是。

黄金版本。

黄金版本。

是的。但我的意思是,你有一年的反馈并反对它。我的意思是,现在要进入世界,对吧。

并观察问题,这太疯狂了。所以是的,所以是的,目标是解决这个问题,解决这个问题,我认为这是现在讨论的一部分,那就是,你做了什么?客户最早遇到的是什么?

所以,人们经常遇到的一件最重要的事情,我们已经开始尝试解决的是,所以我们有这个概念,开发人员友好型操作,我过去常常与团队讨论,因为,就像,这个东西必须适合那个世界,就像,如果你超级偏向于只针对开发人员,因为你可以这样做,嗯,所以你需要构建一个解决方案,让你,这对于开发人员来说是有吸引力的、高效的和好的,但让你很容易融入那些运营人员的工作流程。所以对我们来说,一旦人们开始使用这个东西,这几乎是立即显而易见的,他们非常想要更多地自定义他们延迟的东西,当他们使用默认部署时。我们可能应该更普遍地谈谈部署。

但是当使用类似 AD 的体验时,他们想要更多的东西。这就是。关于 Aspire 的有趣之处在于,这不是我的,而是我们拥有的另一个原则,那就是极端所有权。这个想法是,至少在 Aspire 中,我们不会让您成功所需的不同部分之间的差距阻止我们进行更改。

所以如果 AD 团队需要做一些事情来使它变得更好,或者即使 AWS 团队需要做一些事情来使 AWS 体验更好,我们就会去和他们谈谈,我们会尝试解决它,对吧?正确的部门。所以使用操作容器应用程序和 Aspire 以及 AD 应用程序的一件重要的事情是,好吧,我该如何更改事物的名称,或者像调整这个设置或单个事物非常好,除了这一点。

而且我不想完全拒绝系统。因此,你总是可以生成所有设备步骤,然后你将其移交,然后从那里参与,检查IT。但我希望如果我避免了IT,就能做到这一点。

你能给我一些其他的东西吗?所以现在有了更多的灵活性,你可以有效地将AP包装器放入ACD中。所以你可以发布推文。

你可以更改以前必须完全弹出到生成的bye p中检查IT,然后使用bye p等等的设置。所以现在有了更多的东西,你可以选择合适的范围来适应它。然后很多人非常想要,比如等待。

所以我可以说我希望这在那个东西之后开始。是的,对吧?所以你得到了对它的支持。你对持久性容器的支持可以保持学校,保持城市服务器在APP执行之间运行,所以我们对所有这些东西都有支持。

我们都真正受到那些真正使用这个东西的人的驱动,他们说,是的,我们需要这个。我们需要这种支持,对吧?以及一些像内部的大人物一样使用它。嗯,你可能看过主题演讲中的视频。如果你从一个架构师在Copilot上工作的视频中观看它,Copilot的统一后端是用Aspire构建的。所以每当你使用微软Copilot之一时,通过相同的Copilot后端,那就是一个Aspire后端API,它被编排,Aspire的开发不会影响他们的生产。

我很高兴能花一点时间来介绍这些非常重要的信息。

你的本地.NET Framework应用程序是囚犯吗?在AWS上找到自由,拥有弹性扩展和按需付费定价,移植到跨平台.NET并在Linux上运行而无需许可费,在AWS amazon.com/dotnet/modernize了解更多信息,嘿,今天打电话,我们正在重点介绍一个在科技界引起关注的工具:Raygun。

AI错误解决将智能AI驱动的见解直接带入您的开发工作流程。此功能不仅识别错误,还建议如何快速有效地在几秒钟内修复它们。

如果您准备好更深入地了解更智能的调试,那么您一定不要错过Regan提供的功能。访问raygun.com/dotnetrocks,即ragan RAYGUN.com/DOTNETROCKS,免费试用14天,探索Regan如何彻底改变调试。

我们回来了。是Dat、Rox、亚马逊坎贝尔,让我们打电话给弗兰克兰。嘿,嘿,嘿。与我们的弗兰克·格伦·康德隆谈论所有.NET 9的好处。

是的。并且提醒您,您可以通过成为每月5美元的赞助者来获得.NET Rocks的无广告订阅。在patreon.com/dotnetrocks上。好的,你刚才说,伦恩。

我不记得那是关于我们的一些想法,我们认为我的痛点是有很多反馈。我们做了很多功能。我强调了一些,是的,但我们都在努力,我们的目标是在我们交付中途到9之间,现在都是关于主要的痛点,修复主要的痛点,主要的痛点,所以这就是它一直以来的样子。现在有了Aspire,我认为这是一个非常好的状态。我们有很多真正使用它的人。

当我们谈论在你不真正理解或不需要学习的东西周围放入C#包装器时,这引起了我的兴趣。

是的,这是……

Aspire的一部分。这不是……

能够让开发人员无需了解底层AD、C和AD体验的功能。我们为您提供了一种方法,并在Aspire中使它变得直观。

但是我们做得更好,更好地分层软件,对吧?因此,你应该也能够在Aspire体验之外获得它,我喜欢Aspire非常像一系列组件,它们本身都能很好地工作,但是当你把它们放在一起时会更好,对吧?因此,显示所有otel数据的仪表板只是一个otel仪表板。你可以让任何与otel对话的东西出现……

在那件事里,而且……

如果……如果你去容器应用程序,现在它们有仪表板,Aspire仪表板,对吧,因为它只是他们获取它并托管ACI的方式。我说这是一个很酷的LED点,让我们把它放在那里,对吧?

JuiceUGA包的集成,在Visual Studio中添加集成实际上是搜索或获取Aspire帐户拥有的东西,然后不,它们没有什么特别之处。使用一些包装代码更新GA包,对吧?服务发现的方式是在环境变量中,对吧?

就像,它非常像你可以对它做所有这些事情。你可以完成Aspire为你做的一切,但是它……但是它为你把所有东西放在一起。所以你不必过多考虑它。是的。

这是经典的事情,你知道,你想使用这个库或任何东西,这个组件可能是一个开源组件,无论如何。首先,你下载NuGet包,然后你在程序中连接它。然后你可能需要添加一个CSS文件或一个JavaScript链接或所有这些东西。

那么我们如何希望你到达那里?这有点像它所做的事情。嗯,然后是的,然后当你把它们放在一起时,所有这些东西放在一起的整体体验让很多人大吃一惊,说,这在我的生活中一直都在哪里?

啊,是的。

非常强大的效果,对吧?这件事非常……

强大的新效果,但它们是单独可适应的,并且它们耦合得非常紧密,这非常好。

更重要的是,如果你……如果你对如何构建你的云应用程序有强烈的意见,你可以取出不适合你计划的组件……

不适合你的计划。

我很感激。所以它还处于早期阶段,但显然,你们一直在收集很多反馈,比如看看问题列表,哦,是的。

我没有……

时间来尝试,是的,但想象一下你这样做。有多少问题是人们不理解如何使用它,而人们想要进一步使用它?

是的,是的,是的。所以有很多问题不是我不理解如何做。有很多讨论,对吧?

所以反馈渠道充满了“yaba,这是什么?”,是的,对。充满了“yaba,这是什么?”,嗯,是的。

我认为使用Aspire构建一个应用程序将是一个很好的学习机会,对于那些从未使用过Redis的人来说,对吧?与其去阅读文档,花一两天的时间阅读它并试图弄清楚如何将其塞进你的应用程序中,不如使用Aspire,然后你去看看我做了什么,你知道,这对我来说很有意义。是的。

是的,它很好。而且那是对的。部分原因是努力尝试使学习再次变得线性,对吧?

是的。为了让这些事情变得顺利,让我们在这里取得一些成功。是的,如果你只是遵循默认路径,你就会到达那里,如果你想走得更远,你可以。

对吧?然后这有助于大型企业,因为大型企业想要尝试……

获得某种程度的一致性和可预测性。我不想做一个关于Aspire的完整节目,因为.NET 9还有更多的事情要做。让我们来谈谈AI集成。

你看,它有点……

现在很多人的雷达上。

对很多人来说。是的。所以我想在第一点上说的一件大事是,如果你还没有看过Sanderson的示例应用程序,在8中,我们谈到了eShop。我们对eShop示例应用程序进行了这种重新设计,使其全部云原生化,并使用Aspire等东西运行,对吧?

所以,正如我们团队中的一位工程师所说,我们现在正在扩展eShop的电影宇宙,以创建这个eShop后台应用程序,想象一下,你是负责该eShop应用程序的客户支持人员,对吧?我们构建了这个应用程序。所以它以有时令人信服,有时对人们来说并不明显的方式使用了大量的AI,因为它们是……我不知道你是否曾经见过……我该如何……是的,是的。

当然。

所以它使用它进行过滤,使用它进行总结,并使用它来帮助我确保我正在关注最重要的问题,帮助我在收到反馈票证时找到正确的回复,我想要用T、F、M回复,阅读手册,中间有一个f。我该如何要求AI在手册中找到我应该使用的部分,这样我就不必搜索菜单或类似的东西,所有这些功能都存在于该示例应用程序中,并且它都组合在一起,并且运行良好。

Sanderson谈论它,并向他的视频中添加了演示,太棒了,绝对是……

如果你喜欢……但是我关心什么?如果……如果我没有……如果我不在应用程序中工作,我需要一个聊天机器人。那么我该怎么做呢?去看看他的一些东西。它非常好。它激发了……

更广泛地思考这些工具可以为你做什么。

绝对正确?所以这意味着对它的支持。那么.NET团队做了什么?我的团队做了什么?所以我们有这种方式……

我们从有效的基本要素开始,看看,好的,你需要标记,在这个世界中是字符串,什么最快、最好、最……什么是世界上每个人都应该使用的最好的标记器?让我们确保存在这样的实现,就像这些非常低级的基本要素一样,构建了很多这些东西。

然后有效地,我们只是开始构建构建块和构建块和构建块,允许你与……做这个生成的……任务。我想说的是社区,对吧?所以在.NET生态系统中,你有Metic Channel,你有HSD案例。你还有像这些库一样能够生成AI内容的东西,我们帮助并支持所有这些东西。

然后我们看看,好的,那么我们应该构建什么底层的东西,所有这些人都需要?而这个问题是,是永远的问题,我们应该构建什么东西,这样他们就不必构建了?然后每个人都会采用它,每个人都会处于更好的位置。

所以这就是我们一直以来的方向。所以你在.NET 9上看到的一件事是这个AI扩展……我们之前谈到过,Semantic Kernel已经存在,然后AI扩展是这种构建块层,用于……我想与LLM对话。我该如何与LLM对话。

而该库允许你做的是进行聊天完成,这是很多东西,即使不是聊天类型的东西,最终也归结为向服务发送提示,我将获得一个流式响应,我将弄清楚这意味着什么,我想做的是教它关于我自己的数据,我想让遥测连接等等。

它为你提供了许多不同类型LLM的一致抽象。所以如果你要使用OpenAI,一些本地的东西,或者你要使用……你可以针对许多不同的模型获得相同的编程体验,这些模型可以插入系统。

有趣的是,它有效地使用了一个中间件管道。对于那些在家玩的人来说,这与他们调用中间件的方式相同。所以你有效地在这个世界中发出你的请求,这是一个聊天完成,它通过这个中间管道。

因此,这将诸如日志记录之类的实现从特定于LLM的提供程序移动到通用库中,这样每个提供程序都不必做所有日志记录工作。所以作为消费者,你获得一致的日志记录。你获得一致的工具调用。

其中一件我做的事情是,我会调用你自己的方法,如果可以的话,如果需要的话,对吧?它构建了所有这些东西到这个中间层,而不是让每个提供程序都这样做,这使得编写提供程序更容易,希望这意味着我们会得到更多提供程序。它还允许像Semantic Kernel这样的东西在顶部添加一层并获得相同的好处。

你是否预见到人们会将AI用于我们通常为数据编写的代码表单?比如,举个例子,选择一个带有许多过滤器的报表,对吧?

与其使用下拉组合框和填充和重新填充以及复选框等等,你是否预见到有人会打开一个文本框并说,给我所有在该州和该日期之间的这些数据,以及这个特定的转录,并替换所有这些UI代码?是的。

这似乎完全是关键。这将会发生。我认为首先你会使用AI来构建你刚才描述的表单。

第一步,对吧?Copilot和朋友以及所有工具和虚拟代码,就像你看到的编码爆炸一样,对吧?第一步将是,我想为它构建UI,确保它拥有所有UI。

嗯,第二部分将是……将是……是的,我认为你可以达到那一点。它会很快吗?对最终消费者来说会更好吗?我不确定,对吧?至少给他们一个选择。

对吧?给你一个选择。

我认为绝对会发生,但它会……但我仍然怀疑你会……你仍然会想要你的东西。这是每个人都看起来像的东西。我们已经知道它是什么了。所以当我让它变得真实时,所以我就不必检查,因为我认为这个过程将涉及一些调整以每次都获得你想要的东西。所以对于你必须每天查看的报表,你将想要这样做,对吧?最重要的是,你可以添加语音识别,这样你就可以直接与应用程序对话。所以你想要从它那里得到什么。

但是,更重要的是,更有趣的是,它只是在挖掘洞察力,对吧?就像如果你要进行那种对话,而那个东西能够理解所有数据,你能否提出这样的问题,比如,我的增长是多少?我的同比增长现在是多少?它会直接告诉你,你就不需要去看图表来解读同比增长是什么了,对吧?所以它帮了大忙。

你可能有一个应用程序,这是你的主要应用程序,然后你可能还有一个AI(姑且这么称呼它),你只需与它对话就能从解决方案中获取数据,就是这样。

然后你看到其他人做的实验,你实际上可以得到一个免费的初级程序员,它可以帮你编写代码来解决问题,对吧?

至少它能帮我写PR评论,之类的。

看起来不错,是的。

能够真正记住……好吧,不是记住。但它分析了我所做的所有更改。

最终,你想要达到的目标是,AI 能够完成所有代码的繁琐工作,这样你就可以专注于有趣的部分,对吧?但那是……是的,就是这样。

增强工具,它们很棒。它不会编写单元测试,但你知道,编辑一个测试比从头开始编写它们更容易。有时它会输出一些你……你根本没想到的东西。

我想到一点。绝对的,对我来说有趣的是,我想谈谈我可能在这个方面遇到的挑战,这些挑战可能对我来说是独一无二的,也可能不是,但我希望对大家来说很有趣,那就是你可以把这些东西打包发布,每年一次。是的,是的,因为它类似于……类似于这个。

这是iOS空间内的挑战,也是Aspire内的挑战。不同之处在于,我认为两者都面临这个挑战,只是原因不同。

但是,这两个领域都难以做到每年发布一次,然后把它放在每个人的机器上,要么是因为发布速度太快,要么是因为你依赖于很多你无法控制的东西,比如Aspire,对吧?嗯,如果我们需要更新我们依赖的Redis客户端,我们需要怎么做才能更新它,对吧?嗯,在iOS的情况下,可能会有某种新的做事方法非常重要。

因此,两者都不适合将它们与其他所有内容一起发布到.NET 9中。但我们正在确保从机制上讲,它们不会与发布绑定,只能在我们发布主要版本时才能发布。

是的,你需要能够更换正在使用的开源库。绝对的。我希望你能够根据需要切换到本地实例或云实例,对吧?就像……

是的,就是这样。这就是……就是这样。但同样有趣的是,Aspire 9可以在.NET 8上运行,对吧?但通常情况下,我们尝试在一段时间内保持.NET 9与.NET 9、.NET 8与.NET 8、.NET 7与.NET 7一致,因为这样更容易推理,对吧?你的大脑会崩溃,当你开始说……但从技术上讲,你可以在版本7的这个东西上使用版本7的这个东西,在版本6的这个东西上使用版本4的这个东西,然后你的大脑就会爆炸,是的。

我觉得Aspire的一个版本就足够了。

就是这样,所以……是的,所以……但是如果它是两个版本,如果是Aspire作为世界和.NET 9作为世界,并且它们都在.NET 10版本上运行,那可能……但这部分是像……那些我不一定总是打包发布的东西,就像扩展一样。AI,而且我们不能进入一个一切都是独立发布的世界,因为我们在Core的早期尝试过这种方法,如果你还记得的话。

是的,我们尝试过。那是一场战斗。但我认为它也是LTS。我认为支持两个版本是有意义的。

这就是你随后在内部讨论的内容。也许这是很有意义的。也许我们应该更多地这样做。我们会就此做出决定,我们讨论过它。

是的,不,但你肯定在寻找一些你只想保留的东西,比如,我不介意你称之为Aspire 9,是的。

即使它们做了任何版本的更改。因为你必须尝试,你必须权衡,从全局来看,这些东西都可以是独立的,是的,但是你应该如何看待它?因为你需要让键盘前的每个人都能轻松地弄清楚他们需要做什么。

你必须权衡所有这些。你必须权衡这些事情。然后很容易想到这样的场景,但是如果我们有一个东西,它可以为这个包提供一个错误修复,而有人非常需要它,就像……是的,但是……做得很好,尤其是在……

在投资者或任何东西中,应该只有一个当前版本的Aspire,我不在乎你在后台使用什么,只要它能工作,是的,所有这些AI东西也是如此,因为它的发展如此迅速,是的。

然后,然后,然后释放AI的东西。

挑战在于找出哪些东西是持久的,是的,因为你不想把所有东西都推倒重来,对吧?所以我们有代码补全功能,有些人会认为,这很可爱,但是其他像……山一样的东西呢?你现有的系统呢?所有这些呢?流音频呢?文字转语音呢?或者其他什么东西,对吧?我们想,是的,是的。

但是我们不能。我们不能让不同层面的东西以不同的速度发展。如果我们在库、系统方面发展得太快,我们帮不了任何人。

好吧,有些人认为每年发布一个.NET版本太快了。

是的,没错。对某些人来说,这已经太快了,对吧?是的,我认为这实际上更多的是关于人们,当人们不想被迫迁移时。是的,比我更关心的是存在另一个版本的事实。而且,如果人们感觉不好,如果版本……

领先于他们太多。

是的,很多人都在使用.NET 6,这是最流行的,不是最……

流行的版本。

所以数据告诉我们,大约一半的数据库只从LTS迁移到了LTS。这很好。

这很好。这很好。是的,这说明人们关心这一点,就像还有其他的争论一样。

这就是为什么我们有LTS和非LTS的原因,就像把它们都做成一样?是的。但显然,这对某些人来说很重要。

是的,是的。

是的。我的意思是,我包含了一个链接,即使是每年都有的改进也是惊人的,非常复杂。你需要花一个下午的时间阅读关于性能的博文。是的。所以我坚定地站在当您升级到新版本的.NET时,速度更快、方法更好的阵营中。是的。

是的,对于所有收听的人来说,每个版本都是一个里程碑。是的,这是真的。我们尝试,我们做,我们尝试使我们的每个版本都有一些令人惊叹的实验正在进行。

像……运行时团队一直在尝试,我认为,像……不同的版本……我认为不是不同的版本,但我们不会改变方法,不同的方法。如果……如果我认为这是一个运行时特性,而不是一个编译器特性会怎么样?会怎么样?是的,什么情况下更好?什么情况下更糟,对吧?就像……

那是什么样子,而不是仅仅输出一个带有所有开销的AI模型?如果你在操作系统中实际拥有基础设施会怎么样?在语言中拥有基础设施会怎么样?

对吧?所以像这样的实验,比如,从……你知道的,你……也许你看到了一些关于绿色线程的实验,在.NET中使用绿色线程模型是否有意义。结论是,是的,我们可以做到这一点,但这会以另一种方式……

我正在做asic,是的,真的,这是什么方法?我不知道。什么是绿色线程?它有点像Go中的Go例程的工作方式。

这是一种不同的方法。我认为我……我没有偏离主题太多,不用担心。我们可以获取一个链接,但我们会获取一个链接到……

有一个链接到最初关于绿色线程实验的问题。这是一个……好。

有趣的方法,如果你关心学习什么是线程或这个主题,但说实话,大多数人可能不需要关心……

所以是的,你知道的,所以我想在我们结束之前回顾一下,你正在谈论AOT以及AOT的进展。我们的朋友Dalan Bey,我们上周才和他谈过,在这次谈话发布之前。对吧,Richard?

是的。

对。所以。他有一种叫做Rockstar的语言,并且……

当然。

但他一直在等待AOT真正成熟。他就像,在.NET 8中终于实现了。所以他可以用一个GitHub Action,生成他的交互的完全原生版本,适用于所有平台。

所以这在.NET 8中。它只是让它更快更小吗?执行器?不。

我,所以现在AOT更多的是关于生态系统的工作。所以像在.NET Framework中,它并不真正有效,对吧?它做了很多在.NET Framework中效果不佳的事情。所以如果你尝试做一个编译器,它是100%的.NET,堆栈的某些部分不一定与AOT很好地协同工作。所以它更多的是关于扩展生态系统,以便越来越多的东西都能正常工作,而无需考虑它,这就是……至少在未来一两年内,AOT的进展。好的,在……

AOT的背景下。另一个主题是运行时、Windows on ARM。是的,我的假设一直是你们会为我们处理这个问题,而不是开发人员。如果你想在ARM上运行,你就在ARM上运行,并且……

JIT会简单地发挥它的魔力。

是的,啊,但是如果你使用AOT,你必须选择一个平台吗?是的,是的。

所以这里……最明显的是x64,这是每个人都在运行的。所以这很容易。然后ARM出现了,你就像……

然后你必须进行新的构建。你需要一个新的编译。

你需要为……

新的ARM平台进行新的编译,绝对的。但如果你是一个编译器,你可能希望它能正常工作。

如果你正在部署需要尽可能快并且只在一个特定位置(亚洲的一个特定实例)运行的块代码,你可以对它进行AOT编译。

如果你在某个特定环境中运行。当你对这个东西有很大的控制权时,你可能总是会指定很多平台信息。所以你知道,它永远不会改变,对吧?但就某种程度上来说,你是在一个CPU上运行你所拥有的东西。

接下来,运行时的工作是让CLR能够处理这个问题,这很有趣,因为他们开始将这些大型的ARM处理器部署到Azure中。对我来说,构建一个.NET应用程序并在普通的App Service中运行它,或者在一个Linux实例中运行它是一回事。但是现在我可以在ARM实例中运行它,假设它比其他实例慢20%到25%。我想知道这会对性能产生多大的影响?

你……不,是的。如果你使用的是普通的……

是的,你知道它会起作用。只是ARM的简单架构,它的处理结构……我显然是一个硬件极客。我想知道它是否真的会……性能更好,并且从资源消耗的角度来看更便宜。但你也还没有足够的时间来优化ARM,也许再过一两个版本,你的ARM优化就会令人惊叹。

好吧,这就是让事情变得完美的原因……

在版本中,对吧?只是为了让Rockstar能够在ARM上运行。

因为我一直……我仍然无法摆脱这种心态,好吧,我会……但是ARM意味着更低的功耗,对吧?这……这完全改变了。MacBook M2之类的产品不是ARM芯片吗?

目前是的,我会说它是更高性能的设置,对吧?因为这是一个超级ASIC,对吧?就像处理器、GPU、CBA和NPU一样,所有东西都集成在这个双芯片上,对吧?是的。所以……这就是他们获得很多优势的地方,这也是Dragonfly用他们的Ultra X做的,对吧?这个新的Windows on ARM平台就是这个过程。

是的,这是……这是我不怎么花时间的部分。但是……当你开始查看针对x64或ARM生成的汇编代码时,它相当大。但是有一些很酷的东西。我最近看到一些人做了一个实验,如果你使用某种工具进行代码补全,并且你比较x64和ARM,是的,然后你使用相同的代码,查看汇编代码是什么样的,它通常非常不同。x64有……

几十年的包袱。你知道它从8位到64位,再到32位,再到64位,而ARM只有32位或64位,它从根本上来说更简单,以至于Snowflake机器能够足够快地模拟x64,以至于你几乎注意不到它,功耗更高,但速度很快。

是的,对于那些对此感兴趣的人来说,绝对应该……首先,动手实践,做一些深入的.NET代码反汇编,我相信你应该看看一些,但也要跳到一些现有的深度学习应用程序中。

做一些基本的东西,做一个……是的,做一个控制台应用程序,然后查看IO,然后开始……然后开始点击并查看一些汇编代码,不是为了理解它,而是为了查看它做了什么工作,看看它如何运行。如果你……如果你想学习这一层堆栈,我不会说它很容易,它并不容易。现在它对你来说很容易获得,对吧?

如果你想选择进入堆栈的那一部分,去做吧,就像你可以那样做。现在,很长一段时间以来,要弄清楚这些东西对你来说是不可能的。现在有更多资源可用。

这是一个非常简单的工具,只需编写一些代码,看看输出是什么样的。嗯,上周末我花了两个小时,我做了一个基本的应用程序。我有一个基本的OS写到控制台,对吧?就像我创建了一个引导加载程序,它在QEMU中启动了一个模拟器,并在屏幕上显示“你好世界”,对吧?

那就像我可以按照网上的教程,做到启动硬件的地步。这太疯狂了。太棒了。太不可思议了,不管你想参与计算世界的哪个部分,现在材料的可用性都令人难以置信。所以,即使我们之前说过这在现在这个时代可能会让人害怕,也许我不应该成为开发者,但另一方面,伙计,如果我在今天成为开发者,会有多少东西可用?

还有更多的事情要做。但这就是工具发挥作用的地方。你知道,两年前,构建云原生.NET应用程序很难,对吧?Aspire可能还年轻,但现在更容易了。是的,它只会越来越容易。

是的,作为平台的优势在于,我们,我的团队,会不断关注每个人必须构建的应用程序类型。我们如何才能让它尽可能简单?然后,随着.NET的发展以及需要构建的应用程序类型,我们会让它变得更容易,或者至少在未来一年内我们会这样做。是的,我为自己和我的团队设定的挑战之一是,什么是现代化的持续发展?

是的,没错。

真的。就像,如果我现在要开始一个项目,我会怎么做?如果我有一个全新的项目,我会说,“这次我们要做对”,那么我认为我会构建什么,以及如何让您尝试构建的东西变得很棒,而不会让那些没有机会这样做的人感到沮丧,对吧?因为你也需要,这通常对我来说影响更大,以帮助那些需要转向新的、不同的架构的人。

考虑两个步骤。首先,什么是完美的绿色领域迁移?然后,我如何使用这些工具来弥合我的棕色领域?

没错。你会看到Aspire试图打破这一点。是的,几年前我们不知道什么是理想的绿色领域空间,对吧?嗯,仍然有很多领域需要在这个整个领域中去探索。

那么,.NET 9之后你接下来做什么?

.NET 10是什么?我猜想10是9后面的下一个数字。

你知道,我的感觉是,在我们跳回之前,我们应该休假之类的。

我有点……

一堆……

东西……

就像……

下一个版本中没有包含的东西。

所以有很多团队,很多人现在正在处理他们的积压工作。所以现在有很多积压工作梳理正在进行,就像我们想要提出的其中一件事情。

在下一个版本中,Aspire需要在10之前做一些事情,所以我们需要做一些向后兼容的事情,比如让我们添加一些全新的特性,比如我们刚刚添加对大型语言模型的支持,这样我就可以发布,我必须在下一个版本之前发布,是的,有很多这样的事情。有很多这样的问题,我们现在想把哪些实验带到前面?我们想要哪些?很多这样的决定必须做出。

然后是一些需要解决的错误和缺陷。

在所有平台上都有很多工作,对吧?所有这些都需要持续的改进和持续的关注才能变得更好。现在Blazor已经好多了,好得多了。但是Blazor实际上直到最近才真正成为一个完整的堆栈,几乎任何框架都是一个web堆栈。所以那里有很多工作要做。

我们一直在讨论Blazor中连接的可靠性,并试图确保电路和连接等等更加可靠、更有弹性,你可以这样做,例如,以及该团队有很多积压工作,谁知道六个月后人们会需要什么?就像我需要人们,就像我需要大型公司今天敲我的门说,我们有一系列的.NET应用程序,我们希望它们今天使用下一代Blazor。你有什么?所以我需要弄清楚如何回答这些人。是的。然后还有所有这些东西,每一周都不一样。

非常酷的问题。是的,我仍然……

问题,但它们很酷。没有多少其他的工作能让我听到有人跟我谈论AGI、CLR和运行时之类的东西,以及AI和我们如何做云原生之类的事情。而且都在……

一周内。

我可以做到。

Glen,这些都是很棒的东西。感谢你抽出时间与我们在一起。哇,多么棒的……多么棒的谈话。

谢谢。祝大家愉快。

我们下次在.NET Rocks再见,亲爱的听众。

.NET Rocks由Franklin.NET赞助,由Pop Studios制作,Pop Studios是一家全方位服务的音频、视频和后期制作公司,位于康涅狄格州新伦敦,当然,也位于云端,网址为pwop.com。

访问我们的网站ADOTNETROCKS.com,获取RSS订阅、下载、移动应用程序、评论以及访问完整的档案,追溯到2002年9月录制的第1期节目,并确保查看我们的赞助商。他们让我们能够继续运营。现在就去编写一些C#代码吧。

有趣。

那天我度过了美好的时光。