如何管理龐大的Ajax請求?

來源:互聯網
上載者:User

隨著Ajax的流行,現在的項目使用Ajax已經很普遍了,可以說是大量的使用Ajax了。由於存在大量的Ajax請求,變得難於管理。於是我們經常統一請求,唯一頁面或者唯一的入口。於是便有以下類似的代碼:

public partial class Ajax : System.Web.UI.Page    {        protected void Page_Load(object sender, EventArgs e)        {            string comm = Request["comm"];            if ("editUserInfo".Equals(comm))            {                EditUserInfo();            }            else if ("addUserInfo".Equals(comm))            {                AddUserInfo();            }            ……              else if ("deleteUserInfo".Equals(comm))            {               DeleteUserInfo();            }           Response.End();        }        public void EditUserInfo()        {           ……         }        ……}
 
隨著客戶需求的變化、二期開發,也許有著更多的Ajax請求,這將製造了龐大的if…else if… … else if…,同時每個請求都有
相應的操作,這將造成這個類過於龐大,不利於管理、理解。
 
Factory模式正適用於這種場合。它使用一個類封裝建立邏輯和客戶代碼的執行個體化/配置選項。UML圖如下(用word畫,不是很標準):
 
 

樣本:

一、建立抽象類別AjaxComm。

public abstract class AjaxComm{    public HttpRequest Request =HttpContext.Current.Request;    public HttpResponse Response = HttpContext.Current.Response;    public abstract void Execute();}

二、Factory類,根據使用者請求的Comm命令,建立相應的類,並執行相應的操作。

public partial class Ajax : System.Web.UI.Page{    protected void Page_Load(object sender, EventArgs e)    {        string comm = Request["comm"];
        //根據comm建立相應的類。類的命令規則:比如comm為“AddUser“,則相應的類名為“AddUserComm”        AjaxComm ajaxComm = (AjaxComm)Assembly.Load("Web").CreateInstance("Web.Ajax." + comm+"Comm");        if (ajaxComm != null)        {            ajaxComm.Execute();           }        Response.End();     }}

三、實現相應的命令類。

public class EditImgComm:AjaxComm{    public override void Execute()    {        ……        Response.Write("Success");     }}

  # 優點與缺點#                                                                      

  +合并建立邏輯和執行個體化/配置選項。                                                                                       

  +將客戶代碼與建立邏輯解耦。                                                                                              

  -如果可以直接執行個體化,會使設計複雜化。                                                                                 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.