
Razor 与 Blazor
Razor 和 Blazor 是在 Visual Studio 开发环境中创建 Web 应用的两种最流行的 Web UI 框架。 这篇博客文章将基于语法、交互、优点和缺点来检查这两种.NET技术的异同。 它还将展示一些案例以及代码示例。
什么是ASP.NET Core中的Razor和Blazor?
Razor
Razor是一种服务器端标记语言,允许开发人员使用HTML和嵌入的.NET服务器端代码动态创建网页。 Razor从Razor页面生成网页,这是用C#或VB编写的网页模板文件。 使用VB代码编写的Razor页面使用.cshtml文件扩展名。
现代ASP.NET Web应用程序支持Razor,并且可以代替传统的ASP.NET标记来生成应用程序视图组件。
Blazor
Blazor是一个Web应用框架,允许开发人员使用.NET编程语言构建交互式客户端界面。 使用Blazor构建的Web应用是单页应用程序(SPA),在Web浏览器客户端中执行(而非在Web服务器上执行)。 通过WebAssembly实现浏览器端应用执行,这是一种跨平台指令集,在所有现代Web浏览器中都能找到,能够执行.NET源代码。
使用Blazor,开发人员可以使用C#、HTML和CSS创建可重用的交互式客户端Web组件(无需并入JavaScript)。 此外,由于这些组件是用C#编写的,开发人员可以根据需要将实现细节作为源代码和库在客户端和服务器之间来回移动。
Blazor是否使用Razor组件?
Blazor完全支持Razor语法。 你可以使用Razor的完整标记功能集来构建Blazor应用:包括使用循环、条件等功能。请考虑以下示例。
@page "/HelloWorld"
<h1>
Example Component
</h1>
@foreach (var person in People)
{
<h2>@person.FirstName</h2>
}
这个Razor组件使用
<h2>标签内。
Razor和Blazor之间的连接
我们可以清楚地看到Blazor和Razor之间存在关系。 毕竟,Blazor这个名字本身就是"浏览器"和"Razor"两个词的组合。
Razor和Blazor都用于使用HTML和C#创建Web应用程序。 由于它们是开源的且免费的,开发人员可以立即使用它们而不受限制。 在开发ASP.NET Web应用程序时,我们使用Razor语法,因为它更像是ASP.NET Core和ASP.NET MVC。
Blazor从一个或多个用Razor语法编写的组件中构建灵活的交互式用户界面。
此时我们必须显著区分Razor在Blazor中的用法:它用于构建组件(按钮、页面元素等),而不是整个页面。
此外,Blazor中的Razor文件(具有.cshtml扩展名的文件)正式称为Razor组件,而不是Blazor组件(尽管这两个词在许多开发圈中被交替使用)。
Razor页面和Blazor服务器的工作原理
Razor 在 MVC 应用程序中工作,将 完整页面 提供给浏览器。

运行中的 Razor 页面
当用户点击按钮或链接时,浏览器向服务器发送请求,服务器访问数据库,检索.cshtml Razor视图(或Razor页面),将数据和标记组合在一起,并将整个结果返回给浏览器(重新渲染整个页面)。
另一方面,Blazor允许你通过一系列用Razor语法编写的小组件来创建完整的网页。

Blazor 在行动中
这展示了Blazor WebAssembly(Blazor WASM)的运作。
对Blazor WASM应用程序的首次调用返回了完整的程序,包括你定义的所有组件,类似于使用JavaScript创建的单页应用程序。
现在浏览器可以访问这些元素,可以响应信息和事件来显示、隐藏和更新它们。
以这种方式,Blazor应用更像是使用现代JavaScript库/框架(如Vue或Angular)开发的应用。 Blazor应用在浏览器中运行时与后端执行网络调用以检索和发送数据。
现在,让我们讨论一下Blazor应用和Razor View引擎的一些优点和缺点。
Blazor和Razor的优缺点
在创建基于.NET框架的交互式Web应用程序时,Blazor和Razor都备受推崇。 这些技术提供了一种新颖的过渡,将C#作为标准JavaScript项目的主要编程语言。
以下是一些使用Razor或Blazor创建Web应用时需要考虑的优缺点。
Blazor的优点
- 客户端Blazor直接在浏览器中使用WebAssembly执行.NET代码(使其更快且更少浪费网络带宽)并提供动态Web内容。
- 它使用与服务器端语言相同的语法和逻辑,使其与所有.NET库和工具兼容。
Blazor的缺点
- 通过Blazor进行客户端.NET应用程序执行的.NET工具和调试支持有限。
- 客户端Blazor的性能优势不在于服务器端实现。
Razor的优点
- Razor使得逻辑(条件)地将C#代码插入到网页中变得可能。
- Razor高度灵活,可以用于创建各种应用。
- Razor的结构运作良好。
Razor的缺点
- 实现动态的客户端交互需要使用JavaScript。
- 使用Razor可能难以管理和维护多个自包含页面。
IronPDF的显著特点是使用IronPDF将HTML转换为PDF,可以保持布局和样式。 此功能非常适合从基于Web的内容(如报告、发票和文档)生成PDF。 HTML文件、URL和HTML字符串都可以转换为PDF。
using IronPdf;
class Program
{
static void Main(string[] args)
{
var renderer = new ChromePdfRenderer();
// Convert HTML String to PDF
var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");
// Convert HTML File to PDF
var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");
// Convert URL to PDF
var url = "http://ironpdf.com"; // Specify the URL
var pdfFromUrl = renderer.RenderUrlAsPdf(url);
pdfFromUrl.SaveAs("URLToPDF.pdf");
}
}Imports IronPdf
Module Program
Sub Main(args As String())
Dim renderer = New ChromePdfRenderer()
' Convert HTML String to PDF
Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")
' Convert HTML File to PDF
Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")
' Convert URL to PDF
Dim url = "http://ironpdf.com" ' Specify the URL
Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
pdfFromUrl.SaveAs("URLToPDF.pdf")
End Sub
End Module这个C#程序演示了如何使用
IronPdf将HTML内容转换为PDF文档。 它支持从HTML字符串、HTML文件和URL进行转换。
结论
Razor可以处理API逻辑和服务器端模板,但不能处理非JavaScript的客户端逻辑。 Blazor允许程序员仅使用C#处理客户端和服务器端功能。 Razor是一种模板的标记语法,将服务器端代码并入HTML中。 另一方面,Blazor是一个SPA框架,可以根据情况在Blazor WebAssembly或Blazor服务器端运行。
发现IronPDF,这是在Razor应用程序和Blazor应用程序中创建、读取、更新和操作PDF文件的最简单方法。 IronPDF是Iron Software的Iron Suite的一部分,其中包含五个有用的库,有助于使用Excel、PDF、条形码、二维码和图像创建Razor或Blazor Web应用程序。
Iron Suite免费提供个人使用。 有关获取商业许可证的更多信息,请访问Iron Suite许可信息。

Jacob Mellor 是 Iron Software 的首席技术官,也是一位开创 C# PDF 技术的有远见的工程师。作为 Iron Software 核心代码库的原始开发者,他从公司成立之初就开始塑造公司的产品架构,与首席执行官 Cameron Rimington 一起将公司转变为一家拥有 50 多名员工的公司,为 NASA、特斯拉和全球政府机构提供服务。
相关文章


