首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >剃刀组件与Blazor

剃刀组件与Blazor
EN

Stack Overflow用户
提问于 2019-03-10 18:51:29
回答 2查看 5K关注 0票数 15

我搞不懂剃刀组件和Blazor组件有什么不同,哪个更好,在最新版本的.NET Core3.0预览版3中,将这些组件添加到剃刀组件中

剃刀组件的改进:

extension

  • Endpoint Libraries

  • Improved event handling

  • Forms &validation integration

  • Prerendering

  • Razor Libraries

  • Improved中的
  • Single project template
  • 新.razor Razor routing

Components

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-10 19:09:24

从本质上讲,有三个部分需要理解。

剃刀组件

这是核心进程外组件模型的名称,该模型创建于2018年7月,用于服务器端Blazor的第一个版本。

Razor组件是框架的核心,包含以下所有内容。

  • Parameters
  • Event handling
  • Data binding
  • Routing
  • Dependency injection
  • Layouts
  • Templating
  • Cascading values

服务器端Blazor

这是一种服务器端托管模型,运行在ASP.NET核心上,用于Razor组件。此版本在服务器上托管Razor组件模型。它使用一个小的运行时将UI事件从浏览器发送到服务器。一旦被Razor组件处理,任何UI更新都会从服务器发送回浏览器,然后运行时处理DOM的更新。所有这些通信都是通过SignalR连接来处理的。甚至JS互操作调用也是这样处理的。

客户端Blazor

这是Razor组件的客户端托管模型。

在此模型中,所有内容都托管在浏览器中。Mono编译为WebAssembly,是.NET运行时。在此之上是Razor组件,然后是应用程序。

这种架构的伟大之处在于,理论上,添加到Razor组件中的任何功能都应该对两个托管模型都可用。尽管在现实中,情况并不总是如此。

有什么更好的?

这在很大程度上取决于你想做什么。

客户端Blazors最大的缺点是它的下载大小。仅此一点就可以排除许多开发人员的可能性。下载很容易进入多MB,如果有人试图在连接速度很慢的手机上查看你的应用程序,他们将不会有很好的体验。然而,值得注意的是,在第一次下载之后,许多内容被缓存,因此后续的加载可能只有100kb。

客户端Blazors的调试体验现在也非常原始。这意味着作为一名开发人员,在它上面工作有时是具有挑战性的。

服务器端Blazor在调试方面拥有更好的开发人员体验。该应用程序的下载速度要快得多,并且在进行任何缓存之前只有几个100kb的大小。

缺点是潜在的可扩展性。但这在很大程度上取决于您期望的并发用户数。因为这个模型使用SignalR,所以你的应用程序在并发连接上有一个最高限制。但是,你可以通过插入Azure SignalR来管理这一点,以允许更多的连接到你的应用程序。

最终,两种Razor组件的托管模型都有很长的路要走。两者的身份验证故事都还处于非常早期的阶段,尽管客户端Blazor可以说处于更好的位置。路由引擎仍然是有限的,表单和验证只是刚刚发布了它的第一个版本,还有工作要做。

另一件要记住的事情是,可以很容易地在模型之间进行交换。所以无论你做什么决定,你都不会被绑在里面。甚至会有一种方法内置到框架中,这样你现在所做的一切都不会被浪费。

有任何问题,请提出来。但我希望这能有所帮助。

票数 26
EN

Stack Overflow用户

发布于 2019-03-10 19:46:59

Razor Components是一个框架,可用于创建SPA web应用程序。它分为两种执行模式。当web应用程序在浏览器上托管和执行时,它被称为Blazor。Blazor应用程序是用C#编写的,并编译成.NET程序集。它们由Mono运行时作为.NET程序集在浏览器上执行和运行,该运行时本身被编译为Web Assembly。

第二种执行模式是服务器端。也就是说,您的web应用程序在服务器上执行,而不是在浏览器上执行。请注意,这里的运行时环境不是Mono Web Assembly,而是Asp.net核心运行时。这就是所谓的服务器端Blazor,但是术语Razor组件也被使用了,所以让困惑的人感到困惑。原因是历史性的:一开始,只有Blazor在浏览器上运行。但后来出现了这样的想法,即web应用程序可以在服务器上运行,并且只有差异可以通过SignalR发送到浏览器。在服务器上运行web应用程序比在浏览器上运行要容易得多,开发人员可以使用许多他不能在浏览器上使用的元素,例如调试等。由于这种可能性,Asp.Net将Blazor框架重命名为Razor组件,您可以将其视为Blazor构建在其上的超级结构。这就是为什么会产生混乱。让我们强调这种划分,如下所示:

Razor组件--> Blazor (前端;浏览器)

Razor组件--> Razor组件(服务器端Blazor )

我知道这是一个困惑的来源,但这就是...

至于哪个问题更好,我只能说这完全取决于你的要求。每种执行模式都有其优点和缺点。Blazor应用程序更适合作为公共网站在因特网上运行,而服务器端Blazor应用程序最好作为企业网站在内联网上使用。

您显示的列表与Razor组件框架相关。目前,一些改进可能只与Blazor相关,而另一些则与服务器端Blazor相关。只有一种方法可以知道哪个是哪个:学习Razor组件。学习它需要时间,比Angular更短,特别是如果你是一名.Net开发人员,但它仍然需要一些投资。

希望这能帮到你。我稍后会改进它,但如果您有特定的问题,请不要犹豫地问...

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55086914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档