跳至页脚内容
.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 的功能

C# 中的 DotNetify 提供了大量功能,简化了交互式实时在线应用程序的创建,包括:

  • 实时通信:利用 SignalR 实现双向的实时客户端-服务器通信,提供交互式的用户界面和即时更新。
  • 反应式编程模型:提供反应式编程模型,自动同步客户端视图和服务器端视图模型,以保持用户界面的最新信息。
  • 服务器端视图模型:简化应用程序内的状态管理和数据流,容易创建可由客户端组件绑定到的服务器端视图模型。
  • Blazor 和 JavaScript 支持:支持经典JavaScript前端和Blazor前端,允许开发人员选择最适合其需求的客户端技术。
  • 易于集成:无缝地将实时功能集成到新项目或现有项目中,并且与如WebSockets的前端UI组件框架配合良好,也可以与使用 React Native、Vue 和 Blazor 的项目混合使用。
  • 可扩展性:继承 SignalR 的可扩展性特性,使应用程序能够有效地管理大量并发连接。
  • MVVM 架构:采用模型-视图-视图模型 (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 Server应用: 从项目模板中选择Blazor Server App模板,然后点击"下一步"。
  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 支持媒体查询和响应式设计这两个现代 Web 标准。 其对现代网页标准的支持对动态装饰PDF发票、报告和文档的HTML和CSS非常有用。

  • 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属性,通知客户端新文件的位置。 这个 ViewModel 负责与 GeneratePdf.razor Blazor 组件的通信。

dotnetify .NET(开发者工作原理):图4

组件通过IDotNetifyService连接到PdfViewModel并绑定其属性,使客户端能够调用GeneratePdf函数并响应属性更改。 用户单击"生成 PDF"按钮时,将调用 ViewModel 的方法,创建 PDF 并动态更新下载 URL。 通过这种配置,网络应用程序通过结合 IronPDF 的强大文档生成功能和 DotNetify 的实时数据同步来提供响应和吸引人的用户体验。

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

结论

在一个 C# ASP.NET Core Blazor 应用程序中,将 DotNetify 和 IronPDF 集成融合了实时数据同步和动态 PDF 生成。 DotNetify 实现了客户端 Blazor 组件和服务器端 ViewModel 之间的无缝通信,从而实现了交互式和响应式应用程序。 这得到了通过 IronPDF 提供的强大工具的补充,可以直接从服务器端逻辑中创建和修改 PDF。 这种强大的组合允许开发具有创建和分发个性化文档以及实时更新功能的应用程序。

此集成利用了实时数据处理和文档生成技术,以增强用户体验,无论是用于报告、开票或任何其他与文档相关的任务。 通过按照概述的步骤,开发人员可以高效地设置和使用这些工具,释放现代 Web 应用程序开发的全新可能性。

使用 IronPDF 和 Iron Software 开发者工具,渴望探索其广泛功能的开发人员可以利用OCR、条码扫描、PDF生成等功能。 项目相关许可替代方案详细说明,允许开发人员选择最符合其需求的模式。 列出的优势有助于开发人员为众多挑战提供及时、协调和有效的解决方案。

常见问题解答

什么是DotNetify及其功能如何?

DotNetify是一个使用.NET和Blazor构建的开源框架,旨在开发实时网络应用。它使用SignalR来启用客户端和服务器之间的实时通信,促进动态互动网络应用的创建。

我如何将实时网络应用与C#中的PDF生成集成?

通过结合用于实时网络应用的DotNetify和用于PDF生成的IronPDF,开发人员可以创建动态生成和分发基于实时数据输入的PDF文档的交互式应用程序。

IronPDF提供了哪些PDF文档操作能力?

IronPDF提供创建、编辑和程序化转换PDF文档的能力。它可以将HTML、CSS和JavaScript转换成PDF,并支持各种PDF操作,使其非常适合于生成报告和动态文档。

DotNetify如何增强实时应用开发?

DotNetify通过提供同步客户端视图和服务器数据的编程模型来增强实时应用开发,支持JavaScript和Blazor,为灵活的开发环境创造响应式和互动的网络界面。

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

在DotNetify中,SignalR可以实现实时的客户端-服务器通信,这是创建交互式和响应式网络应用必不可少的。这促进了应用内的即时更新和动态交互。

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 核心代码库的原始开发者,他从公司成立之初就开始塑造公司的产品架构,与首席执行官 Cameron Rimington 一起将公司转变为一家拥有 50 多名员工的公司,为 NASA、特斯拉和全球政府机构提供服务。

Jacob 拥有曼彻斯特大学土木工程一级荣誉工程学士学位(BEng)(1998-2001 年)。他的旗舰产品 IronPDF 和 Iron Suite for .NET 库在全球的 NuGet 安装量已超过 3000 万次,其基础代码继续为全球使用的开发人员工具提供动力。Jacob 拥有 25 年的商业经验和 41 年的编码专业知识,他一直专注于推动企业级 C#、Java 和 Python PDF 技术的创新,同时指导下一代技术领导者。

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me