通过WCF从SMS提供程序检索SMS消息

时间:2010-02-26 00:10:00

标签: wcf sms

我有一个asp.net Web应用程序来调用WCF服务中的函数来发送短信。发送消息后,WCF服务需要继续检查SMS提供商的虚拟收件箱,并通知我的Web应用程序是否有任何新的回复。可能有多个Web应用程序要使用此服务。实现这个的好方法是什么?

目前我在这样的WCF服务中有一个功能,它是OneWay运营合同。 我正在考虑将实例管理配置为PerSession。

    public void Send(SMSMessage message)
    {
        bool startRetrieving = _smsContext.Send(message);

        //keep polling virtual inbox to retrieve replies until it's expired
        while (startRetrieving && DateTime.Now < message.ReplyExpiry)
        {
           //send a http request to check inbox
           //if there is any new reply, notify my web application by making 
           //a http request
           //Check the inbox every xxxx seconds.
           System.Threading.Thread.Sleep(xxxx);
        }

        //if it is expired, tell sender app that time to receiving reply is expired
    }

1 个答案:

答案 0 :(得分:0)

这是一种相关模式非常适合的情况。

http://www.eaipatterns.com/ramblings/09_correlation.html

基本思路是每个呼叫或客户端都有自己的id,然后当回答时,你可以通过相关id来确定结果应该去哪里。

您如何实施它将取决于您的服务需要多么强大。如果您使用每个会话,并且机器重新启动,并且您丢失了会话,这可以吗?

当我们有一个不能丢失信息的系统时,我们会设置2个服务。一个用于发送呼叫,另一个用于将数据发送回客户端。如果发生任何故障,系统重新启动时,所有内容都将正确发送。