跳過到頁腳內容
.NET幫助

dotnetify.NET(對開發者如何理解的工作)

DotNetify是一個開源框架,使用.NET和Blazor製作,旨在在.NET平台上創建實時網頁應用程式。 通過利用SignalR在客戶端和伺服器之間的實時互動能力,它簡化了動態和互動式網頁應用程式的構建。 DotNetify提供了一個編程模型,將客戶端視圖與伺服端腳本數據同步,允許開發者快速輕鬆地設計豐富、響應迅速且性能良好的線上介面。

相反,IronPDF PDF生成庫是一個強大的.NET套件,可以程序化地創建、編輯和操作PDF文件。 它是創建動態數據驅動文檔(如報告、發票和表單)的絕佳選擇,提供一個直觀的API將HTML文本轉換為PDF。

通過將DotNetify與IronPDF整合在一起,實時網頁互動性和強大的PDF生產能力在C#應用程式中結合起來。 這種集成特別有利於需要實時數據顯示並能夠根據最新數據動態創建和分發PDF文件的應用程式。 開發者可以創建全面的互動網上應用程式,通過無縫的文件生成和分發,以及利用IronPDF多功能PDF生成與DotNetify的實時數據同步來滿足複雜的業務需求並改善用戶體驗。

什麼是DotNetify?

DotNetify是一個開源框架,旨在簡化使用.NET和Blazor創建互動、實時網頁應用程式。 開發者可以通過利用SignalR來創建動態和響應式的用戶介面,從而促進客戶端和伺服器之間的實時通信。 DotNetify採用反應式編程方法,抽象了實時數據綁定和事件處理的複雜性,從而簡化了使用最少代碼創建複雜在線應用程式的過程。

dotnetify .NET(開發者如何使用):圖1

DotNetify允許開發者構建伺服端視圖模型,即時將更改傳播到客戶端,確保用戶介面始終反映應用的狀態。 這個框架在選擇客戶端技術上提供了靈活性,支持經典的JavaScript前端和Blazor前端。 由於使用方便和效果顯著,它是需要實時更新的應用程式(如儀表板、協作工具和實時數據流)的理想選擇。

DotNetify實時處理複雜的互動和數據流,大大增強了用戶體驗,通過啟用平滑的數據同步和即時反饋。 總體而言,DotNetify是一個有用的工具,適合希望快速高效地構建反應迅速、尖端的實時網上應用程式的.NET開發者。

DotNetify的功能

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

  • 實時通信:利用SignalR進行雙向、實時的客戶端伺服器通信,實現互動的用戶介面和即時更新。
  • 反應式編程模型:提供反應式編程模型,自動同步客戶端視圖和伺服端視圖模型,使用戶介面始終與最新信息保持一致。
  • 伺服端視圖模型:促進伺服端視圖模型的創建,客戶端組件可以綁定,簡化應用程式內部的狀態管理和數據流。
  • 支持Blazor和JavaScript:支持經典的JavaScript前端和Blazor前端,允許開發者根據需求選擇最佳適用的客戶端技術。
  • 集成方便:可無縫地將實時功能集成到新項目或現有項目中,並與WebSockets等前端UI組件框架良好協作,適合React Native、Vue和Blazor專案。
  • 可擴展性:繼承SignalR的可擴展性特性,使應用程式能夠有效地管理大量並發連接。
  • MVVM架構:採用Model-View-ViewModel(MVVM)架構,有助於分離職責,保持代碼整潔有序。
  • 事件處理:通過簡化事件處理和數據綁定,降低處理UI交互和狀態更改所需的樣板代碼。
  • 可擴展和可定制:提供擴展點和掛鉤,用於行為定制和必要的其他庫或框架集成。
  • 強大的基礎設施:提供可以完全在後端定義的動態路由機制,能夠處理嵌套路由、基於令牌認證等。
  • 開源和社群驅動:作為一個開源項目,DotNetify受益於社群的參與和貢獻,保證持續的升級和改進。

Creating and Configuring DotNetify in C#

要建立一個簡單的專案並開始在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,請打開Configure方法。

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程式庫使C#程式能夠生成、閱讀和編輯PDF文件。 利用此程式庫,開發者可以快速將HTML、CSS和JavaScript信息轉換為高質量的可打印PDF。 關鍵任務包括添加頁眉和頁腳、分割和合併PDF文件、在文檔上加水印以及將HTML轉換為PDF。

IronPDF對多種應用相關,因為它同時支持.NET Framework和.NET Core。 由於使用簡單且信息豐富,PDF可以輕鬆地整合到開發者的產品中。 IronPDF處理複雜數據佈局和格式,確保其生成的PDF文件與客戶的原始HTML文本非常相似。 此外,IronPDF支持跨平台應用,如Windows、網頁和移動環境。

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:

啟動配置:打開Configure方法配置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)並創建一個將生成PDF的ViewModel。

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)創建Blazor組件並將其綁定到ViewModel。

@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");
    }
}

通過在C#的ASP.NET Core Blazor應用程式中整合DotNetify和IronPDF,實時數據處理和動態PDF製作將成為可能。 設置從Startup.cs中的專案配置開始,在此註冊Razor Pages、Blazor Server、SignalR和DotNetify的服務,以啟用伺服端Blazor和實時功能。

在PdfViewModel.cs中,定義IronPDF的PDF生成邏輯。 僅需幾行代碼即可生成PDF文件。 GeneratePdf函數將HTML內容轉換為PDF並更新PdfUrl屬性,告知客戶新文件的位置。 GeneratePdf.razor Blazor組件與此ViewModel的通信由此處理。

dotnetify .NET(開發者如何使用):圖4

該組件通過IDotNetifyService連接到PdfViewModel並綁定到其屬性,使客戶端能夠調用GeneratePdf函數並響應屬性更改。 當用戶點擊"生成PDF"按鈕時,會調用ViewModel的方法,生成PDF並動態更新下載URL。 通過這種配置,網站應用程式通過結合IronPDF的強大文件生成能力和DotNetify的實時數據同步,提供響應迅速且吸引人的用戶體驗。

dotnetify .NET(開發者如何使用):圖5

結論

結合使用DotNetify和IronPDF將實時數據同步與動態PDF生成結合在C#的ASP.NET Core Blazor應用程式中。 DotNetify允許客戶端Blazor組件和伺服端ViewModel之間的無縫通信,從而實現互動和響應迅速的應用程式。 這由IronPDF補充,它為直接從伺服器邏輯創建和修改PDF提供強大的工具。 這種強大的組合允許開發能夠創建和分發自定義文件以及實時更新的應用程式。

這種集成利用實時數據處理和文件生成技術來提升用戶體驗,無論是用於報告、簽呈還是任何其他文件相關的任務。 通過遵循概述的步驟,開發者可以有效地設置和使用這些工具,釋放現代網頁應用程式開發的新可能性。

有了IronPDF和Iron Software Developer Tools,開發者可探尋其廣泛的功能,利用如OCR、條碼掃描、PDF生成等功能。 提供有關專案的授權選擇詳細說明,允許開發者選擇最適合他們需求的模型。 列出的優勢促使開發者為各種挑戰提供及時、協調和有效的解決方案。

常見問題解答

什麼是 DotNetify,它如何運作?

DotNetify 是一個由 .NET 和 Blazor 構建的開源框架,專為開發實時 Web 應用程序而設計。它使用 SignalR 啟用客戶端和服務器之間的實時通信,從而促進創建動態、交互式 Web 應用程式。

如何將實時 Web 應用程序與 C# 中的 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 文檔中來生成動態報告。這對於需要生成數據驅動報告和發票的應用程序尤為有用。

ViewModels 在 DotNetify 中的角色是什麼?

在 DotNetify 中,ViewModels 用於處理客戶端與服務器之間的數據同步。它們通過保持一致的數據流來促進具有響應性用戶界面的應用程序的開發。

將 DotNetify 和 IronPDF 結合如何改善用戶體驗?

將 DotNetify 與 IronPDF 結合可通過允許實時數據更新和單一應用中的動態 PDF 生成來改善用戶體驗。這種整合促進了無縫的文檔生成和分發,增強了應用程序的功能性。

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