跳過到頁腳內容
.NET幫助

Blazor 框架是什麼(開發者的工作原理教程)

Blazor 是一個 ASP.NET 框架,由微軟於 2018 年推出。Blazor 框架的推出是有利的,因為它允許開發者使用 C# 而不是 JavaScript 來創建單頁面 Web 應用程式。

Blazor 允許您使用在瀏覽器中執行的 C# 構建互動式 Web UI,並且使用 WebAssembly(縮寫為 Wasm)。 Blazor 應用程式由可重用的 Web UI 元件組成,這些元件使用 C#、HTML 和 CSS 實現。 用戶端和伺服器端代碼均以 C# 編寫,使您能夠共享代碼和庫。

Blazor 可以直接在瀏覽器中使用 WebAssembly 執行您的用戶端 C# 代碼。 由於是在 WebAssembly 上運行的 .NET,您可以重用應用程式伺服器端部分的代碼和庫。

或者,Blazor 可以在伺服器上運行您的用戶端邏輯。 用戶端 UI 事件使用 SignalR 這個實時消息框架回傳到伺服器。 執行完成後,所需的 UI 變更會發送到用戶端並合併到文件物件模型(DOM)中。

什麼是 WebAssembly?

Blazor WebAssembly 是一個單頁應用程式(SPA)框架,用於使用 .NET 構建互動式用戶端 Web 應用程式。 Blazor WebAssembly 使用開放的 Web 標準,允許開發無需插件或重新編譯代碼至其他語言。 Blazor WebAssembly 在所有現代 Web 瀏覽器中運行。

在 Web 瀏覽器中運行 .NET 代碼是由 WebAssembly 實現的。 WebAssembly 是一種緊湊的字節碼格式,經過優化以加快下載和最大化的執行速度。 WebAssembly 是一個開放的 Web 標準,並且在 Web 瀏覽器中支持無需插件。

WebAssembly 代碼可以通過 JavaScript 訪問瀏覽器的全部功能。 這被稱為 JavaScript 互操作性,通常縮寫為 JavaScript interop 或 JS interop。 通過 WebAssembly 執行的 .NET 代碼在瀏覽器的 JavaScript 沙盒中運行,該沙盒提供保護以防止對用戶端機器的惡意行為。

打造原生應用程式

我們可以利用現有的 Blazor Web UI 元件與 Blazor Hybrid 建立原生用戶端應用程式。 Blazor 元件可以在移動設備、桌面和 Web 平台之間共享,同時充分利用原生用戶端功能的訪問權限。 我們可以使用 Blazor Hybrid 與 .NET 多平台應用介面(MAUI)構建跨平台應用程式,或者現代化現有的 Windows Presentation Foundation(WPF)和 Windows Forms 應用程式。

在 Blazor Hybrid 應用程式中,Razor 元件可以在設備上本地運行。元件通過本地互操作通道渲染到嵌入的 Web 視圖控件中。 元件不會在瀏覽器中運行,也不涉及 WebAssembly。 Razor 元件加載和執行代碼迅速,並且元件可以通過 .NET 平台完全訪問設備的原生功能。

讓我們創建一個演示應用程式,以更好地了解 Blazor 應用程式是如何運行的。

創建 Blazor 伺服器應用程式

為了創建我們的第一個 Blazor 應用程式,我們需要創建一個新的 Visual Studio 項目。

  • 打開 Visual Studio。
  • 點擊“創建新項目”按鈕。
  • 選擇 Blazor Server App 模板。
  • 點擊“下一步”按鈕。
  • 為您的應用程式命名。
  • 點擊“下一步”按鈕。
  • 選擇目標框架。
  • 點擊“創建項目”按鈕。

將創建一個如下所示的新項目。

class="content-img-align-center"> 什麼是 Blazor 及其工作原理 - 圖 1

創建了多個文件以提供一個簡單的 Blazor 應用程式,該應用程式已準備好運行。

  • Program.cs 是應用程式的入口點,啟動伺服器並配置應用程式的服務和中間件。
  • App.razor 是應用程式的根元件。
  • Pages 目錄包含一些應用程式的示例網頁。
  • Properties 目錄中的 launchSettings.json 文件定義了本地開發環境的不同配置文件設置。 項目創建時會自動分配一個端口號,並將其保存到此文件中。

運行該模板應用程式。

運行 Blazor 應用程式

模板中已自動創建了三個 Blazor 元件。

Home 元件

class="content-img-align-center"> 什麼是 Blazor 及其工作原理 - 圖 2

在側邊菜單中點擊 Counter。 您將看到點擊按鈕時會遞增計數器,而不會更改或重新加載頁面。 在網頁應用程式中動態增加計數通常需要使用 JavaScript,但使用 Blazor,我們可以使用 C# 實現這一點。 這就是為什麼 ASP.NET 開發者如此喜愛 Blazor。 它幫助 .NET 開發者快速輕鬆地構建 Web 應用程式。

Counter 元件

class="content-img-align-center"> 什麼是 Blazor 及其工作原理 - 圖 3

我們可以在我們解決方案的 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 Web 開發的威力。

從 URL 生成 PDF

首先,我們需要安裝第三方庫來生成 PDF 文件。 我們將使用的庫是 IronPDF - PDF 生成 for .NET。 它易於使用,包含許多功能,並且用於開發是免費的。 您可以通過閱讀 IronPDF Blazor 文檔 來了解更多有關在您的 Blazor 應用程式中使用 IronPDF 的信息。

安裝 IronPDF NuGet 套件

我們還可以在 Blazor WebAssembly 應用程式中安裝 IronPDF NuGet 套件,類似於正常的 ASP.NET Core 應用程式。

打開 NuGet 套件管理器主控台,並寫下以下命令:

Install-Package IronPdf

將顯示安裝該庫的情況如下。

class="content-img-align-center"> 什麼是 Blazor 及其工作原理 - 圖 4

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
$vbLabelText   $csharpLabel

讓我們運行我們的應用程式來查看輸出結果。

class="content-img-align-center"> 什麼是 Blazor 及其工作原理 - 圖 5

在輸入框中粘貼一個 URL,然後點擊生成 PDF。 PDF 文件將被生成,並且該文件可以在應用程式文件夾中查看。

打開如下所示的 PDF 文件。

class="content-img-align-center"> 什麼是 Blazor 及其工作原理 - 圖 6

我們僅用三行代碼便從 URL 生成了 PDF。 這就是 IronPDF 的強大之處。

IronPDF 由 Iron Software 提供,是 Iron Software 的 Iron 套件產品 之一。 您可以節省金錢,通過 獲取完整的 Iron 套件,以購買兩個產品的價格購買五套產品。

摘要

Blazor 是構建具有 微軟 .NET 框架 的交互式用戶端 Web UI 的框架。

  • 使用 C# 而不是 JavaScript 創建豐富的交互式 UI。
  • 共享用 .NET 編寫的伺服器端與用戶端應用邏輯。
  • 將 UI 渲染為 HTML 和 CSS,以廣泛支持瀏覽器,包括行動瀏覽器。
  • 與現代主機平台(如 Docker)集成。
  • 使用 .NET 和 Blazor 創建混合桌面和移動應用程式。

使用 .NET 為用戶端 Web 開發提供了以下優勢:

  • 使用 C# 而不是 JavaScript 編寫代碼。
  • 利用現有的 .NET 環境中的 .NET 庫。
  • 共享伺服器端和用戶端的應用邏輯。
  • 受益於 .NET 的性能、可靠性和安全性。
  • 使用 Visual Studio 或 Visual Studio Code 等開發環境,在 Windows、Linux 或 macOS 上保持高效率。
  • 構建於一個穩定、功能豐富且易於使用的語言、框架和工具集上。

常見問題解答

如何使用 C# 從 URL 生成 PDF?

可以使用 IronPDF 庫從 URL 生成 PDF,這涉及到使用 ChromePdfRenderer 類將 URL 渲染為 PDF 文檔。

使用 Blazor 進行網頁開發的主要好處是什麼?

Blazor 允許開發人員使用 C# 構建 Web 應用程式,並允許客戶端和服務器之間的代碼共享。它還通過利用現有的 .NET 生態系統和通過 WebAssembly 支援現代瀏覽器來提高性能和生產力。

如何使用 Blazor 集成原生設備功能?

可以使用 Blazor Hybrid 創建原生應用程式,這可以使組件原生運行並通過 .NET 訪問設備功能,利用如 .NET MAUI 等框架為跨平台應用程式服務。

WebAssembly 如何增強 Blazor 應用程式?

WebAssembly 通過使得 .NET 代碼無需插件即可在現代瀏覽器中運行來增強 Blazor 應用程式,這使得可以利用 JavaScript 互操作性來實現交互式客戶端 Web 應用程式的完整瀏覽器功能。

如何在 Visual Studio 中建立 Blazor 服務器應用程式?

要在 Visual Studio 中建立 Blazor 服務器應用程式,您需要啟動一個新項目,選擇 Blazor 服務器應用模板,提供一個項目名稱,選擇一個目標框架,然後繼續建立該項目。這一過程設立了 Blazor 服務器應用的必要結構。

什麼是 Blazor 中的 JavaScript 互操作性?

JavaScript 互操作性,或稱 JS interop,是 Blazor 中的一項功能,允許在瀏覽器中運行的 .NET 代碼與 JavaScript 交互,從而在 Blazor 應用程式中使用完整的瀏覽器功能。

能否使用 Docker 部署 Blazor 應用程式?

是的,可以使用 Docker 部署 Blazor 應用程式,這可以更容易地管理和部署應用程式於各種服務器環境之間,增強可擴展性及現代託管平台的整合。

Curtis Chau
技術作家

Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。