文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>如何管理庞大的Ajax请求?

如何管理庞大的Ajax请求?

时间:2010-09-05  来源:chingho

随着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");
     }
}

 

                                             # 优点与缺点#                                                                      

  +合并创建逻辑和实例化/配置选项。                                                                                       

  +将客户代码与创建逻辑解耦。                                                                                              

  -如果可以直接实例化,会使设计复杂化。                                                                                 

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载