2011-03-02 48 views
0

我主持作为Windows服务WCF服务与它的大多数方法目前被定义为:但是WCF服务 - 非同步操作或排队消息

[OperationContract(IsOneWay = true)] 

,现在我需要发送响应返回给调用Web应用程序为这些服务方法。现在,由于服务方法有点繁重(仅供参考,他们报告的方法需要为某个记录进行邮件合并),我想要排队或异步处理,所以基本上当请求被发送到服务时,它应该将请求保存到数据库/队列,并将Request-Id返回给调用Web应用程序。

  • 同时,WCF服务可以处理来自队列或数据库的未完成的请求。
  • 然后调用Web应用程序可以ping通WCF服务以获取请求状态,因为它具有Request-Id或
  • 当完成对应于请求标识的进程时,WCF服务可以ping通调用应用程序。

为了达到上述目的,任何人都可以请指导我需要对我的WCF服务(目前有全部单向操作)做出哪些改变?

另外,请指导我是否需要进行异步操作或消息队列?

谢谢!

+0

我个人会坚持“ping状态更新”。另外,您的客户端在创建端点时会变得更加臃肿,以便服务可以传回消息。 – 2011-03-02 16:55:23

回答

0

当然,异步很简单: 删除相关OperationContract上的OneWay并重新生成Service WITH异步方法。 Silverlight强制您使用异步操作是有原因的。他们确实迫使你重新思考你的用户界面。