dotnetify.NET(對開發者如何理解的工作)
DotNetify 是使用 .NET 和 Blazor 製作的開放源碼框架,專為在 .NET 平台上建立即時網路應用程式而設計。 透過利用 SignalR 在客戶端與伺服器之間進行即時互動的能力,簡化了動態互動式 Web 應用程式的建構。 DotNetify 提供了一種程式模型,可將用戶端檢視與 伺服器端指令碼資料同步化,讓開發人員快速輕鬆地設計出豐富、反應迅速且效能優異的線上介面。
相反地,IronPDF PDF Generation Library 是一個強大的 .NET 套件,方便以程式化的方式建立、編輯和處理 PDF 文件。 它是建立動態、資料驅動文件(如報告、發票和表單)的絕佳選擇,提供直覺的 API,可將 HTML 文字轉換成 PDF。
透過將 DotNetify 與 IronPDF 整合,即時的網頁互動性與強大的 PDF 製作能力便結合在 C# 應用程式中。 這種整合對需要即時資料顯示以及根據最新資料動態建立和散佈 PDF 文件的應用程式特別有利。 開發人員可利用 IronPDF 的多功能 PDF 生成功能和 DotNetify 的即時資料同步功能,透過無縫的文件生成和分發功能,創建廣泛、互動的線上應用程式,以滿足複雜的業務需求並提升使用者體驗。
什麼是 DotNetify?
DotNetify是一個開放原始碼框架,旨在簡化使用 .NET 和 Blazor 建立互動式即時網頁應用程式的過程。 開發人員可以利用 SignalR 建立動態且反應迅速的使用者介面,毫不費力地與伺服器端資料同步,促進用戶端與伺服器之間的即時通訊。 DotNetify 使用反應式程式設計方法,將即時資料綁定和事件處理的複雜性抽象化,從而以最少的程式碼簡化複雜線上應用程式的建立。

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 受惠於社群的參與與貢獻,確保不斷的升級與改進。
在 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 並使用 ConfigureServices 和 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");
});
}
}
Imports DotNetify
Imports DotNetify.Blazor
Public Class Startup
Public Sub ConfigureServices(ByVal services As IServiceCollection)
services.AddRazorPages()
services.AddServerSideBlazor()
services.AddSignalR()
services.AddDotNetify()
End Sub
Public Sub Configure(ByVal app As IApplicationBuilder, ByVal env As IWebHostEnvironment)
If env.IsDevelopment() Then
app.UseDeveloperExceptionPage()
Else
app.UseExceptionHandler("/Error")
app.UseHsts()
End If
app.UseHttpsRedirection()
app.UseStaticFiles()
app.UseRouting()
app.UseEndpoints(Sub(endpoints)
endpoints.MapBlazorHub()
endpoints.MapFallbackToPage("/_Host")
endpoints.MapHub(Of DotNetifyHub)("/dotnetify")
End Sub)
End Sub
End Class
建立 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!";
}
Imports DotNetify
Public Class HelloWorldViewModel
Inherits BaseVM
Public ReadOnly Property Greetings() As String
Get
Return "Hello, World!"
End Get
End Property
End Class
註冊 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>();
});
}
Imports Microsoft.AspNetCore.Hosting
Imports Microsoft.Extensions.DependencyInjection
Imports Microsoft.Extensions.Hosting
Public Class Program
Public Shared Sub Main(ByVal args() As String)
CreateHostBuilder(args).Build().Run()
End Sub
Public Shared Function CreateHostBuilder(ByVal args() As String) As IHostBuilder
Return Host.CreateDefaultBuilder(args).ConfigureWebHostDefaults(Sub(webBuilder)
webBuilder.UseStartup(Of Startup)()
End Sub).ConfigureServices(Sub(services)
services.AddTransient(Of HelloWorldViewModel)()
End Sub})
End Function
建立 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 和 IronPDF,您需要建立一個 .NET 專案,並將這兩個函式庫整合到您的應用程式中。 以下是讓您入門的逐步教學:
什麼是 IronPDF?
功能豐富的 .NET 函式庫 IronPDF PDF Library 可讓 C# 程式製作、讀取和編輯 PDF 文件。 有了這個函式庫,開發人員可以快速地將 HTML、CSS 和 JavaScript 資訊轉換成高品質、可列印的 PDF。 主要任務包括新增頁首與頁尾,分割與合併 PDF,為文件加上水印,以及將 HTML 轉換為 PDF。
IronPDF for .NET 支援 .NET Framework 和 .NET Core,因此適用於各種應用程式。 PDF 使用簡單、資訊豐富,可輕鬆整合至開發人員的產品中。 IronPDF 可處理複雜的資料佈局和格式,確保生成的 PDF 與客戶的原始 HTML 文字非常相似。 此外,IronPDF 支援 Windows、Web 和行動環境等跨平台應用程式。

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 並使用 ConfigureServices 和 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");
});
}
}
Imports DotNetify
Imports DotNetify.Blazor
Public Class Startup
Public Sub ConfigureServices(ByVal services As IServiceCollection)
services.AddRazorPages()
services.AddServerSideBlazor()
services.AddSignalR()
services.AddDotNetify()
End Sub
Public Sub Configure(ByVal app As IApplicationBuilder, ByVal env As IWebHostEnvironment)
If env.IsDevelopment() Then
app.UseDeveloperExceptionPage()
Else
app.UseExceptionHandler("/Error")
app.UseHsts()
End If
app.UseHttpsRedirection()
app.UseStaticFiles()
app.UseRouting()
app.UseEndpoints(Sub(endpoints)
endpoints.MapBlazorHub()
endpoints.MapFallbackToPage("/_Host")
endpoints.MapHub(Of DotNetifyHub)("/dotnetify")
End Sub)
End Sub
End Class
建立 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));
}
}
Imports DotNetify
Imports IronPdf
Public Class PdfViewModel
Inherits BaseVM
Public Property PdfUrl() As String
Public Sub GeneratePdf()
' Create a new PDF renderer instance
Dim Renderer = New ChromePdfRenderer()
' Render HTML as a PDF document
Dim PdfDocument = Renderer.RenderHtmlAsPdf("<h1>Hello World!</h1>")
' Define the output path for saving the PDF
Dim 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))
End Sub
End Class
新增 Blazor 元件 (例如 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");
}
}
透過在 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 處理。

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

結論
將 DotNetify 與 IronPDF 整合,在 C# ASP.NET Core Blazor 應用程式中結合即時資料同步與動態 PDF 製作。 DotNetify 可讓客戶端 Blazor 元件與伺服器端 ViewModels 進行無縫溝通,進而產生互動且反應迅速的應用程式。 IronPDF 提供了強大的工具,可直接從伺服器端邏輯建立和修改 PDF,並與之相輔相成。 這種強大的組合允許開發能夠建立和散佈自訂文件以及即時更新的應用程式。
此整合利用即時資料處理和文件產生技術來增進使用者體驗,不論是報表、發票或任何其他文件相關任務。 透過遵循概述的步驟,開發人員可以有效地設定和使用這些工具,為現代網路應用程式開發開啟新的可能性。
有了 IronPDF 和 Iron Software 開發人員工具,渴望探索其廣泛功能的開發人員可以利用 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 生成來改善用戶體驗。這種整合促進了無縫的文檔生成和分發,增強了應用程序的功能性。



