php-soap客户端和c#soap服务器


php soap client and c# soap server

我目前正在做一个项目,我认为将soap作为其中的一部分是个好主意,但我找不到它将如何以我需要的方式工作。

我有一个名为ConsoleApp的C#控制台应用程序,ConsoleApp也将有一个PHP web界面。我想做的是,PHP web界面以某种方式控制着ConsoleApp,所以我点击web界面上的一个按钮,然后这会向soap服务发送一个soap请求,然后是soap服务,将信息发送到ConsoleApp,结果会返回到SoapService,然后返回到PHP。

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

如何才能做到这一点。感谢您为提供的任何帮助

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

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

网络界面将提供电子邮件服务器正在做的事情的状态,即有多少电子邮件收到,有多少尚未处理,有多少已经发送,有多少失败。

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

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

我真的不想每隔几秒钟就对数据库进行一次轮询,因为可能会有大量的电子邮件被处理,所以轮询数据库会给MySQL服务器带来很大的负载,这是我不想要的,这就是为什么我认为soap作为电子邮件服务器只需要在收到soap请求时做一些事情。

谢谢你的帮助。

每个web服务都需要一个客户端(在您的例子中是PHP)和一个服务器(ConsoleApp)。即使有两个端点,它仍然是一个web服务。您的PHP将发送一个SOAP请求,ConsoleApp将接收、处理该请求并用SOAP响应进行响应。

因此,当有人点击网页上的按钮时,您可以使用JavaScript在浏览器中构建和发送SOAP信封。另一种选择是将值POST到一个PHP页面,该页面将构建并发送SOAP。

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

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

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