WCF服务 - 将对象发送回调用App

时间:2011-03-02 17:16:47

标签: wcf

我的WCF服务(托管为Windows服务)有一些“SendEmail”方法,这些方法在进行一些处理后发送电子邮件。

现在,我有另一个要求,客户希望在发送电子邮件之前预览电子邮件,因此我的WCF服务需要将整个电子邮件对象返回到调用Web应用程序。 如果客户对电子邮件对象感到满意,他们只需点击“发送”,然后再拨打WCF服务即可发送电子邮件。

因为有时电子邮件对象处理可能需要更长的时间,所以我不希望调用应用程序等到电子邮件对象准备就绪。

有人可以指导我需要对我的WCF服务进行哪些更改(目前有单向操作)?

另外,请指导我是否需要进行Asynch操作或消息排队,或者可能是双面合同?

谢谢!

2 个答案:

答案 0 :(得分:1)

根据您的描述,我认为您必须:

  • 将当前操作从发送电子邮件更改为存储电子邮件(可能在数据库中)。
  • 添加其他操作以检索为当前用户准备的电子邮件
  • 添加其他方法以确认发送一封或多封电子邮件并将其从存储中删除。

过程将是:

  1. 用户将触发一些http请求,这将导致调用您的WCF服务进行处理(第一次操作)
  2. WCF服务将启动一些处理(异步或第一操作将是单向的,以便客户端不必等待)。
  3. 处理会以某种方式保存电子邮件
  4. 根据处理的持续时间,您可以使用AJAX轮询WebApp,WebApp将轮询WCF服务以准备电子邮件,或者您将创建单独的页面,用户必须访问该页面以查看准备好的电子邮件。两种方法都使用第二种操作。
  5. 用户将检查准备好的电子邮件并触发http请求,这将导致调用第三个操作以发送这些电子邮件。

答案 1 :(得分:1)

您有多种选择:

  • 使用Ladislav的方法。仅添加该服务才返回令牌,然后客户端使用令牌轮询直到超时或成功响应。此外,服务器会将这些临时电子邮件保留一段时间,并在超时后清除它们。
  • 使用双工通信,以便服务器也可以获得回调客户端的方法,并在完成处理后执行此操作。 但是不要这样做 - 这里my view为什么不呢。
  • 使用异步方法。你可以找到好的信息here