【发布时间】:2013-01-08 12:49:13
【问题描述】:
我有一个用 C# 编写的用于处理数字文档的 Windows 服务,以及一个用 PHP 编写的 Web 应用程序。我需要能够通知 C# 服务新文档已准备好进行处理。
目前,C# 服务每 10 秒读取一次 MySQL 数据库,以查看是否有新任务要执行。这会导致 Web 应用程序的响应延迟 10 秒。我希望能够在文档准备好后立即触发 C# 服务。
我正在寻找一个允许 PHP 立即通知 C# 服务的答案。
以下是我的一些可能的想法;
- 在 PHP 和 C# 之间使用共享内存对象,并让 C# 中的线程等待该对象发出信号。用 PHP 可以吗?
- PHP 使用 localhost 上的套接字连接到 C#,发送 nak 并断开连接。这对我来说似乎效率低下。
- 将 MySQL 配置为使用内存表,并让 C# 服务每秒查询一次该表。
- 在 C# 中创建某种使用 XML 或 SOAP 的 Web 服务是否困难,通过 PHP 调用该服务是否会有任何延迟(+1 秒)?
这就是我能想到的。也许应该有某种标准方式,我只是不知道。
【问题讨论】:
-
选项 2 和 3 允许您的 Web 应用扩展到多个主机。 like 您的选项 2 和 3 并不少见。选项 1 听起来……不简单。
-
@svidgen 我同意。向可扩展性开放它是一个好主意。文档处理非常耗时。
-
您新添加的选项 4 听起来是最常见的解决方案。 M$ 将 SOAP 服务用于几乎所有的 Dynamics 集成内容。我还应该注意,他们不只是使用 SOAP 服务。他们还执行一些轮询......如果您需要低延迟,这不是一个好方法。只是你没有做任何不寻常的事情,除了你的第一个选项。
-
我不懂 PHP,但您可以在您的服务中使用 OnCustomCommand。然后您可以从另一个应用程序发送命令:stackoverflow.com/questions/3695245/…
标签: c# php mysql windows-services