.NET 帮助

dotnetify.NET(如何为开发人员工作)

发布 2024年八月13日
分享:

介绍

DotNetify 是一个使用 .NET 和 Blazor 制作的开源框架,旨在在 .NET 平台上创建实时 Web 应用程序。利用 SignalR 强大的客户端与服务器之间的实时交互,使构建动态和交互式 Web 应用程序变得更加容易。DotNetify 是一种编程模型,用于同步客户端视图与 服务器端 数据,允许开发人员快速、轻松地设计丰富、响应迅速且性能优越的在线界面。

反之, IronPDF 是一个强大的.NET包,可以更轻松地以编程方式创建、编辑和操作PDF文档。由于它提供了一个直观的API,可以将HTML文本转换为PDF,因此是创建动态数据驱动文档(如报告、发票和表单)的绝佳选择。

通过将DotNetify与IronPDF集成,可以在C#应用程序中结合实时Web交互和强大的PDF制作功能。对于需要实时数据展示以及根据最新数据动态创建和分发PDF文档的应用程序,此集成特别有用。开发人员可以利用IronPDF的多功能PDF生成和DotNetify的实时数据同步,设计满足复杂业务需求并改善用户体验的广泛互动在线应用程序,实现无缝的文档生成和分发。

什么是DotNetify?

DotNetify 是一个开源框架,用于简化使用 .NET 和 Blazor 创建交互式、实时 Web 应用程序。开发人员可以通过利用 SignalR,轻松地创建与服务器端数据同步的动态和响应式用户界面,从而促进客户端和服务器之间的实时通信。DotNetify 是一种反应式编程方法,通过抽象实时数据绑定和事件处理的复杂性,用极少的代码简化复杂 Web 应用程序的创建。

dotnetify .NET(对开发人员的作用原理):图1

为了确保用户界面始终反映应用程序的状态,DotNetify 允许开发人员在服务器上构建视图模型,并立即将更改传播到客户端。该框架允许灵活选择客户端技术,支持经典的 JavaScript 前端和 Blazor 前端。由于它易于使用且有效,非常适合需要实时更新的应用程序,如仪表盘、协作工具和实时数据流。

DotNetify 对复杂交互和数据流的实时处理极大地改善了用户体验,实现了数据的顺畅同步和即时反馈。总的来说,DotNetify 是一种对 .NET 开发人员非常有用的解决方案,能够快速高效地构建反应式、先进的实时 Web 应用程序。

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 Server 项目

  • 打开 Visual Studio:启动 Visual Studio,然后开始一个新项目。
  • 创建 Blazor Server 应用程序:选择 Blazor Server 应用程序模板后,点击“下一步”。
  • 配置您的项目:给您的项目命名。 (像"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

在注册 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 允许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支持媒体查询和响应式设计这两种现代Web标准。它对现代Web标准的支持对于用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) 并创建一个将生成PDF的ViewModel。

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。通过这种配置,Web应用程序通过集成IronPDF的强大文档生成功能和DotNetify的实时数据同步,提供了响应迅速且引人入胜的用户体验。

dotnetify .NET(开发人员工作原理):图5

结论

通过将DotNetify与IronPDF集成,在C# ASP.NET Core Blazor应用程序中结合了实时数据同步和动态PDF制作。DotNetify通过实现客户端Blazor组件与服务器端ViewModel之间的无缝通信,使交互和响应式应用程序成为可能。而IronPDF增强了这种功能,提供了从服务器端逻辑直接创建和修改PDF的强大工具。借助这种强大的组合,开发人员可以创建能够实时创建和发送独特文档的应用程序。

这种集成充分利用了实时数据处理和文档生成技术来提高用户体验,无论是报告、发票还是任何其他与文档相关的操作。开发人员可以通过遵循列出的步骤快速轻松地设置和使用这些工具,为现代Web应用程序开发开辟了广阔的可能性。

您可以利用IronPDF进行OCR、条形码扫描、PDF制作、Excel连接等等。 铁软件(Iron Software) 对于希望尝试其广泛功能的开发人员。

提供的与项目相关的许可证替代方案详细说明,可以让开发人员更轻松地选择最佳模式。上述优势有助于开发人员及时、协调和有效地实施各种问题的解决方案。

< 前一页
Grapevine .NET(它是如何为开发人员工作的)
下一步 >
FiddlerCore .NET(它对开发人员的工作方式)

准备开始了吗? 版本: 2024.10 刚刚发布

免费NuGet下载 总下载量: 11,108,738 查看许可证 >