跳過到頁腳內容
.NET幫助

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

Blazor是由Microsoft在2018年推出的ASP.NET Framework。Blazor框架的推出具有優勢,因為它允許開發者使用C#而不是JavaScript來創建單頁網路應用程式。

Blazor讓您可以使用C#在瀏覽器中通過WebAssembly(縮寫為Wasm)運行來構建互動式網頁UI。 Blazor應用程式由可重複使用的網頁UI元件組成,使用C#、HTML和CSS實現。 客戶端和服務器代碼均使用C#編寫,讓您可以共享程式碼和程式庫。

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

或者,Blazor可以在伺服器上運行您的客戶端邏輯。 客戶端UI事件通過使用SignalR的即時消息框架返傳到服務器。 執行完成後,所需的UI更改將發送到客戶端並合併到文檔對象模型(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多平台應用程序UI(MAUI)構建跨平台應用程序,或現代化現有的Windows Presentation Foundation(WPF)和Windows Forms應用程序。

在Blazor Hybrid應用程式中,Razor元件在設備上本機運行。元件通過本地互操作通道渲染到嵌入的Web View控件。 元件不在瀏覽器中運行,WebAssembly未參與。 Razor元件加載並快速執行代碼,元件可以通過.NET平台完全访问設備的本機功能。

讓我們創建一個演示應用程序,從而更好地理解Blazor應用程式的工作原理。

創建Blazor伺服器應用程式

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

  • 開啟Visual Studio。
  • 點擊"創建新項目"按鈕。
  • 選擇Blazor伺服器應用程式範本。
  • 點擊"下一步"按鈕。
  • 為您的應用程序命名。
  • 點擊"下一步"按鈕。
  • 選擇目標框架。
  • 點擊"創建項目"按鈕。

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

What is Blazor and How Does It Work - Figure 1

創建了多個文件,供您使用一個準備運行的簡單Blazor應用程式。

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

運行此範本應用程式。

運行Blazor應用程式

在範本中自動創建了三個Blazor元件。

Home元件

What is Blazor and How Does It Work - Figure 2

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

Counter元件

What is Blazor and How Does It Work - Figure 3

我們可以在方案的Pages文件夾內。

@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文件。 它位於早前創建的Pages文件夾中。

Fetch元件

還有另一個名為"Fetch元件"的元件。 該組件還注入了一個用於後端伺服器開發的服務。 讓我們替換此代碼以從URL生成PDF,以更好地理解Blazor網頁開發的強大功能。

從URL生成PDF

首先,我們需要安裝第三方庫以生成PDF文件。 我們將使用的庫是IronPDF - PDF Generation for .NET。 它易於使用,功能齊全,並且對於開發是免費的。 您可以通過閱讀IronPDF Blazor Documentation了解更多在Blazor應用程式中使用IronPDF的方法。

安裝IronPDF NuGet套件

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

開啟NuGet套件管理器控制台,並輸入以下命令:

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");
        }
    }
}
$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's Iron Suite Products的一部分。 您可以節省金錢,通過購買整個Iron Suite,以購買其中兩個產品的價格購買五個產品。

總結

Blazor是一個用於使用Microsoft的.NET Framework構建互動式客戶端網頁UI的框架。

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

使用.NET進行客戶端網頁開發提供以下優勢:

  • 使用C#編寫代碼而不是JavaScript。
  • 利用現有的.NET程式包的.NET生態系統。
  • 在伺服器和客戶端共享應用程式邏輯。
  • 受益於.NET的性能、可靠性和安全性。
  • 在Windows、Linux或macOS上使用Visual Studio或Visual Studio Code等開發環境提高生產力。
  • 基於一套共用的語言、框架和工具,這些都是穩定、功能豐富且易於使用的。

常見問題解答

如何使用 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 應用程式,這可以更容易地管理和部署應用程式於各種服務器環境之間,增強可擴展性及現代託管平台的整合。

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

Jacob Mellor是Iron Software的首席技術官,也是開創C# PDF技術的前瞻性工程師。作為Iron Software核心代碼庫的原始開發者,他自公司成立以來就塑造了公司的產品架構,並與CEO Cameron Rimington將公司轉型為服務NASA、Tesla以及全球政府機構的50多人公司。

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

他的旗艦作品IronPDF和Iron Suite .NET程式庫全球已獲得超過3000萬次NuGet安裝,他的基礎代碼不斷在全球各地驅動開發者工具。擁有25年以上的商業經驗和41年的編碼專業知識,Jacob仍然專注於推動企業級C#、Java和Python PDF技術的創新,同時指導下一代技術領導者。

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me