【问题标题】:Using a .NET class library in NodeJS app using Blazor在使用 Blazor 的 NodeJS 应用程序中使用 .NET 类库
【发布时间】:2019-08-26 06:34:03
【问题描述】:

我有一个 .NET Standard 项目,其中包含一堆模型和方法,我想在用 TypeScript 编写的 NodeJS 应用程序中使用它们。我看到的Blazor JavaScript interop 的所有示例都通过 Razor 文件与 JS 集成,但我找不到任何显示如何将 .NET 代码与 NodeJS 集成的示例。这有可能吗?如果可以,怎么做?谢谢!

【问题讨论】:

    标签: node.js typescript asp.net-core webassembly blazor


    【解决方案1】:

    这是不可能的,客户端 Blazor 仅在浏览器中工作,互操作仅与浏览器 JS 一起使用,因为浏览器在其内部运行 WASM 和 JS。

    以前,理论上您可以使用 NodeServices 将一些 NodeJS 集成到 ASP.NET Core 应用程序中,但它们在 .NET Core 3 中将过时。请参阅https://github.com/aspnet/AspNetCore/issues/12890

    如果您想在 NodeJS 中从 Blazor 运行一些代码,您可能必须创建单独的命令行应用程序并在它与您的 NodeJS 应用程序之间进行通信。

    【讨论】:

    • WebAssembly 从版本 8 开始在 NodeJS 中得到支持。请参阅“WebAssembly JavaScript API”部分 here,它展示了如何在 nodejs 中运行 .wasm 文件。所以我想只需要将 C# 编译为 wasm。 Blazor 有可能吗?
    • 更详细地说,客户端 Blazor 是执行 C# DLL 的 Mono。您很可能可以让客户端 Blazor 在 NodeJS 中运行,但它给您带来了什么?您将在 WASM 中运行 Mono。要调用一些 C# 代码,您可能必须编写一些额外的 C# 代码才能在 Mono WASM 中运行它,此时您可以在 Mono/.NET Core 下运行 C# 代码并以某种方式与 NodeJS 通信。当前状态下的客户端 Blazor 不适合您的用例。
    • @orad 正如@codevision 所说,这意味着您需要自己发布 Mono 环境(编译为 WASM)和所需的所有 DLL(包括所有系统内容)。在构建客户端 blazor 应用程序时,bin\Debug\netstandard2.0\dist 文件夹将包含所有必需的文件,包括 DLL,以及作为 WASM 的 Mono 运行时。
    • 这不是 Blazor,但您可以在 NodeJS github.com/ncave/dna-redux 中运行 C#
    猜你喜欢
    • 1970-01-01
    • 2022-10-13
    • 1970-01-01
    • 2021-06-24
    • 2020-06-15
    • 1970-01-01
    • 1970-01-01
    • 2019-07-17
    • 1970-01-01
    相关资源
    最近更新 更多