2

我们的团队打算从一个用 C# 编写并在 .NET 5 上运行的应用程序中使用 JavaScript 库observablehq/plot。作为概念证明,我们能够成功地使用该库在Node.js上的单独进程中运行。这种方法的缺点是我们需要自己实现所有数据序列化和进程间通信,并且我们需要在我们的应用安装程序中捆绑Node.js。我们正在寻找一种不需要Node.js的替代方法,而是直接在我们的 .NET 应用程序中托管 V8 JavaScript 引擎。目前,我们正在考虑为此使用ClearScript包。虽然我们能够使用它成功运行简单的 JavaScript 代码,但我们发现observablehq/plot及其依赖项使用了一些存在于Node.js中的 API ,但显然在ClearScript开箱即用中不可用(似乎Node.js在 JavaScript 中实现了其中一些 API,而在 C++ 中实现了一些 API) . 使这些实现可用于在 .NET 应用程序中运行的ClearScript似乎是一项重大任务,我目前无法估计其成本。

我想问是否有人必须解决相同或相似的问题,您会推荐什么方法?有没有一种简单的方法可以让所有必要的 API 都可用于在ClearScript上运行的observablehq/plot?我应该考虑在 .NET 应用程序中托管 Chromium/Edge 浏览器引擎吗?我还没有尝试过,但我认为这是可能的,因为我的理解(如果我错了,请纠正我)是WebView2控件可以用于在 .NET 上运行的 WPF 应用程序中,并且它是使用Chromium和 V8 JavaScript实现的引擎。您还有其他方法可以推荐吗?


更新:应用 GUI 建立在AvaloniaSkiaSharp 之上。最终我们可能会选择另一个图表库,也许不是用 JavaScript 编写的。但我手头的任务是专门研究是否以及如何在我们的应用程序中使用 JavaScript 库,以observablehq/plot为例,研究它的特性和性能特征。

4

1 回答 1

3

如果您正在构建WPF桌面应用程序,您应该尝试使用基于 WPF 的图表库来满足您的需求。

开源库:

  1. 氧图
  2. 交互式数据显示
  3. ScottPlot支持平移和缩放。

付费图书馆:

  1. Telerik RadChart
  2. 开发快递

这篇文章中有关WPF 图表的更多信息。

如果您使用Blazor WebAssembly

使用jsRuntime和 JSObjectReference 来导入和调用你的 Javascript observablehp 库。

如果您使用的是Xamarin.Forms,那么最好的专业库可能是 SyncFusion:

  1. 同步融合图

更新

如上所述,Avalonia 框架仅通过 webview / 嵌入式浏览器支持此功能。在这里,您有 3 个选项:

  1. Cefnet是 Chromium Embedded Framework 的 .NET CLR 绑定
  2. CefGlue与上述相同
  3. WebView Avaloria-CefGlue

有关与 Avalonia 一起使用的更多有用工具和库,请参阅Awesome Avalonia

于 2021-05-23T06:48:04.760 回答