程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> 耗時很長的服務器端事件中讓客戶端得到中間過程信息的更合理的解決方案

耗時很長的服務器端事件中讓客戶端得到中間過程信息的更合理的解決方案

編輯:關於ASP.NET

耗時很長的服務器端事件中讓客戶端得到中間過程信息的更合理的解決方案

我認為《耗時很長的服務器端事件中讓客戶端得到中間過程信息的合理解決方案》一文中的解決方案不合理,屬於技術的誤用,滿篇的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; }
    
  }

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved