如何解决如何使用 .NET 5 应用程序中的 observablehq/plot?
我们的团队打算使用用 C# 编写并在 .NET 5 上运行的应用程序中的 JavaScript 库 observablehq/plot。作为概念证明,我们能够成功地使用在 {{} 上的单独进程中运行的该库3}}。这种方法的缺点是我们需要自己实现所有数据序列化和进程间通信,并且需要在我们的应用安装程序中捆绑 Node.js。我们正在寻找一种替代方法,它不需要 Node.js,而是直接在我们的 .NET 应用程序中托管 V8 JavaScript 引擎。目前,我们正在考虑为此使用 Node.js 包。虽然我们能够使用它成功运行简单的 JavaScript 代码,但我们发现 observablehq/plot 及其依赖项使用了一些存在于 Node.js 中的 API,但显然在开箱即用的 ClearScript 中不可用(Node.js 似乎在 JavaScript 中实现了其中一些 API,而在 C++ 中实现了一些 API)。使这些实现可用于在 .NET 应用程序中运行的 ClearScript 看起来是一项重要的任务,我目前无法估计其成本。
请问是否有人必须解决相同或类似的问题,您会推荐什么方法?有没有一种简单的方法可以让 observablehq/plot 使用 ClearScript 上运行的所有必要的 API?我应该考虑在 .NET 应用程序中托管 Chromium/Edge 浏览器引擎吗?我还没有尝试过这个,但我认为这是可能的,因为我的理解(如果我错了,请纠正我)是 ClearScript 控件可以在 .NET 上运行的 WPF 应用程序中使用,它是使用Chromium 和 V8 JavaScript 引擎。您还有其他方法可以推荐吗?
更新:应用 GUI 构建在 WebView2 和 Avalonia 之上。最终我们可能会选择另一个图表库,也许不是用 JavaScript 编写的。但我手头的任务是专门研究我们是否以及如何在我们的应用中使用 JavaScript 库,以 observablehq/plot 为例,并研究其功能和性能特征。
解决方法
如果您正在构建 WPF 桌面应用程序,您应该尝试满足您需求的基于 WPF 的图表库。
开源库:
- OxyPlot
- InteractiveDataDisplay
- ScottPlot 支持平移和缩放。
付费图书馆:
在这篇文章中关于 WPF charts 的更多信息。
如果您使用的是 Blazor WebAssembly:
使用 jsRuntime 和 JSObjectReference 导入和调用您的 Javascript observablehp 库。
如果您使用的是 Xamarin.Forms,那么最好的专业库可能是 SyncFusion:
更新:
如上所述,Avalonia Framework 将仅通过 webview/嵌入式浏览器支持此功能。这里有 3 个选项:
- Cefnet 是 Chromium 嵌入式框架的 .NET CLR 绑定
- CefGlue 与上述相同
- WebView Avaloria-CefGlue
有关与 Avalonia 一起使用的更多有用工具和库,请参阅Awesome Avalonia。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。