Blazor 框架是什麼(開發者的工作原理教程)
Blazor 是一個由 Microsoft 在 2018 年推出的 ASP.NET Framework。Blazor 框架的推出具有優勢,因為它允許開發人員使用 C# 而不是 JavaScript 來建立單頁面網頁應用。
Blazor 讓您可以使用 C# 構建在瀏覽器中運行的互動式網頁 UI,並使用 WebAssembly (簡稱為 Wasm)。 Blazor 應用由可重用的網頁 UI 組件組成,採用 C#、HTML 和 CSS 實現。 客戶端和伺服器的程式碼都用 C# 編寫,允許您共享程式碼和程式庫。
Blazor 可以直接在瀏覽器中使用 WebAssembly 運行您的客戶端 C# 程式碼。 由於在 WebAssembly 上運行的是 .NET,您可以重用應用程式伺服器端部分的程式碼和程式庫。
或者,Blazor 可以在伺服器上運行您的客戶端邏輯。 客戶端 UI 事件通過 SignalR 反饋到伺服器,SignalR 是一個即時消息傳遞框架。 執行完成後,所需的 UI 更改將發送到客戶端並合併到 Document Object Model (DOM) 中。
什麼是 WebAssembly?
Blazor WebAssembly 是一個用於使用 .NET 構建互動式客戶端網頁應用的單頁應用程式 (SPA) 框架。 Blazor WebAssembly 使用開放的網路標準,允許在不使用插件或不將程式碼重新編譯成其他語言的情況下進行開發。 Blazor WebAssembly 在所有現代網頁瀏覽器中運作。
在網頁瀏覽器中運行 .NET 程式碼是通過 WebAssembly 實現的。 WebAssembly 是一種緊湊的字節碼格式,優化為快速下載和最大執行速度。 WebAssembly 是一個開放的網路標準,並且在網路瀏覽器中得到支持,無需插件。
WebAssembly 程式碼可以通過 JavaScript 存取瀏覽器的全部功能。 稱為 JavaScript 互操作,通常縮寫為JavaScript interop 或 JS interop。 通過 WebAssembly 執行的 .NET 程式碼在瀏覽器的 JavaScript 沙箱中運行,具有沙箱提供的防止客戶端機器惡意行為的保護措施。
構建原生應用
我們可以使用現有的 Blazor Web UI 組件配合 Blazor Hybrid 構建原生客戶端應用。 Blazor 組件可以在移動、桌面和網路之間共享,同時充分利用客戶端的原生功能。 我們可以使用 Blazor Hybrid 與 .NET Multi-platform App UI (MAUI) 一起構建跨平台應用,或現代化現有的 Windows Presentation Foundation (WPF) 和 Windows Forms 應用。
在 Blazor Hybrid 應用中,Razor 組件本機運行在裝置上。組件通過本地互操作通道渲染到嵌入的 Web 眡圖控制中。 組件不在瀏覽器中運行,WebAssembly 也未參與。 Razor 組件載入和執行程式碼快速,組件通過 .NET 平台可以完全存取裝置的原生功能。
讓我們建立一個演示應用來更好地了解 Blazor 應用如何工作。
建立 Blazor 伺服器應用
要建立我們的第一個 Blazor 應用,我們需要建立一個新的 Visual Studio 專案。
- 開啟 Visual Studio。
- 點擊建立新專案按鈕。
- 選擇 Blazor Server App 範本。
- 點擊下一步按鈕。
- 為您的應用命名。
- 點擊下一步按鈕。
- 選擇一個目標框架。
- 點擊建立專案按鈕。
將建立一個新專案,如下所示。
建立了多個文件,以為您提供一個準備運行的簡單 Blazor 應用。
Program.cs是應用的入口點,啟動伺服器,並在這裡配置應用服務和中間件。App.razor是應用的根組件。Pages目錄中包含一些應用的範例網頁。launchSettings.json文件在Properties目錄中,定義了本地開發環境的不同配置檔設置。 在專案建立時自動分配了一個端口號並將其保存到此文件中。
運行此範本應用。
運行 Blazor 應用
在範本中自動建立了三個 Blazor 組件。
首頁組件
點擊側邊選單上的 Counter。 您會看到點擊按鈕會使計數器遞增,而不更改或重新載入頁面。 通常在網頁應用中動態增加計數器需要使用 JavaScript,但使用 Blazor,我們可以使用 C# 來實現這一點。 這就是 ASP.NET 開發人員這麼喜歡 Blazor 的原因。 它幫助 .NET 開發人員快速輕鬆地構建網頁應用。
Counter 組件
我們可以在我們解決方案的 Pages 文件夾中的 Counter.razor 文件中看到 Counter 組件的程式碼。
@page "/counter"
<h1>Counter</h1>
<p>Current count: @currentCount</p>
<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>
@code {
private int currentCount = 0;
// This method increments the counter value when the button is clicked
private void IncrementCount()
{
currentCount++;
}
}
如 @page 標指令所指定,/counter 的瀏覽器請求會導致 Counter 組件渲染其內容。
每當選擇 點擊我 按鈕時:
onclick事件會被觸發。- 調用
IncrementCount方法。 currentCount被遞增。- 渲染組件以顯示更新的計數。
每個 .razor 文件定義了一個可重用的 UI 組件。
在 Visual Studio 中打開 Index.razor 文件。 Index.razor 文件已經存在,因為當您建立專案時它已建立。 它位於先前建立的 BlazorApp 目錄的 Pages 文件夾中。
Fetch 組件
還有另一個命名為 "Fetch 組件" 的組件。 該組件還注入了用於後端伺服器端開發的服務。 讓我們替換此程式碼以從 URL 生成 PDF,以更好地理解 Blazor 網頁開發的力量。
從 URL 生成 PDF
首先,我們需要安裝一個第三方庫來生成 PDF 文件。 我們將使用的庫是 IronPDF - PDF Generation for .NET。 它易於使用,包含許多功能,並且免費供開發使用。 您可以通過閱讀 IronPDF Blazor 文件 了解有關在您的 Blazor 應用中使用 IronPDF 的更多資訊。
安裝 IronPDF NuGet 套件
我們也可以在 Blazor WebAssembly 應用中安裝 IronPDF NuGet 套件,類似於普通的 ASP.NET Core 應用程式。
打開 NuGet 套件管理器控制台,並編寫以下命令:
Install-Package IronPdf
將安裝庫,如下所示。
刪除 FetchData.razor 文件中的所有現有程式碼,並新增以下程式碼範例:
@page "/fetchdata"
@using myBlazorAPP.Data
@inject WeatherForecastService ForecastService
<h1>Generate PDF FROM URL</h1>
<p>This component demonstrates generating PDF from URL using IronPDF in Blazor Application</p>
<input type="text" @bind="URL" placeholder="URL HERE..."/>
<button @onclick="GeneratePDF">Generate PDF</button>
@code {
private string URL { get; set; }
// This method calls the service to generate a PDF document from a given URL
protected async Task GeneratePDF()
{
await ForecastService.GeneratePDFfromURL(URL);
}
}
以上是用於生成 PDF 文件的客戶端 Blazor 程式碼。 它定義了一個按鈕和一個輸入框。 輸入框繫結到 URL 變數。
現在,我們來寫出應用程式的伺服器端程式碼。
打開 WeatherForecastService.cs 文件並用以下程式碼片段替換所有現有程式碼:
using System;
using System.Threading.Tasks;
using IronPdf;
namespace myBlazorAPP.Data
{
public class WeatherForecastService
{
// This method generates a PDF file asynchronously from a provided URL
public async Task GeneratePDFfromURL(string URL)
{
ChromePdfRenderer renderer = new ChromePdfRenderer();
var pdfDoc = await renderer.RenderUrlAsPdfAsync(URL);
pdfDoc.SaveAs(@"myFile.pdf");
}
}
}
using System;
using System.Threading.Tasks;
using IronPdf;
namespace myBlazorAPP.Data
{
public class WeatherForecastService
{
// This method generates a PDF file asynchronously from a provided URL
public async Task GeneratePDFfromURL(string URL)
{
ChromePdfRenderer renderer = new ChromePdfRenderer();
var pdfDoc = await renderer.RenderUrlAsPdfAsync(URL);
pdfDoc.SaveAs(@"myFile.pdf");
}
}
}
Imports System
Imports System.Threading.Tasks
Imports IronPdf
Namespace myBlazorAPP.Data
Public Class WeatherForecastService
' This method generates a PDF file asynchronously from a provided URL
Public Async Function GeneratePDFfromURL(ByVal URL As String) As Task
Dim renderer As New ChromePdfRenderer()
Dim pdfDoc = Await renderer.RenderUrlAsPdfAsync(URL)
pdfDoc.SaveAs("myFile.pdf")
End Function
End Class
End Namespace
讓我們運行我們的應用以查看輸出。
在輸入框中粘貼 URL 並點擊生成 PDF。 將生成 PDF 文件,並可在應用文件夾中看到該文件。
按如下所示打開 PDF 文件。
我們僅用三行程式碼便從 URL 生成了 PDF。 這就是 IronPDF 的力量。
IronPDF 是由 Iron Software 提供的,它是Iron Software 的 Iron Suite 產品的一部分。 通過獲取完整的 Iron Suite,您可以省錢,並以購買兩個產品的價格購買五個產品。
總結
Blazor 是一個用於使用Microsoft 的 .NET Framework 構建互動式客戶端網頁 UI 的框架。
- 使用 C# 而不是 JavaScript 建立豐富的互動式 UI。
- 共享用 .NET 編寫的伺服器端和客戶端應用邏輯。
- 將 UI 呈現為 HTML 和 CSS 以獲得廣泛的瀏覽器支持,包括手機瀏覽器。
- 與現代託管平台整合,例如 Docker。
-
用 .NET 和 Blazor 構建混合桌面和移動應用。 using .NET 用於客戶端網頁開發提供以下優勢:
- 用 C# 而非 JavaScript 撰寫程式碼。
- 利用現有的 .NET 託管庫生態系統。
- 在伺服器和客戶端之間共享應用邏輯。
- 從 .NET 的性能、可靠性和安全性獲益。
- 在 Windows、Linux 或 macOS 上使用開發環境保持生產力,例如 Visual Studio 或 Visual Studio Code。
- 基於一套穩定、功能豐富且易於使用的語言、框架和工具而構建。
常見問題
如何使用C#從URL生成PDF?
您可以通過使用IronPDF程式庫在C#中從URL生成PDF。這涉及使用ChromePdfRenderer類將URL渲染為PDF文件。
使用Blazor進行網頁開發的主要好處是什麼?
Blazor允許開發者使用C#構建Web應用程式,從而實現客戶端和伺服器之間的程式碼共享。它還通過使用現有的.NET生態系統並通過WebAssembly提供對現代瀏覽器的支持來提高性能和生產力。
如何使用Blazor整合原生裝置功能?
Blazor可以用於建立本地應用程式,與Blazor Hybrid一起,使組件可以本地運行並通過.NET存取裝置功能,利用.NET MAUI等框架進行跨平台應用程式開發。
WebAssembly如何增強Blazor應用程式?
WebAssembly通過允許.NET程式碼在現代瀏覽器中運行而無需插件,增強了Blazor應用程式。這允許建立交互式客戶端網頁應用程式,可以利用JavaScript互操作性實現完整的瀏覽器功能。
如何在Visual Studio中建立Blazor伺服器應用程式?
要在Visual Studio中建立Blazor伺服器應用程式,您需要開始一個新專案,選擇Blazor伺服器應用程式模板,提供專案名稱,選擇目標框架,然後繼續建立專案。此過程設置了Blazor伺服器應用程式所需的結構。
Blazor中的JavaScript互操作性是什麼?
JavaScript互操作性(或JS interop)是Blazor中的一項功能,允許在瀏覽器中運行的.NET程式碼與JavaScript交互,使Blazor應用程式可以使用完整的瀏覽器功能。
Blazor應用程式可以使用Docker部署嗎?
是的,Blazor應用程式可以使用Docker部署,這使跨各種伺服器環境更容易管理和部署應用程式,提高可擴展性並與現代主機平台整合。




