.NET 幫助

dotnetify.NET(開發人員如何運作)

發佈 2024年8月13日
分享:

介紹

DotNetify 是一個開源框架,由 .NET 和 Blazor 開發,用於在 .NET 平台上建立即時 Web 應用程式。 利用 SignalR 的強大功能進行客戶端與伺服器之間的即時互動,使構建動態和交互式網絡應用程式變得更加容易。 DotNetify 是一種程式設計模型,用於同步客戶端視圖和伺服器端腳本編寫數據,使開發人員能夠快速、輕鬆地設計豐富、響應迅速且性能良好的線上介面。

反之,IronPDF PDF 生成庫是一個強大的 .NET 套件,可輕鬆實現以程式方式創建、編輯和操作 PDF 文檔。 這是一個很好的選擇,用於創建動態、數據驅動的文件,如報告、發票和表單,因為它提供了一個直觀的API,可以將HTML文本轉換成PDF。

通過將DotNetify與IronPDF整合,C#應用程序中的實時網頁互動性和強大的PDF生成功能得以結合。 需要即時資料顯示以及根據最新資料動態創建和分發 PDF 文件的應用程序將會發現此整合特別有幫助。 開發人員可以透過利用 IronPDF 的多功能 PDF 生成及 DotNetify 的即時數據同步來設計廣泛的互動式在線應用程式,以滿足複雜的業務需求並改善用戶體驗,實現無縫的文件生成和分發。

DotNetify 是什麼?

DotNetify是一個開源框架,旨在更輕鬆地使用 .NET 和 Blazor 創建交互式、即時的網路應用程式。 開發人員可以利用SignalR,這是一種促進客戶端與服務器之間實時通信的技術,輕鬆創建與服務器端數據同步的動態和響應式用戶界面。 DotNetify 是一種反應式編程方法,透過抽象實時資料繫結和事件處理的複雜性,以簡化用少量代碼創建複雜網路應用程式的過程。

dotnetify .NET(適用於開發人員的工作原理):圖1

為了保證使用者介面始終能夠反映應用程式的狀態,DotNetify 允許開發人員在伺服器上構建視圖模型,並且立即將變更傳遞給客戶端。 此框架允許在選擇客戶端技術上有彈性,支持經典 JavaScript 前端和 Blazor 前端。 由於易於使用且高效,它非常適合需要實時更新的應用程式,如儀表板、協作工具和實時數據流。

DotNetify對複雜互動和數據流的即時處理大大改善了用戶體驗,實現了流暢的數據同步和即時反饋。 總的來說,DotNetify 是一個對於 .NET 開發者來說非常有用的解決方案,能夠快速且高效地構建反應式、先進的實時網絡應用程式。

DotNetify 的功能

DotNetify 在 C# 中提供的多項功能使得創建互動的實時在線應用程式變得更加容易。重要特點包括:

即時通訊:DotNetify 使用 SignalR 來促進客戶端與伺服器之間的雙向即時通訊,實現互動式用戶界面和快速更新。

反應式編程模型: 提供了一種反應式編程方法,其中客戶端視圖和服務器端視圖模型自動同步,以保持用戶界面隨時更新最新信息。

伺服器端視圖模型:這使開發人員能夠創建伺服器端視圖模型,以便客戶端組件可以綁定它們,從而簡化應用程序中的狀態管理和數據流。

Blazor 和 JavaScript 支援: 支援經典的 JavaScript 前端和 Blazor 前端,讓開發人員可以選擇最符合其需求的客戶端技術。

易於整合: 由於和現有 .NET 應用程式的無縫整合,可以輕鬆地將即時功能新增到新專案或現有專案中。 它也能很好地與前端 UI 組件框架集成,如 WebSockets 用於創建網頁組件,並可用於使用 React Native、Vue 和 Blazor 等軟體的項目。

擴展性: 基於SignalR的DotNetify繼承了其擴展性特性,使應用程式能夠有效管理大量並發連接。

MVVM 架構: 支援 Model-View-ViewModel(MVVM)架構,有助於劃分責任和清晰、可維護的代碼組織。

事件處理: 通過精簡事件處理和數據綁定,減少處理 UI 交互和狀態變更所需的樣板代碼數量。

可擴充且可自訂: 提供擴充性點和掛勾,以允許行為定制並進行必要的與其他庫或框架的整合。

強大的基礎設施: DotNetify 的基礎設施提供了一種動態路由機制,可以完全在後端定義,支持巢狀路由、基於令牌的身份驗證等功能。

開源和社群驅動: DotNetify 是一個開源專案,由於社群的參與和貢獻而受益,這保證了持續的升級和改進。

創建和配置 DotNetify C

要建立一個簡單的專案並開始在 C# 線上應用程式中配置 DotNetify,請按照以下步驟進行。 本教程將教您如何使用 ASP.NET Core 和 Blazor 設置基本的 DotNetify 服務器和客戶端。

建立一個新的 ASP.NET Core Blazor 伺服器專案

  • 開啟 Visual Studio:啟動 Visual Studio,然後開始一個新的專案。
  • 建立 Blazor 伺服器應用程式:從專案範本中選擇 Blazor 伺服器應用程式範本後,點擊「下一步」。
  • 配置您的專案:為您的專案命名(如 "DotNetifyWebApp")並進行必要的配置更改。 按「建立」。

透過 NuGet 安裝 DotNetify

  • 管理 NuGet 套件:在方案總管中對您的專案點擊右鍵,選擇「管理 NuGet 套件」。
  • 搜尋 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");
        });
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

創建一個 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!";
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

註冊視圖模型

在註冊 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
VB   C#

創建 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;
    }
}
@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;
    }
}
'INSTANT VB TODO TASK: The following line could not be converted:
page "/" [using] DotNetify [using] DotNetify.Blazor inject IDotNetifyService DotNetify (Of h3) greetings</h3> code
If True Then
	private String greetings
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
'	protected override async Task OnInitializedAsync()
'	{
'		var vm = await DotNetify.ConnectAsync<HelloWorldViewModel>(Me);
'		greetings = vm.Greetings;
'	}
End If
VB   C#

設定應用程式以使用DotNetify、Blazor、Razor Pages和SignalR。 此外,它配置了 DotNetify 和 Blazor 的端點和路由。 描述具有返回問候語訊息屬性的一個基本ViewModel。 HelloWorldViewModel 被註冊為暫時性服務。Blazor 組件建立與 HelloWorldViewModel 的連接,獲取歡迎文本並顯示在螢幕上。

dotnetify .NET(開發人員如何使用):圖2

入門

您必須創建一個 .NET 專案,並將這兩個庫整合到您的應用程序中,才能使用 DotNetify 和 IronPDF。 以下是一個逐步的教學指南,幫助您開始:

什麼是 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 套件。

dotnet add package IronPdf
dotnet add package IronPdf
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'dotnet add package IronPdf
VB   C#

將 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");
        });
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

創建視圖模型

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

using DotNetify;
using IronPdf;
public class PdfViewModel : BaseVM
{
    public string PdfUrl { get; set; }
    public void GeneratePdf()
    {
        var Renderer = new ChromePdfRenderer();
        var PdfDocument = Renderer.RenderHtmlAsPdf("<h1>Hello World!</h1>");
        var OutputPath = "wwwroot/PdfFiles/HelloWorld.pdf";
        PdfDocument.SaveAs(OutputPath);
        PdfUrl = "/PdfFiles/HelloWorld.pdf";
        Changed(nameof(PdfUrl));
    }
}
using DotNetify;
using IronPdf;
public class PdfViewModel : BaseVM
{
    public string PdfUrl { get; set; }
    public void GeneratePdf()
    {
        var Renderer = new ChromePdfRenderer();
        var PdfDocument = Renderer.RenderHtmlAsPdf("<h1>Hello World!</h1>");
        var OutputPath = "wwwroot/PdfFiles/HelloWorld.pdf";
        PdfDocument.SaveAs(OutputPath);
        PdfUrl = "/PdfFiles/HelloWorld.pdf";
        Changed(nameof(PdfUrl));
    }
}
Imports DotNetify
Imports IronPdf
Public Class PdfViewModel
	Inherits BaseVM

	Public Property PdfUrl() As String
	Public Sub GeneratePdf()
		Dim Renderer = New ChromePdfRenderer()
		Dim PdfDocument = Renderer.RenderHtmlAsPdf("<h1>Hello World!</h1>")
		Dim OutputPath = "wwwroot/PdfFiles/HelloWorld.pdf"
		PdfDocument.SaveAs(OutputPath)
		PdfUrl = "/PdfFiles/HelloWorld.pdf"
		Changed(NameOf(PdfUrl))
	End Sub
End Class
VB   C#

將新的 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");
    }
}
@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");
    }
}
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
'@page "/" @using DotNetify @using DotNetify.Blazor @inject IDotNetifyService DotNetify (Of PageTitle) Generate PDF</PageTitle> (Of h3) Generate PDF</h3> <button @onclick="GeneratePdf"> Generate PDF</button> @if(!string.IsNullOrEmpty(pdfUrl))
'{
'	<a href="@pdfUrl" target="_blank"> Download PDF</a>
'}
code
If True Then
	private String pdfUrl
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
'	protected override async Task OnInitializedAsync()
'	{
'		var vm = await DotNetify.ConnectAsync<PdfViewModel>(Me);
'		pdfUrl = vm.PdfUrl;
'		vm.PropertyChanged += (sender, args) =>
'		{
'			if (args.PropertyName == nameof(vm.PdfUrl))
'			{
'				pdfUrl = vm.PdfUrl;
'				StateHasChanged();
'			}
'		};
'	}
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
'	private void GeneratePdf()
'	{
'		DotNetify.CallMethod("GeneratePdf");
'	}
End If
VB   C#

透過在 C# ASP.NET Core Blazor 應用中整合 DotNetify 和 IronPDF,實現即時資料處理和動態 PDF 生成。 要啟用伺服器端的 Blazor 和即時功能,設置的第一步是在 Startup.cs 中配置專案,註冊 Razor Pages、Blazor Server、SignalR 和 DotNetify 的服務。

IronPDF 的 PDF 生成邏輯在 PdfViewModel.cs ViewModel 中定義。 只需幾行代碼即可生成 PDF 文件。其功能之一是 GeneratePdf 函數,它接收 HTML 信息並將其轉換為 PDF。 它将文件存储在伺服器上,并更新 PdfUrl 属性,让客户端知道新文件的位置。 此 ViewModel 與 GeneratePdf.razor Blazor 組件進行通訊。

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

為了讓客戶端能夠調用 GeneratePdf 函數並對屬性變更作出反應,它通過 IDotNetifyService 連接到 PdfViewModel 並綁定到其屬性。 當使用者點擊「Generate PDF」按鈕時,組件會調用ViewModel的方法。創建PDF。並動態更新下載 URL。 透過此配置,網頁應用程式通過將 IronPDF 的強大文件生成功能與 DotNetify 的實時資料同步相結合,提供響應式且引人入勝的用戶體驗。

dotnetify .NET(對開發者來說是如何運作的):圖5

結論

在 C# ASP.NET Core Blazor 應用程式中,通過將 DotNetify 與 IronPDF 結合,實現了實時數據同步和動態 PDF 生成。 互動和響應式的應用程式得以實現是多虧了 DotNetify,它使客戶端的 Blazor 元件與伺服器端的 ViewModels 之間進行流暢的通信成為可能。 這是由 IronPDF 增強的,它提供了強大的工具,用於直接從伺服器端邏輯創建和修改 PDF。 藉由這個強大的組合,開發人員可以創建應用程式,不僅能生成和發送獨特文件,還能即時更新。

此整合充分利用即時數據處理和文件生成技術,以提升用戶體驗,無論是報告、發票,或任何其他與文件相關的操作。 開發人員可以通過遵循列出的程序快速輕鬆地設置和使用這些工具,從而為當代網絡應用程序開發開啟許多可能性。

您可以利用 IronPDF 和 IronOCR 進行光學字符識別、條碼掃描、PDF 生成、Excel 連接及更多功能。IronSoftware 開發工具供開發人員試用其廣泛功能集。

若能詳細說明與該專案相關的授權選項,開發人員將更容易選擇最佳模式。 上述優勢使開發人員能夠及時、協調且有效地實施解決方案以應對各種問題。

< 上一頁
Grapevine .NET (開發人員的工作原理)
下一個 >
FiddlerCore .NET(它對開發人員的運作方式)

準備開始了嗎? 版本: 2024.12 剛剛發布

免費 NuGet 下載 總下載次數: 11,622,374 查看許可證 >