0

我目前正在开展一个项目,我认为使用肥皂作为其中的一部分会是一个好主意,但我无法找到它如何以我需要的方式工作。

我有一个名为 ConsoleApp 的 C# 控制台应用程序,ConsoleApp 也将有一个 PHP Web 界面。我正在考虑做的是 PHP Web 界面以某种方式控制 ConsoleApp,所以我单击 Web 界面上的一个按钮,然后这会发送一个肥皂请求到一个肥皂服务,然后是肥皂服务,发送信息到consoleApp,并将结果返回给SoapService,然后返回给PHP。

这似乎需要分离soap服务,一个用于php接口,一个在ConsoleApp中,但这听起来不对,我想我可能误解了Soap的目的。

这怎么可能实现。感谢您的任何帮助,您可以提供

更新 根据要求,我想我会添加更多关于我要实现的目标的信息。

在控制台应用程序中,它充当电子邮件服务器,发送给程序然后继续发送的电子邮件,如果无法发送,它会重试几次,直到电子邮件进入失败状态。

Web 界面将提供电子邮件服务器正在做什么的状态,即有多少电子邮件传入、多少电子邮件尚未处理、多少电子邮件已发送以及多少电子邮件失败。

从网页上,您将能够关闭或重新启动电子邮件服务器,或者将其中一封失败的电子邮件放回待处理的队列中。

这个想法是,当用户将失败的电子邮件添加回队列时,它会发送控制台应用程序将接收的肥皂消息,将信息添加回队列,将事件记录在控制台应用程序日志文件中,增加一个计数器它如何跟踪需要处理的电子邮件。完成此操作后,它应该将响应发送回 Web 界面,说明电子邮件是否已成功添加回队列,或者是否由于某种原因失败。

我真的不想每隔这么多秒就轮询一次数据库,因为它们可能会处理大量电子邮件,因此轮询数据库会给 MySQL 服务器带来很大的负载我不想,这就是为什么我认为soap作为电子邮件服务器只需要在收到soap请求时才需要做某事。

谢谢你的帮助。

4

1 回答 1

0

每个 Web 服务都需要一个客户端(在您的情况下为 PHP)和一个服务器(ConsoleApp)。即使有两个端点,它仍然是一个 Web 服务。您的 PHP 将发送一个 SOAP 请求,ConsoleApp 将接收、处理和响应一个 SOAP 响应。

因此,当有人单击网页上的按钮时,您可以使用 JavaScript 在浏览器中构建和发送 SOAP 信封。另一种方法是将值发布到将构建和发送 SOAP 的 PHP 页面。

我不得不承认,你的情况听起来很不寻常。我个人还没有听说过网页直接与控制台应用程序对话。网页通常与 Web 服务器通信,而服务器通常是发出非典型请求的服务器,例如您对 ConsoleApp 的请求。虽然这在技术上是可行的,但我认为它会比你预期的更难。

就个人而言,我会放弃 SOAP,转而采用更简单和可扩展的解决方案。假设您可以访问数据库,当用户单击按钮时,我会让 PHP 在数据库中创建一条记录。ConsoleApp 将每隔 X 秒轮询一次数据库以查找新记录。当它找到一条新记录时,它会处理它。

这样做的好处是简单(数据库访问几乎总是比 SOAP 更容易)和可扩展(如果您预计负载很重,您可以轻松运行任意数量的 ConsoleApp 来处理所有传入请求)。此外,PHP 页面和 ConsoleApp 都没有直接依赖于对方,因此每个单独的组件都不太可能导致整个系统出现故障。

于 2012-07-09T13:39:40.337 回答