今年节日季,与宝马一起分享更多欢乐。十一月份购买每辆新宝马,我们将捐赠两百份餐食,通过“美国赈饥”组织帮助有需要的家庭。
过去七年,宝马可能已帮助为有需要的人提供超过一千万七百万份餐食。在您的帮助下,这个数字将继续增长。请访问您当地的宝马中心了解详情,或访问bmwusa.com/drivesandhunger了解更多信息。
com/drivesandhunger 今天。在宝马“驾驶与赈饥”活动期间,享受特别的优惠。
当你切换到Biko并节省你的汽车保险时,你感觉如何?这就像在一个星期四早上上班,心里想着“只剩下一天就到周五了”,但电梯里有人说“周五快乐”。然后你快速查看手机,发现今天实际上是周五。
所以,是的,“周五快乐”。电梯里随机的陌生人。“周五快乐”的确如此。是的,切换并节省Geico的费用就是这样。用Geico获得更多。
你喜欢如何收听?没有广告的.NET Rocks?简单。每月只需支付五美元成为赞助人。
您可以访问一个私有的RSS订阅源,其中所有节目都没有广告。20美元,我会寄给你一个特别的.NET Rocks赞助人马克杯。现在就注册吧,网址是patreon.netrocks.com。
嘿,猜猜看?这是.NET Rocks节目第1926期,哇,我是Carl Franklin,还有Richard Campbell。嘿,Richard。
你好,我是Stacy Cashmore,很高兴参与这次节目。
我们将进行一次愉快的谈话,但我有一段时间没和你聊过了。
Richard,最近怎么样?是的,我参加了Run Out,在印尼的一个名为“Dave.NET”的活动上做了一个演讲,然后去了Build Stuff,这是在立陶宛举行的Riga会议。
Build Stuff,Build Stuff。
是的,很有趣。你参加Build Stuff了吗?我没有。我讲故事,但那是我通常做的事情。你知道,我写了一个关于核能的新的极客演讲,这似乎非常受欢迎,因为现在所有科技公司都对核能很感兴趣。所以这个演讲很受欢迎。
他们需要为他们的AI供电。
东西,东西。是的,所以他们,他们现在,他们不能依赖电网。我只是想知道,朝着那种威廉·吉布森的赛博朋克方向发展,真的,你会知道,现在你的电力是通过亚马逊Prime账户获得的,是这样的吗?
我们所处的道路是……
另一方面,如果这些公司能够使小型模块化反应堆概念成熟,那可能会让整个世界实现碳中和。
每个城镇都可以拥有一些核设施。我认为“东西”应该是1926期节目的官方词语,1026……
六,“东西”是你想要的。你想知道1926年工业界有什么吗?1926年,第一次液体燃料火箭发射。
哇。
但超级酷。还有第一次跨大陆电话通话。
不是开玩笑吧。是的,开始。我不知道该对那件事说什么,也许接受它。你好。
你好,你能听到我吗?
你知道,“你好”这个词曾经是“hollo”,它不是人们用来接电话的词,它更像是一种解释,就像,你知道,发生了什么不寻常的事情。“你好,你好,你好”,对吧?是的,完全正确。
然后它变成了,我不知道是谁开始的,也许是爱迪生或其他人开始接电话说“你好”。无论如何,这现在并不重要。让我们开始吧,Better,没有框架。
太棒了。
还记得你得到了什么吗?所以当我们睡觉的时候,全世界似乎都从X转移到了蓝天。我认为……
这是一个入门包。我以前说过,这些新的社交媒体平台的问题是,没有人有时间再次建立社交关系图,就像“不,谢谢”一样,对吧?我认为Threads有一个优势,因为它借用了Instagram的社交关系图。
但是蓝鸟公司想出了这个入门包,你基本上可以把一些你认为相关的账户放在一个列表里,是的,这使得它对其他人来说很容易。所以我会从一个入门包开始,然后关注他们。所以就像有一个MVP列表和一个.NET列表等等。是的,所以我已经每天获得一百多名新的订阅者。
我也是。是的,太疯狂了。我的用户名是Carl Franklin,B、S、K、Y,你的用户名是Rich Campbell。所以Carl Frank,Rich Campbell,可能是,是的,好吧,那不是我的BKAF。我的BKAF实际上是一个GitHub repo,叫做awesome-bluesky,顾名思义,它是一个蓝天资源列表。很好,它有一些程序员的东西,但我注意到没有……
涉及C#、.NET代码的东西。
是的,但它们是替代客户端。有很多工具。有帖子管理器、迁移工具、提要标签和入门包。
所以它就像一个提要创建器,一个RSS提要生成器,叫做Blue Stream。这里有一些非常好的东西。所以是的,让我们开始吧。
好发现。好工具。好工具。似乎为懒人制作东西,现在媒体也开始转向蓝天了,对吧?
让旧版Twitter强大的原因之一是,你可以在那里首先获得新闻,而蓝天将接管这一点,但他们已经做到了,从五千万用户增长到两千万用户不到一个月。是的,所以这种突然的、令人震惊的增长令人兴奋。
我们的朋友们挂断了电话,所以我们在那里见。我实际上在那里发布东西,我没有在其他任何地方发布,只是为了尝试吸引人们过来并开始对话。到目前为止,效果非常好。
是的,太棒了。你有什么?酷。不。什么?学会爱。Richard,是谁在和我们说话?
上周节目的嘉宾是Jon Galloway。我们谈到了.NET 9,2025年,我们的朋友Jo Hiller留下了一条很棒的评论。他说Glen提出了一些我经常听到的事情,即使用LLM从你的代码生成单元测试。
理想情况下,反过来做更有意义,从阅读你的测试生成你的代码,否则你只是拥有验证你已经编写的bug的单元测试,这是一个很好的观点,除了,你知道,你编写bug的可能性有多大,你的测试将生成通过bug的代码,是的,啊,我认为反对这一点的主要论点是,我们大多数人认为编写单元测试很费力,而编写代码很有趣。所以,你知道,我们希望这些新的自动化工具能够消除我们软件开发中的繁琐工作。是的,但至于准确性,我认为这两种策略都不能提供更高的准确性,是的,对。
绝对的。所以Jon,非常感谢你。你是嘉宾。我知道你已经有一份Music Cobi的副本了,但如果你想要一份副本,我将把Music Cobi放在网站上,NA.com或Facebook或蓝天,因为我们会在那里发布节目,如果你在那里评论并收听节目。
我们会寄给你一份副本。几年前,正如我之前提到的,我正在制作Music2Code的第22首曲目,我甚至在我的蓝鸟账户上获得了一些早期反馈。所以期待一下。我不知道,我不知道什么时候,但我正在努力制作它,好东西。就是这样,正如我们之前所说,我们在X上待了很久。我们也在……我叫Carl Franklin。
攻击那个社交……
Rich Campbell,SDL,你可以在蓝天上找到我们,Carl Franklin,Rich Campbell,所以保持联系,你可能会赢……
东西。我不太了解整个迁移的事情,比如你真的想把你的帖子从Twitter迁移到蓝鸟。这对我来说很奇怪。我不……他们当然不会让你再次获得你的关注者,我不想重建我的社交关系图,但你知道,他们说这很容易。
没那么容易。这让我们今天来到了我们的嘉宾Stacy Cashmore,她是.NET Rocks的资深人士,她以前来过,也参加过一些活动,探索DevOps和仅限计划,并且是微软开发技术MVP。她从90年代中期就开始开发软件,并且自2009年以来一直在会议和聚会上发表关于改进我们软件开发方式的演讲,以及与软件架构师一起讨论技术问题。
她把时间花在帮助开发团队和整个公司持续改进技术工作流程方面,当然,也包括在工作之外作为一个团队一起工作。业余时间,她喜欢和她的老爷车一起度过时光、烹饪、弹钢琴(弹得很糟糕)以及和家人一起度过时光,其中一些事情包括在他们家里建造一个乐高模块化建筑城市。我不知道这意味着什么。我认为我们上次谈到过这个,但你也在写一本书,对吧?
是的,我只是在更新我的书。几年前我写了它,是关于在Azure上使用Blazor入门,我们得到了帮助,有人问我是否想更新它,但我建议他们推迟一下,部分原因是我的健康状况,我没有时间及时完成它。但它也要在10月份左右发布.NET 8。
让我们不要那样做。让我们等到.NET 9。没错。
所以,它们并没有太大区别,对吧?
像AB一样好。不。是的,我发现唯一不同的是Azure函数的项目模板有所不同,你不能简单地从版本8升级到版本9,里面还有其他导致问题的东西。所以我不得不修改我的个人网站。我创建了一个新的Azure函数项目,然后把所有东西都放进去。
否则,你会遇到问题。啊,所以我只是升级了客户。大型多处理器,从8到9很幸运,没有问题。当然,如果你只是将.NET 8.0更改为.NET 9.0,那并不能真正完成升级。你必须链式升级,你必须升级新的Get-Package,你知道,所有Blazor的东西,但你知道,这是一个很好的开始。
任何一天你没有陷入困境都是美好的一天。
绝对的。
所以你……
任何时候你陷入困境,你总是可以回到防火墙版本。
他们。回滚包括灭火器。
没错,只要你没有让它半工作,忘记进行本地提交,然后破坏某些东西。
但不知道是什么。是的,是的,现在你只需要给我Charles。
说实话,我从未做过那样的事情。
从未发生过。
所以,让我们说,也许你最喜欢的静态网站平台是带有其他函数的Blazor。
可能是Azure。我,我可能是一个商店开发者,我可以编写多种语言,但我可能是一个商店开发者,并且……
它,它只是让它变得容易。是的,当然。那么,你还有什么其他静态网站平台的经验,ARM或部落?也许他说,说实话。
由于我是一个商店开发者,除了运行一个WordPress网站(我认为这不算数)之外,我几乎没有使用过其他平台。不。
因为你远离插件,它们似乎很邪恶。是的,本周的WordPress插件安全问题。每周都会出现WordPress插件中的漏洞。
我坚持使用原生版本,只是在顶部添加一些东西让它看起来漂亮,就是这样,仅此而已。我没有时间或精力去真正弄清楚不同的平台。然后我碰巧在预览版时开始学习Azure Static Web Apps。我当时想,这太容易了。
尤其是在Visual Studio Code中。我发现Visual Studio Code模板非常容易。
它实际上只有三个步骤。砰!砰!砰!你就完成了。现在你只需要把它改成你想要的样子。
是的,没错。你让我觉得很奇怪,我们谈论的是Azure静态Web应用程序,然后你还谈论Blazor,这是最动态的东西。
是的,那……
我开始在演讲中经常收到这个问题。在德国,来自人们的问题,很多人只是喜欢这样,但有一些人非常有争议,对吧,我不知道……
有什么好争论的。Blazor有两种版本,WebAssembly在浏览器中,以及服务器端Blazor。这是动态的。
它不是JavaScript模板。它不是静态的。它就像Miles的审美观。文件在服务器上是静态的。然后浏览器处理它们,谁有一个网站,这些天没有JavaScript……
是的,我的意思是,另一种说法是,你不会用静态文件消耗任何计算资源。它只是有效地进行文件传输,而不是在后端进行计算来生成该文件,即使你每次都要生成相同的文件。
客户曾经问我,你能用JavaScript编写这个吗?我说,我不能从我住的地方编写JavaScript。他们说,你住在哪里?我说2024K。
四K。
是的,是的。
所以我写了一些Angular和Vue静态Web应用程序,当我被要求在会议上做演讲时。它不是,对吧?我认为当你不必做任何事情时,这真的很好,天气只是起作用,所以你必须做的是确保你的前端起作用。
Copilot既有用又烦人。它会让你走上正确的道路,然后它会犯一个小错误。然后它就……
漫无目的。我发现Copilot的建议有时很精彩,有时就像,你知道,Clippy,“嘿,你想这样做吗?”不。
怎么样?你想这样做,对吧?不,闭嘴。
是的。
走开。
我正在尝试帮忙。不是真的。是的,我正在尝试帮忙。是的,我喜欢没有弹出窗口的想法,只是当我有一个问题或我试图弄清楚一些事情时,能够把它放在里面,就像我把它放在搜索框里一样,是的,也许文本有点不同,并且在某些方面知道只是使用搜索,只是更精明一点,当它对你在做什么很精明时。
我不能,而不是自动生成这样的阴影建议,我把IT带到一个类似于Kestrel的控制台或其他我从未使用过的东西。
使用它会很酷,因为……
我只想要它,当我想要它的时候。
好吧,我的意思是,新的Copilot Plus PC有一个Copilot按钮。
是的,他们还有很多其他烦人的东西,比如全页广告。你听说过吗?
这是非欧洲的事情吗?因为你看,如果运气不好,就会有它。我不得不更换我的主要笔记本电脑,好的。
我从Asis那里得到了一台Lunae,一台漂亮的小机器。是的,我非常喜欢它。它有……
Copilot按钮,是的。
但实际上它所做的只是打开一个窗口,就像Copilot的网络版本。所以,呃,去那里做这件事是可以的,但这很好。只是点击它就可以了,但没有额外的努力,是的,我们不能在一些窗口上做广告……
在这里,是的,我可以……
成为一件事情,是的,我认为这可能是一个GDPR,就像阻止它一样,感谢我的馅饼洞试图把它们从IT中清除出来。但是,有趣的是,在Visual Studio中点击那个键并启动它。是的,我认为它不会那样做,但这将是因为你目前可以改变它。所以,无论你是否能做到这一点,都有意义,也就是说,当我点击这个键时……
当前打开的是什么,运行相应的程序,或者你知道,如果我在美国没有全页弹出式广告和窗口,整个美国经济将会崩溃。
真的,你知道,美国,我们可以少一些烦恼吗?
少一些烦恼。但你知道……
最近用馅饼洞过滤器,这意味着一个页面弹出并显示为空白。
Richard,你会在这个节目中添加一个指向馅饼洞的链接吗?
所以我做了一个硬件。成为本地DNF服务器。是的,是的,是的。
你必须运行Linux,但它也是一个很好的过滤器……
用于这样的事情。只需要运行Linux。就是这样。是的,人们想要它。我相信他们听说过它,就像新房子、新的配置、新的Guzman一样。我有一些树莓派,它们是我的本地DNF服务器。
伙计,一些新的树莓派真的很快。
它们很健谈,啊,是的,你知道,你不需要那么多来做DNF,但是现在这相当不错,我认为你无论如何都会做很多事情,我们正在谈论……是的,静态页面,对吧?我的意思是,关于静态页面的另一件事是,你可以本地粘贴,例如,在会议上进行演示,当互联网崩溃时,无论发生什么,你的演示仍然有效,是的,并且……
我想……
说我一直在使用代码空间进行我的演示。
我……
喜欢……
好吧,我应该能够假设有一个互联网连接……
当你这样做的时候,是的,我从未说过欧洲,所以我总是用我的……我的网络共享。我有大量的数据,只要我有信号……
在大陆内部。
并非总是如此,但是我总是本地运行,以防万一,是的……
只要我们能……
做到,如果互联网正常工作,这就是你将在互联网上看到的内容,它应该工作。
我现在肯定做过这个演讲。这是真的。是的。你喜欢代码空间的什么?
我喜欢代码空间的地方,我仅仅触及了它的表面。我知道它能做的远比我使用的多,但这正是我喜欢它的原因,我不必把任何代码下载到我的机器上,所以我只需要进入我的任何一个GitHub存储库,启动代码空间,我就可以转换所有内容。
它也很好用作重置。例如,如果你做了一个特定的演示,然后你知道当你完成时,你可以说,好的,恢复到之前的状态,现在你有一个隔离的地方专门用于该演示。你不会把所有东西都混在一起放在你的机器上了,现在我们已经有一段时间了,更多的隔离更好。
所以我有一个关于这个问题的问题。当你……当你处于那个代码空间环境中并运行它时,它会在代码空间中运行一个浏览器,还是会使用你的本地……
浏览器?如果你试图在代码空间中运行某些东西,它会在代码空间内部启动服务器。然后它会将该端口转发到外部,然后你就可以选择。你可以选择转发它,默认情况下它是受保护的。因此,你必须登录才能访问该公开端口,或者你可以将其公开,如果你想让其他人看到它。
这很有趣。你可以选择吗?
它99%的时间都能工作。
所以它不太像虚拟机,它有点像混合体,是的……
云端的Visual Studio……
然后你可以决定你想在哪里运行你的浏览器……
是的,一旦我离开,它就是一个……它只是一个……它是一个Docker容器,是的,你连接它,好的,它不是很棒吗?我们今天拥有的不同技术。你可以……它只是一个容器,在云中的某个地方启动,我实际上喜欢……是的,一切都会自动发生。
请,然后它太棒了。好吧。
我的意思是,这个东西最初的宣传是,你有一个新的开发者,而不是让他们花接下来的两天时间来构建那台机器并试图让它达到某种状态。这是你的凭据,或者你已经有凭据了。我从未给你公司代码空间的访问权限。你有一个可以工作的预配置环境。你准备好后,你今天就可以开始编码了。
此外,还有一个技巧,你知道,你签入你的代码,然后你在其他地方有一个该代码的另一个克隆仓库。你获取该机器上的最新版本,下载最新版本并运行它。这意味着它是一个有点更多的循环,但我使用过这种技术来解决诸如macOS和Mari程序之类的问题,你知道……
你知道,在你的iPhone上运行……
那种事情对我来说从来不管用,我只是要运行它,使用后端,对吧?但我不想在后端开发……
它。
不。所以静态网站,让我们谈谈什么样的应用程序适合静态网站。当然,静态网站是可以分发的,你可以……你可以无需服务器地分发它。
它是一个无服务器应用程序,所以你可以使用CDN,你知道,人们会更快地获得它,因为它更靠近他们。但是,如果它是一个WebAssembly Blazor应用程序,比如说,你仍然需要下载WebAssembly位。你仍然有……
下载WebAssembly的开销……取决于你的应用程序是什么,取决于这是否真的是一个问题。是的,我看到很多人将它与Facebook之类的进行比较,获取你的Blazor应用程序运行所需的下载比获取Facebook本地运行所需的下载要小。是的,我是。
这有点……
有前景。
它不只是对它有好处,对吧?使用Flash……是的……
不错的Facebook。但我认为任何可以断开连接的实际应用程序都是有用的。因此,将大量处理转移到客户端浏览器,诸如此类的事情,我认为这是这些……
静态Web应用程序的最佳方案,对吧?
对于我的网站来说,我所做的事情,因为我的个人网站也是建立在一个Azure静态Web应用程序上的,当然,因为我构建它来玩。糟糕的主意。不要这样做。
我写关于这项技术的书,但好的鼻子……
不要使用它,不要。你是做什么的?你做什么?任何需要SEO的东西都是绝对的……
需要SEO的东西。
所以搜索引擎……
优化。是的,不。它可能是一件糟糕的事情。
我从上一家公司的营销人员那里学到,他们……
总是谈论……
这对SEO来说很糟糕,真的非常糟糕,什么都没有,对吧?是的。所以问题是这些东西在浏览器中运行。所以当爬虫进来时,它们看不到。如果……它们只看到一个空页面。
这是旧的Blazor客户端渲染问题。是的。
好吧,预渲染在Blazor WebAssembly中有效,但前提是你有一个执行预渲染的服务器。
而你没有在静态网站上。他们正在将其引入Next.js的公共预览版中。是的,我还没有玩过它。我无法告诉你它有多好,因为我不怎么用Next.js,但这应该可以缓解该语言的问题,但是其他所有东西,除非你正在提供一个真正的静态应用程序,使用纯HTML,你可以从这些资源中做到这一点。
我现在想知道,是的,不,没有SEO的解决方案。我的意思是,有一个伪装的解决方案,你可以手动创建一个index.html文件,并以某种方式想办法将其作为你看到的第一件事。但是SEO是一个真正的问题。
而且这些SEO算法对欺骗数据非常敏感。所以他们真的,他们非常分析你实际上在页面上显示了什么。你不能隐藏任何这些东西。他们会因此降低你的页面质量。所以任何聪明的方法最终都会被排除在搜索结果之外。
所以你处于这样的境地:你不需要SEO,可能是因为你知道这是一个企业对企业应用程序或内部应用程序,但你想要CDN的分发,并且你想要……它的易用性。我想除了分发之外,它最简单的地方是什么?关于静态网站的好处是什么……
你在一件外套里得到的东西的数量。
无需下载……更少的……
文件被下载。所以我从这些函数开始,它附带的函数,然后升级到什么?你可以自带函数,你可以自带App Service,你可以自带APIM管理器作为你的容器应用程序,你可以通过相同的资源连接它们,并访问你在Azure静态Web应用程序中获得的所有身份验证,但使用你自己的后端。
所以它开始增长。现在你有了数据API构建器,它目前正在改进,我一直在玩它,因为这是我正在撰写的书的当前章节。这是新版本书籍的新内容。
这再次非常酷,你可以通过你的Azure静态Web应用程序访问你的数据。你可以以任何方式在Azure静态Web应用程序之外设置数据API构建器,但这仍然是第二个资源。而这只是将所有内容都包含在内,并使部署更简单一步,是的,他们只是在里面放了很多东西来使其有用。
我认为我上一家公司绝对会喜欢的功能之一是能够将片段注入你的应用程序,这样你就可以设置每个页面都会再次加载特定的JavaScript或特定的HTML片段,我将其放在标题中或放在正文中,无论你想要放在哪里。在我的上一份工作中,这总是噩梦,因为它总是变化。
这总是营销和产品之间的一场争论,谁来占用开发人员的时间?因为我们最终……我们想,为什么你要花时间做这件事,能够把它直接放在资源本身中。它只是注入它,有点把它从我们开发人员手中拿走,并给予……我不会说自助服务,因为我相信营销人员不想玩弄需要它的东西。但这使得它变得简单得多,然后他们无论如何都会抱怨它很慢。
但这无论如何都会发生。真正的问题是,它什么时候会破坏某些东西,以及有多严重?
是的,我喜欢无服务器平台的一点是,调试和构建开发体验非常简单。是的,是的。很容易弄清楚事情,很容易维护,你知道,不需要API层。
你知道,你可以使用管理器。你可以使用所有不同的数据模式。这很好。但最终,你的所有东西都在服务器上运行。所以对于任何类型的WebAssembly应用程序,你都必须构建这些API层,并且你必须确保它们是安全的。
但这安全性又是你开箱即用的东西。
这会启动它吗?
Azure 静态网站是如何发展的?Carl 和 Richard 与 Stacy Cashmore 讨论了她与 Azure 静态网站的工作,包括她即将出版的书籍的更新!Stacy 讨论了如何适应最新版本的 .NET,利用 Blazor 的一些新功能,以及新的 Azure 静态网站功能,包括新的 Data API Builder。对话还探讨了一些需要注意的问题,例如 SEO 方面的挑战以及处理身份验证和授权策略。</context> <raw_text>0 是的,当然可以。除了如果您想访问用户在 API 内的信息外,您还需要执行某些操作才能从传递的标头中获取身份验证信息。我有一个 AA 包用于此。实际上,我会给你一个指向该包的链接,它可以帮助你访问所有这些信息,包括 Blazor 和 Interop 函数中的所有信息。但实际访问 API 的所有操作都由你的静态网站为你处理,因此你可以设置不同的路由,并且可以为不同的 HTTP 动词设置不同的访问权限。所以,你知道,任何人都可以读取,但只有特定的人可以写入,这是你可以轻松为你的应用程序设置的东西,无论是数据 API 还是你的函数 API,你都不需要把它放到你的实际代码中,这可能会引起一些争论,几年前我在一个技术会议上进行过讨论。有人正在做一个 Azure 静态网站的演讲,他做了所有自己的身份验证。
是的,是的,我当时就笑了。
我问他为什么这么做。他这么做的原因,我认为我不会像他那样做,但他有充分的理由。如果他把所有东西都放在配置文件里,他该如何测试呢?他如何测试配置文件是否正确,如果他装饰他的应用程序,他可以在此基础上进行测试,并确保一切都是安全的,而不是将这些配置放在不同的位置。
是的,直到你需要更改安全配置文件,对吧?
我们稍作休息,稍等一下,我们会在这些重要的信息之后回来。提醒一下,如果您不想听这些广告,您可以获得无广告订阅,请访问 patreon.com/netrocks,每月只需 5 美元,您就可以获得无广告订阅。嘿,您想加快在 AWS Lambda 上的无服务器函数的速度吗?现在,您可以使用 Lambda Snap Start 减少 .NET 函数的冷启动时间。Snap Start 可将启动性能从几秒钟缩短到最低亚秒级。
了解更多信息,请访问 aws.amazon.com/lambda/net。注意 .NET 开发人员,正在寻找处理电子文档处理的终极 SDK 吗?认识一下 TX Text Control。TX Text Control 是您在 .NET 应用程序中无缝生成 PDF、安全电子签名和高效数字表单处理的一站式解决方案。让您的产品拥有强大的文档管理功能,提高生产力,并为您的客户提供一流的解决方案。它受到全球开发人员的信赖,包括我和 Richard。TX Text Control 是一个能带来改变的 SDK。访问 txtextcontrol.com 查看在线演示并亲身体验。
我们回来了,继续。
Net Rocks,Karl Franklin,Richard Campbell 和 Stacy Cashmore。大家好,我们正在讨论静态网站,特别是 WebAssembly 和静态网站。你之前提到了一些东西。我只是想确保大家理解,你说其中一个好处是所有东西都在一个资源中。这意味着在你的 Azure 函数中,它为 WebAssembly 提供服务,你也可以在 WebAssembly 可以调用的端点中,做你通常在 API 项目或多个控制器中做的服务器端操作,直接在静态网站中。
是的,你直接在静态网站中做。你所做的是设置不同的 Azure 函数。我的网站项目包括客户端应用程序,一个用于所有通信模型的共享项目。
然后是你的函数项目,它包含我需要访问的所有 API。
对吧?因此,因为它们在同一个资源中,所以你不会遇到跨边界问题。
而且你不会有成本问题,因为这不再是一个问题了。嗯,它看起来像这样,因为这仍然是两个资源导致的,当你深入研究这个东西时,它仍然是静态文件,它在你的函数下提供服务。是的,但它在上面加了一层魔法,让你不必处理这些。它为你完成了,你不需要打开任何端口。默认情况下,它就能工作,这非常好。
非常诱人。
是的,我必须说,这部分非常有趣。即使在本地运行,你也有一个 ACI 模拟器。这是一个节点服务器,它模拟 Azure 静态 Web 应用。
这将是你在本地开发时的接口。因此,你运行你的前端,运行你的函数,然后运行这个节点应用程序,将其指向两者。这会给你另一个端点,你可以用它来进行测试。
它会根据需要将其路由到相应的端点,以便获取信息。现在,它甚至包括 Data API 和 AG Grid。因此,你甚至可以在本地编写你的调用并根据你的数据模型检查它们。
这是它的一个卖点。这是一种更可测试的构建 Web 应用的方式。是的,现在你回到你的同事那里,他因为可测试性而构建了自己的身份验证实现。你到底在做什么?
是的,我认为他会为此进行集成测试。你可以用不同的方式找到它。
是的,自己构建身份验证闻起来像蓝纹奶酪。
就像臭掉的蓝奶酪一样。是的,你自己的算法。我的意思是,会有什么问题?等等,我想编写我自己的垃圾收集器。这是一个好主意。
对不起,对吧?我自己的数据库。
够吓人的了。我认识一些走过这条路的人。
哦,当然。是的,早些时候,我也是其中之一。我从未走得太远,但我仍然喜欢编写我自己的网络协议。
但我知道有人这么做过。这已经足够了。不,你不需要。我只是懒。
如果有人已经构建好了,我可以使用它。
然后是别人的问题。
我可以相当肯定。
它会工作。它有 10,000 个五星评价。好的。
是的,为什么有 15 种方法可以做到这一点?我们应该坚持使用某种标准。有 16 种方法可以做到这一点。经典的 XKCD。
是的,是的。
就像,不,使用现有的那个。关于 15 种方法的好处是,至少你可以选择一种。
令牌环的成员。有人见过令牌吗?我把它弄丢了,不知道去哪里找。
好的,你知道,表面上令牌环很有意义,但在实践中却很糟糕。你知道,有时你会丢失令牌。
我认为我很幸运,我足够年轻,可以避免这种情况,因为我们修复了它。
我们通过加快速度解决了网络中的冲突检测和避免问题。是的,我们没有像以太网风暴那样的东西。它只是一个国际风暴。有点像特里克。
我们这里是不是在进行 Azure 故障竞赛?
怎么样,不止一个人试图通过网络访问数据库?
万圣节已经过去了。你不能回到万圣节。
这有点像最伟大的。
网络故障就是硬件故障。不,是的,我当时正处于我们拥有以太网的时候。在 RJ45 广泛使用之前。
康卡斯特版本。
我被要求在新大楼里设置网络,我以前从未做过,结果把电缆剪短了一半,它们都工作了,直到有人碰了电脑,然后它就断开了连接。
我不是。
一周内办公室里最受欢迎的人,我们到处找原因,是的。
你知道,别编写你自己的加密协议,别自己做电缆。
别做那些事。别,别,这不是,这不是,这是一个已经解决的问题。我们生活在 2024 年,不能那样做。
是的。现在好多了。
我们应该讨论一下静态网站的一些缺点吗?是的,一些你需要注意的事情。
你需要注意的事情,首先是之前说过的事情。确保你不需要任何 SEO 或内容优化,对吧?确保你正在做的事情是你真正能够处理的。是的,只是没有谷歌搜索结果。是的。
你知道,对于人们通过搜索找到这个网站很有帮助。你会给他们一个链接。
就是这样。实际上,如果他们可以通过搜索找到它,你就有问题了。
不是未来。
对吧?所以,我认为这是最大的缺点之一。当然,你的函数总是存在冷启动问题。是的,是的。我认为如果我看看我的网站,因为它不是世界上访问量最大的网站。
犹豫。
有时你进去后,就像你需要等待几秒钟才能让函数找到东西并发生事情。
现在,你可以让它一直保持运行吗?如果你这样做,这会不会有点违背你的初衷?
你可以让它一直保持运行吗?我认为这不会违背初衷,不会影响你的函数,因为我相信微软现在已经习惯了人们以这种方式滥用 Azure 函数了。
但这会增加你的账单。
但是你需要第二个资源,是的,因为它在一个标准的 Web 应用中,你只有 HTTP 函数。所以,如果你想让某些东西在后台运行,那么你需要创建一个第二个资源来执行此操作,然后访问它。
并让它保持运行?哦,好的。所以,如果你,现在 Richard 可能说得对,但我还是想提出来。如果你确实有第二个东西,比如一个静态 HTML 页面,即使它是服务端渲染的 Blazor 或类似的东西,它会首先显示,然后会将你路由到你的静态。
Web 应用。
也许在它有时间启动之后。我不知道,这有可能吗?有人尝试过这种小技巧吗?
我知道 Jeff 对于 ClipP 有一个很棒的机制,它在实现上非常复杂,听起来像 Jeff。
他使用了前端。
门户,如果一个机器人访问他的网站,它就会被重定向到一个非常小、非常便宜的应用服务,租用服务端渲染的 Blazor 服务。很酷。我说它甚至可能只是 MVC,但我得到了非常最小的结果,看起来不太漂亮,是的,相同。任何不是机器人的访问者都会被重定向到静态 Web 应用,在那里他们会获得完整的体验,对吧?Jeff。
我们应该进行一次对话。
这很酷,听起来像是一次很好的对话,但只是做了一些聪明的重定向。我不知道我们是如何发现这些是机器人的。
这是一个棘手的,但我不知道。但他在我组织的万圣节静态 Web 应用会议上发言,他为我们做了总结。他给我们讲了。
ClipP 的故事,是的,我认为它现在已经消失了。对。
我做了。这就是故事的结尾。不幸的是,它是 Sam,一个非常受欢迎的网站。我不会替他讲他的故事,但是的,它是 Sam。
你知道什么会是一个,一个伟大的故事,它肯定属于 .NET Rocks。
绝对是的,我不会试图现在就做到这一点。
绝对推荐,但不够。
所以我在这个国家待得太久了,我偶尔会说错话。
现在这已经足够接近了。
但我认为这个故事也触及了你遇到的另一个问题,那就是它对它所做的事情非常武断,因为它是一个 Web 应用程序的服务器,这就是它,它不是一个微服务。它不是一个完整的架构。这是你的应用程序,对吧?你可以与后端的微服务通信,你可以做所有这些事情。
当然。但是你的 Blazor 是否通过服务进行调用?
是的。所以,你把它传递给它。你确定你的函数是否会将事件写入事件总线,然后在后台发生,但在你的静态 Web 应用中,你仅限于 HTTP 函数。是的,我认为如果人们认为我喜欢这个,我可以编写消息,我可以为这个处理做一些事情,这可能会成为他们的一个问题,就像你可以,但不是在这个静态 Web 应用中。
你必须把它拿出来。你可以调用它。
在外部调用它。是的,你可以使用,我认为是结果,对吧?你可以进行流式传输。你可以从你自己的端点上传。
是的,我相信你可以这样做。
如果它是 Blazor,你可能可以使用 gRPC。你可以在函数中创建一个 gRPC 服务吗?
我认为我从未见过,但这并不意味着它不可能。
没有理由不能调用它,对吧?它只是浏览器可以。
进行调用,调用它是一种。但是像你这样的服务必须在后端注册一个服务,我不确定你是否可以这样做。并且作为一个函数。
是的,我认为这就是你的问题所在。
对吧?但是你可以在你的 Azure 函数中调用任何端点,然后使用 gRPC 客户端进行调用。我认为你可以这样做,如果你有。
C#,是的,任何东西。
Azure 静态网站是如何发展的?Carl 和 Richard 与 Stacy Cashmore 讨论了她与 Azure 静态网站的工作,包括她即将出版的书籍的更新!Stacy 谈到了如何适应最新版本的 .NET,利用 Blazor 的一些新功能,以及新的 Azure 静态网站功能,包括新的 Data API Builder。谈话还探讨了一些需要注意的问题,例如 SEO 方面的挑战以及处理身份验证和授权策略。</context> <raw_text>0 你在 sea shop 中可以做的事情,你可以做,但任何技术你都会努力迁移到外部,是的,我认为另一个是,同样,真实性和他们说的是否有双面性?所以有两面性,其中一个好的方面。
我想你的单方面说法,我不知道。
这说得通。
Richard,一根钉子钉在墙上。
在 advantest 的这一边很晚了。
对不起,对不起。
但如果我的思绪现在一片空白,那是在哪里?
是的,不,我不是。
祝福或诅咒。
所以,关于身份验证的事情是,它同时非常容易和令人讨厌地困难。所以如果。
你只是,是的。
如果你只使用构建的东西,以前相当广泛,但随着对蓝鸟网站等内容的某些更改,它变得越来越小,因此你过去曾使用 Facebook 作为预览,我不相信它在消失之前曾经离开过预览。谷歌也一样。推特也一样。然后我应该站起来,使用活动目录。
是的,AD,对吧?是的,活动目录。不,对不起。现在是。
我正要说的。
是在门户中设置它,现在浏览它仍然显示 Microsoft 是你的活动目录。
当你选择类型时。
但这就是问题所在。你现在只有 get hub 和 intra。所以,如果你想要更多,或者如果你想要对它的完全控制,那么你将不得不自己动手。他们有。
在汽车身份中使用 esp 怎么样?
不,不。它只使用 easy auth 的实现。
有趣。
所以它将所有内容都放入 Blazor 客户端或 Angular 客户端中的客户端主体中。无论你有什么,你都调用一个特定的端点,端点将读取你的 bearer 令牌并返回你的声明主体,然后你可以在你的应用程序中使用它。
当你调用 API 时,它将一个特定的标头放入消息中,以便在你的函数内部你可以看到这个人是谁,或者这个人是如何进行身份验证的,这不是游戏。听起来是这样的,因为它确实进行了检查。我确实对此进行了一次检查。首先,我认为这可能很危险。但是,如果你将任何内容放入该标头中,它将在生产环境中被剥离。
嗯,好的,不是当你。
在 CLI 上运行它时,当你本地运行时,它会让你做任何你想做的事情,这最初让我感到害怕。但是,生产环境是安全的。
我的直觉是,我可能在公司环境中使用它,用于内部应用程序,但可以在外部访问,是的,所以是 intra,因为我想使用现有的身份。
在组织中,是的,如果你这样做,如果它不关心谁登录,那就没问题。第二个。
是谁登录的任何员工。
是谁登录的任何人,因为它总是对世界开放,好的。
那么我为什么要切碎所有。
你可以匿名访问该站点,那么你知道这个人是匿名的。你可以做任何事情,你可以进行身份验证。但是,然后你需要弄清楚,好的,这个人应该能够做任何事情吗?这就是你所想的。在那里你有很多,很多限制。在免费层,你只能拥有 50 个具有明确角色的用户。
所以不是 50 个角色。可以有一个角色,但只有 50 个人可以登录。
到免费授权视图。
在 Blazor 中,角色等于。
在 Blazor 内部。是的,在所有你所做的就是在内部设置你自己的身份验证状态提供程序,它从这个特定的端点读取信息,是的,你真的只有 50 个。所以,除了任何爱好之外,如果你需要使用授权,你将使用标准团队。你将使用自定义的。哦,是的,你可以轻松地集成到 entry、Twitter、Apple 等。
那有什么好处?需要多少查找?
我知道。欧元,是 8.5 欧元。所以猜测一个月?
是的,就是这样。TT。
它仍然不贵,不。我,当你考虑到某些事情时,我会逃避。
是的,并且有一个带宽上限,对吧,到一定程度的带宽,他们开始。
每 GB 收费 20 美分,例如 100 GB,我只是。
查看列表,它是每个订阅 100 GB,在免费层,它会在 100 GB 时中断你,在标准层和专用层(企业层)中,每 GB 20 美分,超过 100 GB。是的,pero 好的,但是然后。
你真的很糟糕。没那么糟糕。但是,然后你真的必须自己动手,当你必须设置一个明确的或,是的,是的,是的。现在我们。
回到,我只是想使用我已有的东西。现在我必须维护。
一个拥有特权的人员列表。如果你使用该系统并使用从该系统获得的用户 ID,如果你的网站发生任何事情,网络中断,所有记录都将丢失。
嘿,没有说会发生。
像网络更新。
如果你由于任何原因必须重新创建你的应用程序,对吧?然后,每个人获得的每个资源都明确地,是的,必须重新分配,他们将获得不同的用户 ID,所以如果我去我的网站并访问我的演示站点,则会有两个不同的用户 ID。
当然,当然。所以我现在需要构建到部署管道中,去获取所有安全上下文并重新填充它们。
是的,如果你这样做,请使用自定义的,因为它要好得多,我认为它使商店中的人们登录,我认为对于免费层中的某些事情来说,这很好。但作为爱好,它是免费层,是爱好层。如果你想在公司内部使用它,那就花钱吧。
对我来说,真正的问题是我必须去财务部门说,嘿,我将在这个应用程序上每月花费 10 美元,我们真的需要这个应用程序吗?我的意思是,当你谈论公司内部的网络时,可能会有数百个。
如果没有,他们会说,要么是这个,要么是咖啡预算,你想选哪个?
什么?咖啡?
是的,对吧?所以是浏览器存储。而且我知道 Blazor 的一件事是,你只能在启动时加密浏览器存储,如果你有一个可以进行加密的服务器。
但是有什么选择呢?我的意思是,如果我想加密某些东西怎么办?在浏览器存储中,我知道,每个 URL、每个用户、每个浏览器有 5 MB。
什么?我可以放什么进去?什么东西不能放进去?
你能加密它吗?我会假设,这只是一个假设,我会假设这取决于你正在使用的特定框架,因为当你使用浏览器时,它与研究天气无关。
对吧?啊,这都在浏览器存储中,是的,但它会在之间持久化,好吧,每次你访问该静态网站时,你会得到不同的 URL 吗?
不,是一样的。
好吧,对。所以你可以随时加载和保存序列化 JSON。
是的,你可以加载和保存序列化内容。
只是明文。
只是这就是问题所在。是的,只是明文。除非你能以某种方式加密它。
是的,除非你关心,我并没有。
意识到 Blazor 网站。通常,我不会加密它。
没有 Blazor 服务器,你可以对 Blazor 使用受保护的浏览器存储。不,它是明文。现在,如果你不关心,因为让我们面对现实,你正在使用 SSL。是的。所以唯一真正的危险是在磁盘上,在你的桌面上或你的手机上,有人可能会查看浏览器工具并查看你可能不关心的数据。
对吧?最终设备上的现金风险没有被加密。
是的,你可能不关心。所以这可能是保存状态之间的一种好方法,你知道,会话之间,缺乏更好的词语。
是的,我可以看到人们仍然在抱怨这一点。
当然,你是否拥有中断。
你自己解决问题?我记得做过一次 Blazor 演讲,但在 Blazor 刚开始的时候,它甚至还没有发布。我在纽约市的微软大楼做了一次演讲。我解释了它。
来自金融科技领域的人说,女人,所以任何人都可以查看在我的浏览器中运行的 C# 代码,这真的很不安全,我说,使用 JavaScript。然后灯泡就亮了,哦,是的,好吧。所以很明显,你的秘密酱料不会在客户端运行,你通过 API 调用来实现它。是的。
我们刚刚在办公室讨论过这个问题,因为我们正在构建一个客户可以使用的小部件,以便在他们的网站上进行复杂的计算而无需编码。我们进行了关于人们试图弄清楚如何保持其安全性的整个对话。我们还没有通过它传输个人数据。
这将是完全不同的牲畜,我们将有完全不同的身份验证。那将没问题。但是我们如何阻止人们在他们自己的网站上运行它,如果他们复制了代码,就像,好吧,你唯一能做的就是将主名称列入白名单,这并非万无一失,但这会阻止大多数人。但是如果我们也添加一个密钥呢?认为它在浏览器中。
那么你为什么要限制对某些有益的东西的访问呢?这是我的。
问题,因为它在后台使用我们的计算引擎,这就是我们赚钱的地方。
好吧,然后你将你的计算放在端点后面,对吧?
计算在端点后面。但是,如果你可以从客户端小部件调用它,它只是一个放在客户端的代码。
所以你授权了 API。
因为这就是我们将对涉及个人数据的任何内容所做的。是的,但是这些是,假设你是一名保险经纪人,你想让人们进行计算,以便他们可以访问你的网站,输入这些类型的数据并获得一些参考信息。
是的,匿名性,匿名性。
而这些是我们想要做的工具。你不会让人们登录才能获得它,因为一旦你说,嘿,创建一个帐户,你就可以做到这一点。
它会,是的,对吧。所以接下来我要说的是,在客户端和 API 之间放置一些 API 服务,以便你可以防止诸如你可以扼杀它之类的事情。
哦,是的,我们已经到位了,并且细微之处和其他一切都会在那里,我们将要做的就是。
主要的白名单计算。
对不起。
没关系。
是的,那种事情。是的,如果只是在买房前使用它,你不会触发计算,对吧,那种事情我们可以捕捉到。
这不是问题。更常见的是有人将小部件放在他们自己的网站上,而他们不应该这样做。不会发生坏事。
它只会使用我们的计算能力。感觉我们一直在谈论 Blazor 和静态网站等等,但时间到了。所以还有什么我们错过的,Stacy,你想提到的吗?
我认为我唯一想提到的就是厚颜无耻地自我宣传一下,明年请关注我的书。是的。
书籍更新。
书籍更新将涵盖我们现在讨论的所有内容,甚至还包括将静态网站作为基础设施。
作为代码,哇。
书名是什么?
这本书名为《开始使用你的静态 Web 应用:使用 Blazor 通过静态网站构建和部署动态 Web 应用程序》。
听起来很棒。
是的,谢谢你。你说得比我好得多。
谢谢。这限制了。
看,它就像。
一如既往。下次再见。是的。非常感谢你。
感谢你们的邀请。
好的。下次在 .NET Rocks 上与你联系。
.NET Rocks 由 Franklin's Net 提供,由 Pop Studios 制作,Pop Studios 是一家全方位服务的音频、视频和后期制作公司,位于康涅狄格州新伦敦。当然,在云端在线 APWOW.com。这是我们的网站,ADOTNETROCKS.com,用于 RSS 提要、下载、移动应用程序、评论和访问完整档案。
回到 2002 年 9 月录制的第 1 集,请务必查看我们的赞助商。他们让我们继续经营。现在,开始编码吧。下次再见。
所以我会尝试我的。
在这个假日季节,用宝马传播更多的欢乐。对于 11 月份购买的每一辆新宝马,我们将向 Feeding America 家庭捐赠 200 顿饭。
在过去的七年里,宝马可能已经帮助为有需要的人提供了超过 1700 万顿饭。在你们的帮助下,这个数字将继续增长。访问您当地的宝马中心了解更多详情,或访问 bmwusa.com/drivesandhunger 了解更多信息。利用宝马“驾驶与饥饿”活动期间提供的优惠。
当你切换到 Geico 并节省汽车保险费用时,你感觉如何?这就像在一个星期四早上上班,对自己说,再过一天就是星期五了,但电梯里有人说,星期五快乐。然后你快速查看手机,发现今天实际上是星期五。
所以是的,星期五快乐。电梯里的陌生人。是的,确实,与 Geico 切换并节省费用就是这样感觉。用 Geico 获得更多。