use*_*484 11 razor asp.net-core blazor
我很困惑Razor组件和Blazor之间的区别是什么,哪个更好,在最新版本的.NET Core 3.0 Preview 3中,将那些添加到Razor Components中
剃刀组件的改进:
Chr*_*nty 21
基本上有3个部分需要理解。
剃刀组件
这是早在2018年7月为服务器端Blazor的第一版创建的核心,进程外组件模型的名称。
Razor组件是框架的核心,包含以下所有内容。
服务器端Blazor
这是在ASP.NET Core上运行的Razor组件的服务器端托管模型。此版本在服务器上托管Razor组件模型。它使用小的运行时将UI事件从浏览器发送到服务器。一旦由Razor Components处理,所有UI更新都将从服务器发送回浏览器,并且运行时将处理DOM更新。所有这些通信都是通过SignalR连接进行的。甚至JS互操作调用都是以这种方式处理的。
客户端Blazor
这是Razor组件的客户端托管模型。
在此模型中,所有内容都托管在浏览器中。.NET运行库是编译为WebAssembly的Mono。最重要的是Razor Components,然后是应用程序。
从理论上讲,此体系结构的优点在于,任何添加到Razor组件的功能都应可用于两个托管模型。尽管实际上,并非总是如此。
有什么更好的?
这很大程度上取决于您要做什么。
客户端Blazors最大的缺点是其下载大小。仅此一项就可以排除许多开发人员。下载很容易就变成了多个MB,如果有人尝试在连接速度较慢的移动设备上查看您的应用程序,他们将不会有很好的体验。但是,值得注意的是,第一次下载后会缓存很多内容,因此后续加载可能只有几百个kb。
客户端Blazors调试经验现在也很原始。这意味着作为开发人员进行开发有时可能会充满挑战。
服务器端Blazor在调试方面具有更好的开发人员经验。该应用程序的下载速度更快,并且只有几百个kb的大小,然后才能进行任何缓存。
缺点是潜在的可伸缩性。但这在很大程度上取决于您期望的并发用户数。由于此模型使用SignalR,因此您的应用将对并发连接有最高限制。但是,您可以通过插入Azure SignalR来管理此操作,以允许与您的应用程序进行大量连接。
最终,Razor Components的两个托管模型还有很长的路要走。尽管可以说客户端Blazor处于更好的位置,但两者的认证故事还处于初期。路由引擎仍然受到限制,表单和验证仅在其首次发布时才有,并且仍有工作要做。
要记住的另一件事是,可以很容易地在模型之间进行交换。因此,无论您做出什么决定,都不会受其束缚。有时甚至会在框架中内置执行此操作的方法,因此您现在所做的一切都不会浪费。
如有任何疑问,请询问。但我希望这会有所帮助。
Isa*_*aac 12
Razor组件是一个框架,可用于创建SPA Web应用程序。它分为两种执行模式。当Web应用程序在浏览器上托管并执行时,它称为Blazor。Blazor应用程序用C#编写并编译成.NET程序集。它们由Mono运行时作为.NET程序集执行并在浏览器上运行,而Mono运行时本身已编译为Web Assembly。
第二种执行模式是服务器端。也就是说,您的Web应用是在服务器上执行的,而不是在浏览器上执行的。请注意,此处的运行时环境不是Mono Web Assembly,而是Asp.net Core运行时。这被称为服务器端Blazor,但也使用了“ Razor组件”一词,从而使困惑感到困惑。原因是历史性的:一开始,浏览器中仅运行Blazor。但是随后想到了一个Web应用程序可以在服务器上运行的想法,并且仅可以通过SignalR将差异发送到浏览器。在服务器上运行Web应用程序比在浏览器上运行容易得多,并且开发人员可以使用他在浏览器中无法使用的许多元素,例如调试等。由于这种可能性,Asp.Net重命名了Blazor框架作为Razor组件,您可以将其视为Blazor构建的超级结构。这就是为什么混乱。让我们强调一下这种划分:
剃刀组件-> Blazor(前端;浏览器)
剃刀组件->剃刀组件(服务器端Blazor)
我知道这是造成混乱的原因,但这就是...
关于哪个更好的问题,我只能说这完全取决于您的要求。这些执行方式中的每一种都有其优点和缺点。Blazor应用程序更适合作为公共网站在Internet上运行,而服务器端Blazor应用程序最好在Intranet上作为企业网站使用。
您显示的列表与Razor组件框架相关。目前,某些改进可能仅与Blazor有关,而其他改进与服务器端Blazor有关。只有一种方法可以知道哪种:学习剃刀组件。学习它需要时间,比Angular要少,尤其是如果您是.Net开发人员,但这仍然需要一些投资。
希望这会有所帮助...我会在以后进行改进,但是如果您有特定问题,请随时提出...
您完全有权利感到困惑,命名已经发生了很大变化,当您编写原始问题时,Blazor 团队最近将“服务器端 Blazor”重命名为“Razor 组件”。值得庆幸的是,此后已被放弃,请参阅下面的时间表以了解更多信息。
\n对于任何发现此处答案中的命名约定似乎与他们在旧博客文章中阅读的内容不一致的人来说,值得知道“Razor 组件”的含义随着时间的推移而反复变化。
\n这也可能对像我这样从一开始就使用 Blazor 并确信名称已更改的人有所帮助!
\n在预发布期间,命名发生了很大变化。感谢 Microsoft 和 Blazor 团队尝试提出清晰的名称并愿意在需要时更改回来。然而,这在较旧的文章中留下了混合命名约定的遗留问题,一些 Blazor 老手有时会使用较旧的命名约定。
\n截至 2020 年 9 月撰写本文时,Blazor 版本为 3.2,官方命名约定为:
\n当 Blazor 0.6.0 发布时,决定将服务器端 Blazor 正式命名为“Razor Components”。
\nDan Roth在 2018 年 10 月发布的 Blazor 0.6.0 实验版博客文章中讨论了这一点:
\n\n\n我们上个月在 .NET 大会上宣布,我们决定继续将 Blazor 服务器端模型作为 .NET Core 3.0 中 ASP.NET\nCore 的一部分进行交付。大约一半的 Blazor 用户表示他们\n将使用 Blazor 服务器端模型,并且在 .NET Core\n3.0 中发布它将使其可用于生产用途。作为将 Blazor 组件模型集成到 ASP.NET Core 的一部分,我们决定给它一个新名称,以区别于在浏览器中运行 .NET 的能力:Razor 组件。
\n
.NET Core 3.0 Preview 2 博客文章中的 ASP.NET Core 更新也对此进行了更多讨论。
\n可能是由于出现了混淆,服务器端 Blazor 的 Razor 组件名称已扩展为“ASP.NET Core Razor 组件”。Blazor 0.8.0 发行说明中提到了这一点:
\n\n\n服务器端 Blazor 现在是 .NET Core\n3.0 中的 ASP.NET Core Razor 组件 正如最近宣布的那样,服务器端 Blazor 现在在 .NET Core 3.0 中作为 ASP.NET Core Razor 组件提供。我们已将 Blazor 组件模型集成到 ASP.NET Core 3.0 中,并将其重命名为 RazorComponents。Blazor 0.8.0 现在基于 Razor 组件构建,使您能够在 WebAssembly 的浏览器中托管 Razor 组件。
\n
2019 年 4 月,Blazor 服务器端进入官方预览版,作为其中一部分,服务器端 Blazor 的命名被改回:
\n\n\n简化命名和版本控制
\n有一段时间,我们\xe2\x80\x99在某些情况下使用术语 Razor 组件,在其他情况下使用 Blazor。事实证明,这很令人困惑,因此根据大量\n社区反馈,我们\xe2\x80\x99决定放弃名称 ASP.NET Core Razor\nComponents,并返回名称“服务器端 Blazor”。
\n这强调了 Blazor 是具有多个托管模型的单个客户端应用程序模型:
\n\n
\n- 服务器端 Blazor通过 SignalR 在服务器上运行
\n- 客户端 Blazor在 WebAssembly 上运行客户端
\n\xe2\x80\xa6 但无论哪种方式,它\xe2\x80\x99 都是相同的编程模型。相同的 Blazor\n组件可以在这两种环境中托管。
\n
请注意,在上面的描述中根本没有提及 Razor 组件,现在我们有两种不同的 Blazor 托管模型(客户端和服务器端)作为将 Blazor 组件交付到浏览器的方式。
\nDan Roth 在接下来的几个版本中的 Blazor 和 .NET Core 发行说明中根本不再提及术语“Razor 组件”,直到.NET Core 3.0 Preview 9该术语再次以“Razor”的名称出现组件单元测试框架原型'。
\n到 2020 年 5 月,Razor 组件和 Blazor 组件现在被用作彼此的同义词,并且两种托管模型的命名也发生了变化。
\nBlazor WebAssembly 3.2.0 现已发布的博客对此进行了如下描述(我的重点):
\n\n\n然后可以通过不同的方式托管Blazor 组件来创建您的 Web 应用程序。第一种受支持的方式称为Blazor Server。在 Blazor 服务器应用中,组件使用 .NET Core 在服务器上运行。
\n
和...
\n\n\nBlazor WebAssembly现在是托管Blazor 组件的第二种受支持的方式:使用基于 WebAssembly 的 .NET\n运行时在浏览器中的客户端。
\n
如果是的话,那就容易多了……看起来“Blazor Component”确实会更自然。但不是,来自官方文档的组件部分:
\n\n\nBlazor 中的组件正式称为 Razor 组件。
\n
| 归档时间: |
|
| 查看次数: |
2262 次 |
| 最近记录: |