我目前正在开展一个项目,我认为使用肥皂作为其中的一部分将是一个好主意,但我无法找到它将如何以我需要的方式工作。
我有一个名为ConsoleApp的C#控制台应用程序,ConsoleApp也有一个PHP Web界面。我正在考虑做的是,PHP Web界面以某种方式控制ConsoleApp,所以我单击Web界面上的一个按钮,然后这会向soap服务发送一个soap请求,然后肥皂服务,发送有关consoleApp的信息,结果将返回给SoapService,然后返回给PHP。
这似乎需要分离soap服务,一个用于php与一个接口,一个在ConsoleApp中,但这听起来不对,我想我可能会误解Soap的目的。
如何实现这一目标。感谢您提供的任何帮助
更新 根据要求,我想我会添加更多关于我想要实现的信息。
在控制台应用程序中,它充当电子邮件服务器,发送给程序然后发送的电子邮件,如果它无法发送,则重试几次,直到电子邮件进入失败状态州。
网络界面将提供电子邮件服务器正在执行的操作的状态,即传入的电子邮件数量,尚未处理的电子邮件数量,已发送的电子邮件数量以及已发送的电子邮件数量。
您可以从网页关闭或重新启动电子邮件服务器,或将其中一封失败的电子邮件放回要处理的队列中。
这个想法是,当用户将失败的电子邮件添加回队列时,它会发送控制台应用程序将接收的soap消息,将信息添加回队列,将事件记录在控制台应用程序日志文件中,增加计数器,它是如何跟踪需要处理的电子邮件。完成此操作后,它应该将响应发送回Web界面,以说明电子邮件是否已成功添加回队列,或者是否因某种原因失败。
我真的不想继续每隔几秒钟继续轮询数据库,因为它们可能会被处理大量的电子邮件,因此轮询数据库会对数据库产生很大的负担。 MySQL服务器,我不想要,这就是为什么我认为soap作为电子邮件服务器只需要做一些事情,当它收到肥皂请求做某事。
感谢您的帮助。
答案 0 :(得分:0)
每个Web服务都需要一个客户端(在您的情况下为PHP)和一个服务器(ConsoleApp)。即使有两个端点,它仍然是一个Web服务。您的PHP将发送一个SOAP请求,ConsoleApp将通过SOAP响应接收,处理和响应。
因此,当有人单击网页上的按钮时,您可以使用JavaScript在浏览器中构建和发送SOAP信封。另一种方法是将值POST到PHP页面,该页面将构建并发送SOAP。
我不得不承认,你的情景听起来很不寻常。我个人没有听说过直接与控制台应用程序交谈的网页。网页通常与Web服务器通信,服务器通常是发出非典型请求的服务器,例如您对ConsoleApp的请求。虽然这在技术上是可行的,但我认为它会比你期望的更难。
就个人而言,我会抛弃SOAP,转而使用更简单,可扩展的解决方案。假设您可以访问数据库,我会让PHP在用户单击按钮时在数据库中创建一条记录。然后,ConsoleApp每隔X秒轮询数据库以查找新记录。当它找到新记录时,它会处理它。
这样做的好处是简单(数据库访问几乎总是比SOAP更容易)和可扩展(如果您期望负载很重,可以轻松运行任意数量的ConsoleApp来处理所有传入的请求)。此外,PHP页面和ConsoleApp都没有直接依赖于另一个,因此每个单独的组件不太可能导致整个系统出现故障。