首先,声明我只是大概了解了JSON的作用,对ashx很陌生。
今天看见一个源码项目里面的联动大致做法是,把所有页面用到的DB数据read到前台,用JSON的形式保存,通过AJAX实现联动。我觉得这种做法完全颠覆了我一贯的前台操作响应后台读写数据,这种低效率的方式。而我没仔细研究他的ashx,通过了解了JSON是什么后,我想,原理是把所有用到的数据预先拿出来,封装成不同的JSON对象,再根据需要返回给页面去数据展示。那么为什么不直接再后台页面处理这个load all data page need的操作呢?我知道ashx肯定有什么作用,我这个想法也肯定是不合适,所以在这里咨询一下各位。
ashx 跟 (页面)aspx、(Web 服务)asmx 一样,都实现了 IHttpHandler,也就是说他们都能够处理 用户的请求;ASPX 经过一系列动作(验证请求、模块处理、页面生命周期等)最后 返回的个页面。ashx 同样能够处理请求,不同的是;他不必做一系列动作、不用经过一连串的事件处理、一大堆的控件状态管理(加载并解析ViewState,还原、更新控件的值、保存ViewState等),直接返回操作结果,也就不用耗费更多的服务器资源了;返回的格式可以灵活处理。一般来说,获取、处理动态生成的图片,像验证码 、AJAX 动态获取数据等问题都可以并且最好是用 ashx 来处理。
为什么用ashx?
其实这个也不是一定要用ashx的
用其它的都行,只要能输出数据.
比如说aspx,为什么不用aspx呢?
aspx在这方面比ashx相比,性能就稍微差点.
而且aspx页面在生成的时候可以看到有很多多余的html代码
json输出后,不能有其它代码的.
如果有100个页面要获取同一个信息,你是否需要100个页面后台?
ashx可以看作没有UI的page页,只处理纯粹的数据,处理完后以一种松耦合的方式如xml或json输出到前台需要的页aspx,仅需jquery、extjs等js框架就可以实现数据呈现,最大的好处就是在不同的页aspx中重用。
ashx轻量
其实我觉得这里不是ashx的问题,是思路的问题,你看的源代码的思路是使用ajax技术来进行按需获取数据,而你的思路还是页面发起请求,页面去查询数据库,获得结果显示到客户端。这两两种不同的思想模式,所以我个人认为你这里要明白他为什么要用ashx,那就要搞明白他这里使用ajax技术的原因,明白这个原因后在考虑ashx页面。
说到ashx其实这个你完全可以用aspx页面来代替,不过记得使用aspx页面时记得保留最顶部代码,然后把html标签代码全部去掉...
ashx的相关介绍,可参考文章http://www.cnblogs.com/lin614/archive/2008/01/18/1044734.html
ashx负责处理数据。完了之后,保存为json格式,在aspx页面中实现联动。就类似百度、谷歌的搜索控件的效果一样。。。