这是我的设置:我为本地客户端机器编写了一个 .NET 应用程序,它实现了一个也可以在网页上使用的功能。为了使这个例子简单,假设客户安装了一个软件,他可以在其中输入一些数据并取回一些数据。
这个想法是创建一个网页,该网页包含一个表单,用户在该表单中输入相同的数据并获得与上述相同的结果。由于公司有可用的网络服务器,最初的想法是创建一个单一的网络服务,但由于未知原因而被驳回。“服务”不应作为 Web 服务运行,而应由 PHP 脚本调用。这目前是通过从 PHP 中通过 shell_exec 调用单声道应用程序来实现的。
所以现在我被我的应用程序的单声道端口卡住了,它工作正常,但执行时间太长。我已经删除了所有不必要的 dll、方法等,但是通过命令行调用应用程序 - 通过命令行参数提交所需的数据 - 大约需要 700 毫秒。我们预计每秒大约 10 次点击,所以这只能在为此任务设置大量服务器时才有效。
我假设 700m 与每次启动应用程序的成本有关,因为如果我只处理一次或五百次请求(我采用原始输入,稍微改变它并做500 次迭代,每次“新”数据。从第二次迭代开始,处理时间下降到每次迭代大约 1ms)
我的下一个想法是将单声道应用程序设置为远程服务器,这样它只需启动一次,然后就可以处理传入的请求。因此,我编写了另一个作为客户端的单声道应用程序。调用客户端,让客户端将数据传递给服务器并检索结果现在需要 344 毫秒。这更好,但仍然比我预期的要慢得多。
然后,我根据这篇博文从头开始实施了一个新项目,但遇到了同样的性能问题。
问题是:我是否缺少与可以提高客户端/服务器速度的单项目相关的内容?尽管为此任务创建 Web 服务的想法被驳回了,但 Web 服务在这种情况下会表现得更好(因为我不需要客户端应用程序来调用该服务),尽管据说远程处理比 Web 服务更快?
我本可以更清楚地说明这一点,但目前还不能实现 web 服务(请不要问为什么,我没有写要求;))
同时我检查了它确实是客户端的启动,这在远程处理场景中花费了大部分时间。
我可以想象从命令行通过管道访问服务器,这非常适合我的场景。我想这将使用套接字来完成?