跳過到頁腳內容
.NET幫助

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

Blazor 是 Microsoft 早在 2018 年推出的 ASP.NET Framework。Blazor 框架的推出具有一定的优势,因为它允许开发人员使用 C# 而不是 JavaScript 创建单页 Web 应用程序。

Blazor 可讓您使用 C# 建立互動式 Web UI,並透過 WebAssembly(簡稱 Wasm)在瀏覽器中執行。 Blazor 應用程式是由使用 C#、HTML 與 CSS 實作的可重複使用網頁 UI 元件所組成。 用戶端和伺服器程式碼均以 C# 寫成,讓您可以共用程式碼和庫。

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

另外,Blazor 也可以在伺服器上執行您的用戶端邏輯。 用戶端 UI 事件會使用 SignalR(即時訊息傳輸框架)傳送回伺服器。 執行完成後,所需的 UI 變更會傳送到客戶端,並合併到文件物件模型 (DOM)。

什麼是 WebAssembly?

Blazor WebAssembly 是一個單頁應用程式 (SPA) 框架,用於使用 .NET 建立互動式客戶端網頁應用程式。 Blazor WebAssembly 採用開放式網頁標準,開發時不需外掛或重新編譯程式碼成其他語言。 Blazor WebAssembly 可在所有現代網路瀏覽器上運作。

WebAssembly 使在 Web 瀏覽器中執行 .NET 程式碼成為可能。 WebAssembly 是一種精簡的 bytecode 格式,已針對快速下載和最高執行速度進行最佳化。 WebAssembly 是一種開放的網路標準,無需外掛程式即可在網路瀏覽器中支援。

WebAssembly 程式碼可以透過 JavaScript 存取瀏覽器的全部功能。 稱為 JavaScript Interoperability,通常簡稱為 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 View 控件。 元件不在瀏覽器中執行,也不涉及 WebAssembly。 Razor 元件可快速載入並執行程式碼,元件可透過 .NET 平台完全存取裝置的原生功能。

讓我們來建立一個示範應用程式,以便更好地瞭解 Blazor 應用程式的運作方式。

建立 Blazor 伺服器應用程式

要建立第一個 Blazor 應用程式,我們需要建立一個新的 Visual Studio 專案。

  • 開啟 Visual Studio。
  • 按一下"建立新專案"按鈕。
  • 選擇 Blazor 伺服器應用程式範本。
  • 按一下下一步按鈕。
  • 為您的應用程式命名。
  • 按一下下一步按鈕。
  • 選擇目標 Framework。
  • 按一下建立專案按鈕。

將會建立一個新專案,如下所示。

What is Blazor and How Does It Work - Figure 1

製作了幾個檔案,讓您有一個簡單的 Blazor 應用程式可以執行。

  • Program.cs 是啟動伺服器的應用程式入口點,也是您設定應用程式服務和中介軟體的地方。
  • App.razor 是應用程式的根元件。
  • Pages 目錄包含應用程式的一些範例網頁。
  • Properties 目錄內的 launchSettings.json 檔案定義了本機開發環境的不同設定檔設定。 專案建立時會自動指定一個連接埠號,並儲存到此檔案中。

執行此範本應用程式。

執行 Blazor 應用程式

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

首頁元件

What is Blazor and How Does It Work - Figure 2

按一下側邊功能表上的計數器。 您會發現按一下按鈕就會增加計數器,而不會改變或重新載入頁面。 在 Web 應用程式中動態增加計數器通常需要 JavaScript,但有了 Blazor,我們可以使用 C# 來實現。 這就是 ASP.NET 開發人員如此喜歡 Blazor 的原因。 它可以幫助 .NET 開發人員快速、輕鬆地建立 Web 應用程式。

計數器元件

What is Blazor and How Does It Work - Figure 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++;
    }
}

瀏覽器中對 /counter 的請求(如頂部的 @page 指令所指定)會導致 Counter 元件渲染其內容。

每次選擇 按一下我 按鈕:

  • 執行 onclick 事件。
  • 呼叫 IncrementCount 方法。
  • currentCount 會遞增。
  • 元件渲染後會顯示更新的計數。

每個 .razor 檔案都定義了可以重複使用的 UI 元件。

在 Visual Studio 中開啟 Index.razor 檔案。 Index.razor 檔案已經存在,因為它是在您建立專案時建立的。 它位於之前建立的 BlazorApp 目錄內的 Pages 資料夾。

擷取元件

還有一個元件名為"Fetch Component"。 此元件也會注入用於後端伺服器端開發的服務。 讓我們取代這段代碼,從 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 Package Manager Console,並寫下以下指令:

Install-Package IronPdf

函式庫的安裝方式如下所示。

What is Blazor and How Does It Work - Figure 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

讓我們執行應用程式看看輸出結果。

What is Blazor and How Does It Work - Figure 5

在輸入框中貼上 URL,然後按一下"產生 PDF"。 PDF 檔案將會產生,檔案可在應用程式資料夾中看到。

開啟 PDF 檔案,如下所示。

What is Blazor and How Does It Work - Figure 6

我們只用三行程式碼就從 URL 產生了 PDF。 這就是 IronPdf 的威力。

IronPDF 由 Iron Software 提供,它是 Iron Software 的 Iron Suite 產品的一部分。 您可以透過 購買完整的 Iron Suite 節省金錢,以購買其中兩個產品的費用購買五個產品。

摘要

Blazor 是用 Microsoft 的 .NET Framework 建立互動式客戶端網頁使用者介面的框架。

  • 使用 C# 而非 JavaScript 建立豐富的互動 UI。
  • 分享以 .NET 寫成的伺服器端和用戶端應用程式邏輯。
  • 將使用者介面渲染為 HTML 和 CSS,以獲得廣泛的瀏覽器支援,包括行動瀏覽器。
  • 與現代主機平台整合,例如 Docker。
  • 使用 .NET 和 Blazor 建立混合桌面和行動應用程式。

使用 .NET 進行用戶端網頁開發具有以下優點:

  • 使用 C# 而非 JavaScript 撰寫程式碼。
  • 充分利用現有的 .NET 生態系統中的 .NET 函式庫。
  • 跨伺服器和用戶端分享應用程式邏輯。
  • 受益於 .NET 的效能、可靠性和安全性。
  • 使用 Visual Studio 或 Visual Studio Code 等開發環境在 Windows、Linux 或 macOS 上保持生產力。
  • 建立在一套穩定、功能豐富且易於使用的共通語言、架構和工具之上。

常見問題解答

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

您可以使用 IronPDF 函式庫,在 C# 中從 URL 產生 PDF。這需要利用 ChromePdfRenderer 類將 URL 呈現為 PDF 文件。

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

Blazor 可讓開發人員使用 C# 建立網頁應用程式,讓客戶端與伺服器之間共用程式碼。它還透過使用現有的 .NET 生態系統,並透過 WebAssembly 為現代瀏覽器提供支援,從而提高性能和生產力。

如何使用 Blazor 整合原生裝置功能?

Blazor 可用於使用 Blazor Hybrid 建立原生應用程式,它允許元件以原生方式執行,並透過 .NET 存取裝置功能,充分利用 .NET MAUI 等框架來開發跨平台應用程式。

WebAssembly 如何增強 Blazor 應用程式?

WebAssembly 透過使 .NET 程式碼能夠在現代瀏覽器中執行而無需外掛程式,增強了 Blazor 應用程式的功能。這使得互動式客戶端網頁應用程式可以利用 JavaScript 的互操作性來實現完整的瀏覽器功能。

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

若要在Visual Studio中建立Blazor伺服器應用程式,您需要啟動一個新專案,選擇Blazor伺服器應用程式範本,提供專案名稱,選擇目標框架,然後進行專案建立。這個過程會為 Blazor Server 應用程式設定必要的結構。

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

JavaScript Interoperability 或 JS interop 是 Blazor 中的一項功能,允許在瀏覽器中執行的 .NET 程式碼與 JavaScript 互動,從而在 Blazor 應用程式中使用完整的瀏覽器功能。

Blazor 應用程式可以使用 Docker 部署嗎?

是的,Blazor 應用程式可以使用 Docker 部署,這樣可以更輕鬆地在各種伺服器環境中管理和部署應用程式,增強可擴展性以及與現代主機平台的整合。

Jacob Mellor, Team Iron 首席技术官
首席技术官

Jacob Mellor 是 Iron Software 的首席技術官,作為 C# PDF 技術的先鋒工程師。作為 Iron Software 核心代碼的原作者,他自開始以來塑造了公司產品架構,與 CEO Cameron Rimington 一起將其轉變為一家擁有超過 50 名員工的公司,為 NASA、特斯拉 和 全世界政府機構服務。

Jacob 持有曼徹斯特大學土木工程一級榮譽学士工程學位(BEng) (1998-2001)。他於 1999 年在倫敦開設了他的第一家軟件公司,並於 2005 年製作了他的首個 .NET 組件,專注於解決 Microsoft 生態系統內的複雜問題。

他的旗艦產品 IronPDF & Iron Suite .NET 庫在全球 NuGet 被安裝超過 3000 萬次,其基礎代碼繼續為世界各地的開發工具提供動力。擁有 25 年的商業經驗和 41 年的編碼專業知識,Jacob 仍專注於推動企業級 C#、Java 及 Python PDF 技術的創新,同時指導新一代技術領袖。