Blazor vs Razor

时间:2018-02-07 03:52:08

标签: c# razor asp.net-core blazor

随着Blazor的发明,我想知道这两种语言之间是否有显着的效率(代码的创建和代码的实际编译/执行)?

https://github.com/SteveSanderson/Blazor

如果有人真正实现了它,你是否已经进行了任何性能测试,或者与普通的Razor相比,是否有轶事(是的,抱歉,我要求道歉)对代码编写过程的反馈?

3 个答案:

答案 0 :(得分:32)

我在下面提供的信息主要是从Steven Anderson's Feb. 2 Blog entry转述,以及我对项目目标的理解:

Blazor旨在结合当前.NET Razor堆栈的创意  与现代SPA框架架构。

代码创建

旨在灵活并鼓励基于组件的布局,如本例所示:

private void OnWebViewPropertyChanged(object sender, PropertyChangedEventArgs e)
{
    if (e.PropertyName == WebView.SourceProperty.PropertyName)
    {
        URLEntry.Text = MyWebView.Source.ToString(); // May need to check this
    }
}

在html标记中创建可重用的组件:

<div class="my-styles">
   <h2>@Title</h2>
   @RenderContent(Body)
   <button onclick=@OnOK>OK</button>
</div>

@functions {
    public string Title { get; set; }
    public Content Body { get; set; }
    public Action OnOK { get; set; }
}

<强>执行

Blazor预计会很快,因为webAssembly很快。它编译为由浏览器的wasm loader直接执行的字节码。例如,在javascript中,需要首先加载<MyDialog Title="Ski Lift controls" onOK="DismissSkiDialog"> Gondola @gondolaId is now <em>running</em> </MyDialog> 文件并将单独的文件组合,然后进行解析和标记化并构建到树结构中,然后可以通过浏览器的javascript引擎进行解释(例如chrome's v8 engine

有关webAssembly和javascript执行的深入比较,请参阅this post

SPA架构与设计

由于已经在网络的javascript中构建了很好的框架,Blazor受到了现代框架(如React,Vue和Angular)中已经使用的思想的启发,并将在帖子中详细介绍概念,如:

  • 布局
  • 路由
  • 依赖注入
  • 延迟加载
  • 单元测试

请注意,虽然Razor中服务器端存在这些概念,但并非所有这些概念都存在于客户端。 Razor不提供前端路由,并且经常与javascript框架结合使用以填充该场景。

我亲自致力于与AngularJs一起为Razor页面提供服务的企业应用程序。它有时会变得混乱,从来没有感觉到干净&#39;。

摘要

Razor是基于服务器架构的解决方案,可以处理api逻辑和服务器端模板,但它不能在javascript之外提供客户端逻辑。

Blazor是下一步(希望继任者),它将允许与Razor相同的服务器端功能,但将使用.js而不是javascript集成客户端逻辑。

我正在与Blazor合作开展小型测试项目,到目前为止,我发现它很容易使用。但正如博客和GitHub页面上的警告所说,它甚至还没有准备就绪。

从2018-09-26开始的第三方编辑

在.NET Conf 2018中宣布Razor components ("server-side Blazor") will be part of .NET Core 3.0。此代码显示为:

C#

答案 1 :(得分:2)

简而言之:

Razor.NET 的流行模板标记语法。 Blazor (Browser + Razor) 是一个基于 .NET 的网络框架,可以使用 WebAssembly 在客户端上运行通过 SignalR 在服务器上运行 .

举个例子,Razor 是您使用 ASP.NET 创建 Web 应用程序时使用的语法,您之前可能已经见过:

<h1>
  Hello @Model.Username
</h1> 

Razor 负责根据模型中的数据呈现 HTML,同时还支持各种条件和循环。

另一方面,Blazor 是一种类似于 ASP.NET Core & ASP.NET MVC 的技术:

它为 Web 应用程序提供支持 它使用 Razor 作为创建 UI 的模板语法。 一个常见的误解是 Blazor 使用 Razor。另外两个类似的术语——Blazor 组件和 Razor 组件进一步加剧了这种情况。它们被广泛互换使用,但正确的术语是 Razor 组件。组件是单个 Razor 文件(带有 .cshtml 扩展名)中的标记(用 HTML 编写)和逻辑(用 C# 编写)的组合。 >

答案 2 :(得分:0)

简而言之:

Razor.NET 的流行模板标记语法。 Blazor (Browser + Razor) 是一个 .NET-based 网络框架,可以使用 WebAssembly 在客户端上运行,也可以通过 SignalR 在服务器上运行。

举个例子,Razor 是您使用 ASP.NET 创建网络应用程序时使用的语法,您之前可能已经见过:

<h1>
  Hello @Model.Username
</h1> 

razor 负责根据模型中的数据呈现 HTML,同时还支持各种条件和循环。

另一方面,Blazor 是一种类似于 ASP.NET Core & ASP.NET MVC 的技术:

它为 Web 应用程序提供支持 它使用 Razor 作为创建 UI 的模板语法。一个常见的误解是 Blazor 使用 Razor。另外两个类似的术语——Blazor 组件和 Razor 组件进一步加剧了这种情况。它们被广泛互换使用,但正确的术语是 Razor 组件。组件是单个 Razor 文件(扩展名为 .cshtml)中的标记(用 HTML 编写)和逻辑(用 C# 编写)的组合。

您可以找到更多信息 here