我需要调用编译程序(例如,C++)或来自JavaScript的脚本,其中可以向程序/脚本传递和从程序/脚本接收大数据块(更具体地,相当长的JSON),其大小可能超过数百KB。
我已经有一个调用批处理文件的工作自定义协议,但此选项不适合,因为可以传递到脚本的数据大小有限制,并且脚本只能返回整数值。
到目前为止,我无法找到任何参考资料,可以为这个问题提供明确的答案。最简单的解决方案(对我来说)是使用PowerShell脚本,但我看到一些帖子说,这样的脚本是从cmd激活的,因此会显示与批处理脚本相同的限制。此外,我从这些帖子中推断,如果我使用编译后的程序(即,从CMD激活)。
我正在征求与上述替代办法有关的建议,如果这些办法都行不通,我将寻求一种可能提供可靠解决办法的不同办法。
**注意:**我不是在问代码,而是在问一个可行的方向。
编辑
在我最初的帖子中,我错过了我正在开发的应用程序的一个重要特性:它应该(就像现在一样)能够在不需要任何类型的Web服务器的情况下工作,这意味着,当您使用浏览器(如Google Chrome或MS Edge)打开HTML文件时,应用程序将按预期工作。因此,任何基于服务器端操作的方法都不适合我。
1条答案
按热度按时间pbgvytdp1#
从JavaScript编译程序或脚本并传递大块数据可以通过各种方法实现。让我们探索一些可行的方向:
1.HTTP REST API:一种常见的方法是为C++程序或脚本创建HTTP REST API。您可以使用Node.js(带有JavaScript. js)、Flask(Python)或ASP.NET(C#)等Web服务器框架来构建API。然后,JavaScript可以向该API发出HTTP请求,以发送数据并接收响应。HTTP对处理大负载有很好的支持,你可以使用JSON进行数据序列化。
1.子进程(Node.js):如果您在Node.js环境中工作,则可以使用
child_process
模块来生成外部进程,如C程序或脚本。这允许您通过stdin/stdout流与子进程通信。您可以将数据传递给子进程并读取其输出。这种方法可以处理大数据,只要你有效地管理它。1.IPC(进程间通信):如果你想与编译后的程序通信,你可以实现自定义IPC机制,比如命名管道(在Windows上)或套接字(在类Unix系统上)。这些方法允许您在JavaScript代码和外部程序之间建立通信通道。IPC可以处理大数据,但它需要更多的低级编程。
1.基于数据库或文件的方法:与直接将大型JSON数据传递给外部程序不同,您可以将数据保存在数据库或文件(例如SQLite,JSON文件,甚至是Redis等临时数据库)中,然后让外部程序从该源读取数据。程序可以将结果写回相同的数据库或文件,并且您的JavaScript代码可以在需要时读取它们。
1.留言内容:您可以使用RabbitMQ、Apache Kafka或Redis Pub/Sub等消息队列系统在JavaScript代码和外部程序之间传递消息。这种方法可以处理大量数据并提供异步通信。
1.gRPC:如果您想要高性能的解决方案,gRPC是一个选项。它允许您使用Protocol Buffers定义具有方法和数据结构的服务,并在JavaScript代码和外部程序之间执行高效的RPC(远程过程调用)。
1.WebAssembly:如果你的C程序可以编译成WebAssembly,你可以直接在Web浏览器或Node.js环境中运行它。这允许您从JavaScript执行C代码,而不需要外部进程。
方法的选择取决于您的具体要求、工作环境以及您对所涉及技术的熟悉程度。每种方法都有其优点和缺点,因此在决定采用哪种方法时,请考虑项目的限制和目标。