耗时很长的服务器端事件中让客户端得到中间过程信息的更合理的解决方案2011-12-18 博客园 xiaotie耗时很长的服务器端事件中让客户端得到中间过程信息的更合理的解决方案我认为《耗时很长的服务器端事件中让客户端得到中间过程信息的合理解决方案》一文中的解决方案不合理,属于技术的误用,满篇的ajax这个词很容易给读者造成误导 。原需求:B/S结构的系统里,用户点一个按钮系统开始发送上千封邮件,要求把发送信息(发送成功数,失败数,剩余数量...)动态实时的反馈给客户.原文的技术误用之处:(1)ajax,pageload 这些ui层的东东渗透到逻辑层里去了(2)thread的职责太多并不是网页上的多线程不好搞,而是Web开发搞久了,基本的OO设计能力下降了,或者根本就忽略OO设计了,眼中只有页面。以原文这个例子而言,你不把它当成Web开发,一切就变得很简单了。我的解决方案:首先,得有一个类管理每条信息。
  public abstract class MessageHolder  {    public DateTime SendTime { get; set; }    public String ReceiverMail { get { return Receiver.Mail; } }    public String ErrorMessage { get; set; }    public Int32 SendCount { get; set; }    public Boolean SendExpired { get { return SendCount > 5; } }    public Boolean SendOk { get; private set; }    public Guid Id { get; private set; }    public String SendResult {      get {        if (SendOk) return "发送成功";        else        {          if (SendExpired) return "发送失败";          else return "等待发送";        }      }    }      }    public class MailMessageHolder : MessageHolder  {    public String Title { get; private set; }    public String Text { get; private set; }      }