跳至頁尾內容
.NET 幫助

dotnetify.NET(開發者使用指南)

DotNetify 是一個使用 .NET 和 Blazor 建立的開源框架,旨在 .NET 平台上建立即時 Web 應用程式。 透過利用 SignalR 的強大功能實現客戶端和伺服器之間的即時交互,簡化了動態互動式 Web 應用程式的建置。 DotNetify 提供了一種程式設計模型,可將用戶端視圖與伺服器端腳本資料同步,使開發人員能夠快速輕鬆地設計豐富、響應迅速且效能卓越的線上介面。

相反, IronPDF PDF 生成庫是一個功能強大的 .NET 程式包,可以輕鬆地以程式設計方式建立、編輯和操作 PDF 文件。 它是建立動態、資料驅動文件(如報告、發票和表單)的絕佳選擇,提供直覺的 API,可將 HTML 文字轉換為 PDF。

透過將 DotNetify 與 IronPDF 集成,可以在 C# 應用程式中結合即時 Web 互動性和強大的 PDF 生成功能。 這種整合對於需要即時數據顯示以及能夠根據最新數據動態建立和分發 PDF 文件的應用來說尤其有利。 開發者可以利用 IronPDF 的多功能 PDF 生成功能和 DotNetify 的即時數據同步功能,創建功能強大的互動式線上應用程序,滿足複雜的業務需求,並透過無縫的文件產生和分發來增強用戶體驗。

DotNetify是什麼?

DotNetify是一個開源框架,旨在簡化使用 .NET 和 Blazor 建立互動式即時 Web 應用程式的過程。 開發者可以利用 SignalR 創建動態回應的使用者介面,輕鬆地與伺服器端資料同步,從而促進客戶端和伺服器之間的即時通訊。 DotNetify 採用響應式程式設計方法,抽象化了即時資料綁定和事件處理的複雜性,從而簡化了以最少的程式碼創建複雜的線上應用程式的過程。

dotnetify .NET(開發者使用方法):圖 1

DotNetify 允許開發人員建立伺服器端視圖模型,該模型會立即將變更傳播到客戶端,從而確保使用者介面始終反映應用程式的狀態。 該框架在選擇客戶端技術方面提供了靈活性,既支援經典的 JavaScript 前端,也支援 Blazor 前端。 由於其易用性和高效性,它非常適合需要即時更新的應用,例如儀錶板、協作工具和即時資料流。

DotNetify 對複雜互動和資料流的即時處理,透過實現流暢的資料同步和即時回饋,顯著提升了使用者體驗。 總的來說,DotNetify 對於旨在快速且有效率地建立響應式、尖端、即時線上應用程式的 .NET 開發人員來說是一個很有價值的工具。

DotNetify 的功能

DotNetify C# 提供了眾多功能,可簡化互動式即時線上應用程式的創建,其中包括:

-即時通訊:利用 SignalR 進行雙向即時客戶端-伺服器通信,實現互動式使用者介面和即時更新。 -響應式程式設計模型:提供響應式程式設計模型,自動同步客戶端視圖和服務端視圖模型,使用戶介面始終與最新資訊保持同步。 -伺服器端視圖模型:方便建立用戶端元件可以綁定的伺服器端視圖模型,從而簡化應用程式內的狀態管理和資料流。

  • Blazor 和 JavaScript 支援:同時支援經典的 JavaScript 前端和 Blazor 前端,讓開發人員選擇最符合其需求的客戶端技術。 -易於整合:可將即時功能無縫整合到新的或現有的專案中,並且與 WebSocket 等前端 UI 元件框架配合良好,可與使用 React Native、Vue 和 Blazor 的專案整合。 -可擴展性:繼承了 SignalR 的可擴展性特性,使應用程式能夠有效地管理許多並發連接。
  • MVVM 架構:採用模型-視圖-視圖模型 (MVVM) 架構,有助於分離職責並保持程式碼的組織性和整潔性。 -事件處理:透過簡化事件處理和資料綁定,減少處理 UI 互動和狀態變更所需的樣板程式碼。 -可擴展和可自訂:提供可擴展點和鉤子,用於行為定制以及與其他庫或框架的必要整合。 -強大的基礎設施:提供完全可在後端定義的動態路由機制,能夠實現嵌套路由、基於令牌的身份驗證等。 -開源且社群驅動:作為一個開源項目,DotNetify 受益於社群的參與和貢獻,從而確保持續的升級和改進。

使用 C# 建立和設定 DotNetify

要建立一個簡單的專案並在 C# 線上應用程式中開始設定 DotNetify,請按照以下步驟操作。 本教學課程示範如何使用 ASP.NET Core 和 Blazor 設定基本的 DotNetify 伺服器和用戶端。

設定一個新的 ASP.NET Core Blazor 伺服器項目

1.開啟 Visual Studio:啟動 Visual Studio 並建立一個新專案。 2.建立 Blazor 伺服器應用程式:從專案模板中選擇 Blazor 伺服器應用程式模板,然後按一下"下一步"。 3.配置您的專案:為您的專案提供名稱(例如,"DotNetifyWebApp"),並進行必要的設定變更。 點擊"創建"。

透過 NuGet 安裝 DotNetify

1.管理 NuGet 套件:在解決方案資源管理器中,以滑鼠右鍵按一下您的項目,然後選擇"管理 NuGet 套件"。 2.搜尋 DotNetify:安裝 DotNetify 和 DotNetify.Blazor 軟體包。

配置 DotNetify

要設定 DotNetify,請開啟Startup.cs並使用ConfigureServicesConfigure方法。

using DotNetify;
using DotNetify.Blazor;

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddRazorPages();
        services.AddServerSideBlazor();
        services.AddSignalR();
        services.AddDotNetify();
    }

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseExceptionHandler("/Error");
            app.UseHsts();
        }

        app.UseHttpsRedirection();
        app.UseStaticFiles();
        app.UseRouting();
        app.UseEndpoints(endpoints =>
        {
            endpoints.MapBlazorHub();
            endpoints.MapFallbackToPage("/_Host");
            endpoints.MapHub<DotNetifyHub>("/dotnetify");
        });
    }
}
using DotNetify;
using DotNetify.Blazor;

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddRazorPages();
        services.AddServerSideBlazor();
        services.AddSignalR();
        services.AddDotNetify();
    }

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseExceptionHandler("/Error");
            app.UseHsts();
        }

        app.UseHttpsRedirection();
        app.UseStaticFiles();
        app.UseRouting();
        app.UseEndpoints(endpoints =>
        {
            endpoints.MapBlazorHub();
            endpoints.MapFallbackToPage("/_Host");
            endpoints.MapHub<DotNetifyHub>("/dotnetify");
        });
    }
}
$vbLabelText   $csharpLabel

建立 ViewModel

在專案中建立一個新的類別檔案(例如 HelloWorldViewModel.cs),並設計一個基本的 ViewModel。

using DotNetify;

public class HelloWorldViewModel : BaseVM
{
    public string Greetings => "Hello, World!";
}
using DotNetify;

public class HelloWorldViewModel : BaseVM
{
    public string Greetings => "Hello, World!";
}
$vbLabelText   $csharpLabel

註冊 ViewModel

在註冊 ViewModel 之前,開啟Program.cs

using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;

public class Program
{
    public static void Main(string[] args)
    {
        CreateHostBuilder(args).Build().Run();
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>();
            })
            .ConfigureServices(services =>
            {
                services.AddTransient<HelloWorldViewModel>();
            });
}
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;

public class Program
{
    public static void Main(string[] args)
    {
        CreateHostBuilder(args).Build().Run();
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>();
            })
            .ConfigureServices(services =>
            {
                services.AddTransient<HelloWorldViewModel>();
            });
}
$vbLabelText   $csharpLabel

建立 Blazor 組件

在您的專案中,新增一個新的 Blazor 元件(例如 HelloWorld.razor),並將其連接到 ViewModel。

@page "/"

@using DotNetify
@using DotNetify.Blazor
@inject IDotNetifyService DotNetify

<h3>@greetings</h3>

@code {
    private string greetings;

    protected override async Task OnInitializedAsync()
    {
        var vm = await DotNetify.ConnectAsync<HelloWorldViewModel>(this);
        greetings = vm.Greetings;
    }
}
  • 設定應用程式以使用 DotNetify、Blazor、Razor Pages 和 SignalR。
  • 設定 DotNetify 和 Blazor 端點和路由。
  • 描述一個帶有傳回問候訊息屬性的基本 ViewModel。
  • 將 HelloWorldViewModel 註冊為服務。 Blazor 元件與 HelloWorldViewModel 建立連接,檢索歡迎文本,並將其顯示在螢幕上。

dotnetify .NET(開發者使用方法):圖 2

入門

要使用 DotNetify 和 IronPDF,您需要建立一個 .NET 專案並將這兩個程式庫整合到您的應用程式中。 以下是循序漸進的教程,幫助您入門:

IronPDF是什麼?

功能豐富的 .NET 庫IronPDF PDF Library使 C# 程式能夠產生、讀取和編輯 PDF 文件。 借助此程式庫,開發人員可以快速將 HTML、CSS 和 JavaScript 資訊轉換為高品質、可直接列印的 PDF。 主要任務包括新增頁首和頁尾、分割和合併 PDF、為文件添加浮水印以及將 HTML 轉換為 PDF。

IronPDF 適用於多種應用程序,因為它同時支援 .NET Framework 和 .NET Core。 PDF 文件使用簡單,資訊豐富,可以輕鬆整合到開發人員的產品中。 IronPDF 能夠處理複雜的資料佈局和格式,確保產生的 PDF 檔案與客戶的原始 HTML 文字高度相似。 此外,IronPDF 還支援跨平台應用程序,例如 Windows、Web 和行動環境。

dotnetify .NET(開發者使用方法):圖 3

IronPDF 的特點

-從 HTML 產生 PDF:將 JavaScript、HTML 和 CSS 轉換為 PDF。 IronPDF 支援媒體查詢和響應式設計,這是兩個現代網路標準。 它對現代網頁標準的支援對於使用 HTML 和 CSS 動態裝飾 PDF 發票、報告和文件非常有用。

  • PDF 編輯:可以在現有的 PDF 文件中添加文字、圖像和其他內容。 開發人員可以使用 IronPDF 從 PDF 文件中提取文字和圖像,將多個 PDF 文件合併為一個文件,將 PDF 文件拆分為多個單獨的文檔,並添加浮水印、註釋、頁首和頁尾。

  • PDF 轉換:將多種文件格式(包括 Word、Excel 和圖片文件)轉換為 PDF 格式。 IronPDF 也支援 PDF 轉影像(PNG、JPEG 等)。

-性能和可靠性:高性能和高可靠性是工業環境中所需的設計品質。 透過 IronPDF,開發人員可以輕鬆管理大型文件集。

安裝 IronPDF

若要取得在 .NET 專案中處理 PDF 所需的工具,請安裝 IronPDF 套件。

Install-Package IronPdf

將 DotNetify 與 IronPDF 集成

配置 DotNetify:

啟動設定:開啟Startup.cs並使用ConfigureServicesConfigure方法來設定 DotNetify。

using DotNetify;
using DotNetify.Blazor;

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddRazorPages();
        services.AddServerSideBlazor();
        services.AddSignalR();
        services.AddDotNetify();
    }

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseExceptionHandler("/Error");
            app.UseHsts();
        }

        app.UseHttpsRedirection();
        app.UseStaticFiles();
        app.UseRouting();
        app.UseEndpoints(endpoints =>
        {
            endpoints.MapBlazorHub();
            endpoints.MapFallbackToPage("/_Host");
            endpoints.MapHub<DotNetifyHub>("/dotnetify");
        });
    }
}
using DotNetify;
using DotNetify.Blazor;

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddRazorPages();
        services.AddServerSideBlazor();
        services.AddSignalR();
        services.AddDotNetify();
    }

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseExceptionHandler("/Error");
            app.UseHsts();
        }

        app.UseHttpsRedirection();
        app.UseStaticFiles();
        app.UseRouting();
        app.UseEndpoints(endpoints =>
        {
            endpoints.MapBlazorHub();
            endpoints.MapFallbackToPage("/_Host");
            endpoints.MapHub<DotNetifyHub>("/dotnetify");
        });
    }
}
$vbLabelText   $csharpLabel

建立 ViewModel

在專案中新增一個新的類別檔案(例如 PdfViewModel.cs),並建立一個 ViewModel 來產生 PDF。

using DotNetify;
using IronPdf;

public class PdfViewModel : BaseVM
{
    public string PdfUrl { get; set; }

    public void GeneratePdf()
    {
        // Create a new PDF renderer instance
        var Renderer = new ChromePdfRenderer();

        // Render HTML as a PDF document
        var PdfDocument = Renderer.RenderHtmlAsPdf("<h1>Hello World!</h1>");

        // Define the output path for saving the PDF
        var OutputPath = "wwwroot/PdfFiles/HelloWorld.pdf";

        // Save the generated PDF document
        PdfDocument.SaveAs(OutputPath);

        // Update the property for the PDF URL
        PdfUrl = "/PdfFiles/HelloWorld.pdf";
        Changed(nameof(PdfUrl));
    }
}
using DotNetify;
using IronPdf;

public class PdfViewModel : BaseVM
{
    public string PdfUrl { get; set; }

    public void GeneratePdf()
    {
        // Create a new PDF renderer instance
        var Renderer = new ChromePdfRenderer();

        // Render HTML as a PDF document
        var PdfDocument = Renderer.RenderHtmlAsPdf("<h1>Hello World!</h1>");

        // Define the output path for saving the PDF
        var OutputPath = "wwwroot/PdfFiles/HelloWorld.pdf";

        // Save the generated PDF document
        PdfDocument.SaveAs(OutputPath);

        // Update the property for the PDF URL
        PdfUrl = "/PdfFiles/HelloWorld.pdf";
        Changed(nameof(PdfUrl));
    }
}
$vbLabelText   $csharpLabel

透過新增元件(例如 GeneratePdf.razor)並將其綁定到 ViewModel 來建立 Blazor 元件。

@page "/"

@using DotNetify
@using DotNetify.Blazor
@inject IDotNetifyService DotNetify

<PageTitle>Generate PDF</PageTitle>
<h3>Generate PDF</h3>

<button @onclick="GeneratePdf">Generate PDF</button>

@if (!string.IsNullOrEmpty(pdfUrl))
{
    <a href="@pdfUrl" target="_blank">Download PDF</a>
}

@code {
    private string pdfUrl;

    protected override async Task OnInitializedAsync()
    {
        var vm = await DotNetify.ConnectAsync<PdfViewModel>(this);
        pdfUrl = vm.PdfUrl;

        vm.PropertyChanged += (sender, args) =>
        {
            if (args.PropertyName == nameof(vm.PdfUrl))
            {
                pdfUrl = vm.PdfUrl;
                StateHasChanged();
            }
        };
    }

    private void GeneratePdf()
    {
        DotNetify.CallMethod("GeneratePdf");
    }
}

透過將 DotNetify 和 IronPDF 整合到 C# ASP.NET Core Blazor 應用程式中,可以實現即時資料處理和動態 PDF 生成。 設定首先在 Startup.cs 中設定項目,其中註冊了 Razor Pages、Blazor Server、SignalR 和 DotNetify 的服務,以啟用伺服器端 Blazor 和即時功能。

在 PdfViewModel.cs 中定義了 IronPDF 的 PDF 生成邏輯。 只需幾行程式碼即可產生 PDF 檔案。 GeneratePdf函數將 HTML 內容轉換為 PDF,並更新 PdfUrl 屬性,告知客戶端新檔案的位置。 此 ViewModel 處理與 GeneratePdf.razor Blazor 元件的通訊。

dotnetify .NET(開發者使用方法):圖 4

該元件透過 IDotNetifyService 連接到 PdfViewModel 並綁定到其屬性,使客戶端能夠呼叫GeneratePdf函數並回應屬性變更。 當使用者點擊"產生 PDF"按鈕時,ViewModel 的方法將被調用,從而建立 PDF 並動態更新下載 URL。 透過此配置,Web 應用程式將 IronPDF 強大的文件產生功能與 DotNetify 的即時資料同步功能相結合,從而提供快速回應且引人入勝的使用者體驗。

dotnetify .NET(開發者使用方法):圖 5

結論

將 DotNetify 與 IronPDF 集成,可在 C# ASP.NET Core Blazor 應用程式中實現即時資料同步和動態 PDF 生成。 DotNetify 實現了客戶端 Blazor 元件與伺服器端 ViewModel 之間的無縫通信,從而創建出互動式和響應式應用程式。 IronPDF 與之相輔相成,它提供了強大的工具,可以直接從伺服器端邏輯建立和修改 PDF。 這種強大的組合可以開發出能夠創建和分發客製化文件以及即時更新的應用程式。

此整合利用即時資料處理和文件產生技術來增強使用者體驗,無論是報告、開票或任何其他與文件相關的任務。 按照上述步驟,開發人員可以有效率地設定和使用這些工具,從而在現代 Web 應用程式開發中開啟新的可能性。

透過 IronPDF 和Iron 軟體開發工具,渴望探索其豐富功能的開發人員可以利用 OCR、條碼掃描、PDF 生成等功能。 專案相關的授權替代方案均有詳細說明,開發者可依自身需求選擇最佳方案。 上述優勢有助於開發人員及時、協調、有效地應對各種挑戰。

常見問題解答

DotNetify是什麼?它是如何運作的?

DotNetify 是一個基於 .NET 和 Blazor 構建的開源框架,專為開發即時 Web 應用程式而設計。它使用 SignalR 實現客戶端和伺服器之間的即時通信,從而簡化了動態互動式 Web 應用程式的建立。

如何在 C# 中將即時 Web 應用程式與 PDF 生成功能整合?

透過將 DotNetify 用於即時 Web 應用程序,將 IronPDF 用於 PDF 生成,開發人員可以建立互動式應用程序,根據即時數據輸入動態生成和分發 PDF 文件。

IronPDF 提供哪些 PDF 文件處理功能?

IronPDF 提供以程式設計方式建立、編輯和轉換 PDF 文件的功能。它支援將 HTML、CSS 和 JavaScript 轉換為 PDF,並支援各種 PDF 操作,使其成為產生報告和動態文件的理想選擇。

DotNetify 如何增強即時應用程式開發?

DotNetify 透過提供一個將客戶端視圖與伺服器端資料同步的程式設計模型,增強了即時應用程式的開發,從而能夠創建響應式和互動式 Web 介面。它同時支援 JavaScript 和 Blazor,提供靈活的開發環境。

在 DotNetify 中使用 SignalR 有哪些好處?

DotNetify 中的 SignalR 支援即時客戶端-伺服器通信,這對於建立互動式和響應式 Web 應用程式至關重要。它有助於在應用程式內實現即時更新和動態互動。

IronPDF 如何協助在 .NET 應用程式中產生動態報表?

IronPDF 可以將包含 CSS 和 JavaScript 的 HTML 內容轉換為高品質的 PDF 文檔,從而產生動態報表。這對於需要產生資料驅動型報表和發票的應用程式情境尤其有用。

ViewModel 在 DotNetify 中扮演什麼角色?

在 DotNetify 中,ViewModel 用於處理客戶端和伺服器之間的資料同步。它們透過維護一致的資料流,簡化了具有響應式使用者介面的應用程式的開發。

DotNetify 和 IronPDF 的結合如何提升使用者體驗?

將 DotNetify 與 IronPDF 結合使用,可在單一應用程式中實現即時資料更新和動態 PDF 生成,從而提升使用者體驗。這種整合實現了文件的無縫生成和分發,增強了應用程式的功能。

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

Jacob Mellor 是 Iron Software 的首席技術官,也是一位富有遠見的工程師,率先開發了 C# PDF 技術。作為 Iron Software 核心程式碼庫的最初開發者,他自公司成立之初便參與塑造了其產品架構,並與執行長 Cameron Rimington 一起將其發展成為一家擁有 50 多名員工、服務於 NASA、特斯拉和全球政府機構的公司。

Jacob 於 1998 年至 2001 年在曼徹斯特大學獲得土木工程一級榮譽學士學位。 1999 年,他在倫敦創辦了自己的第一家軟體公司;2005 年,他創建了自己的第一個 .NET 元件。此後,他專注於解決微軟生態系統中的複雜問題。

他的旗艦產品 IronPDF 和 IronSuite .NET 庫在全球 NuGet 上的安裝量已超過 3000 萬次,其基礎程式碼持續為全球開發者工具提供支援。憑藉 25 年的商業經驗和 41 年的程式設計專長,Jacob 始終致力於推動企業級 C#、Java 和 Python PDF 技術的創新,同時指導下一代技術領導者。