首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

長時間伺服器任務進度回報:拒濫用 AJAX,採用物件導向訊息持有者模式

     編輯:關於ASP.NET

原方案缺失分析

  • 分層滲透:AJAX、PageLoad 等 UI 層邏輯滲透進業務邏輯層。
  • 執行緒職責過重:背景執行緒同時負責任務執行與進度推送,違反單一職責原則。

並非 Web 多線程難以處理,而是長期面向頁面開發導致 OO 設計能力退化。

物件導向解決方案:MessageHolder 模式

核心概念:每筆任務對應一個訊息持有者物件,封裝狀態與行為。

public abstract class MessageHolder 
{
    public DateTime SendTime { get; set; }
    public string ReceiverMail { get { return Receiver.Mail; } }
    public string ErrorMessage { get; set; }
    public int SendCount { get; set; }
    public bool SendExpired { get { return SendCount > 5; } }
    public bool SendOk { get; private set; }
    public Guid Id { get; private set; }
    public string SendResult 
    { 
        get 
        { 
            if (SendOk) return "發送成功";
            if (SendExpired) return "發送失敗";
            return "等待發送";
        } 
    }
}

public class MailMessageHolder : MessageHolder 
{
    public string Title { get; private set; }
    public string Text { get; private set; }
}

優勢

  • 業務邏輯層零依賴 UI 技術(AJAX、SignalR 等)。
  • 狀態與行為封裝於物件,易於擴充(如加入重試策略、優先級佇列)。
  • 前端僅需定時輪詢 API 取得 List<MessageHolder> 序列化資料,顯示進度。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved