怎样使用Ajax 简化我们的分层设计

不打算写太长,只写一个方面:简化我们的分层设计,反馈好的话,接着写...

正常情况下,我们的系统 分为 entity dataaccess business ui 四层,这个我就不罗嗦了.

考虑如下常见情况(举个最简单的例子)
比如有两张表: User, Experience. Experience 有一个外键,指向User


考虑没有Ajax的情况,要实现这样一个简单的页面:某个User的详细信息页面,页面需要同时列出 User信息,及这个User的 Experience信息。

正常情况,我们实现此页面的逻辑为:
数据库存储过程级别: 使用 表之间的 Join 方式,输出 User + Experience 的复合信息。
Entity Layer:将数据库返回来的数据,分解,分别映射到 某个 User 及 Experience 集合。
Business Layer : 组合两种类型的 Object 返回给页面
UI Layer: 页面读取数据...

说明:我写的这是比较通用的方式,自然有很多其他实现方式,但是,不管怎样,必然会涉及 同样一次操作涉及多种对象,导致 服务器端 要花很多时间处理 这些对象之间的关系。如上的例子,只涉及到 2 张表,1 个级别的关联,如果实际情况 超过 2 张表,超过 1 个级别呢?...


合理应用 Ajax,我们可以完全避免此类情况的出现,任何原子性的操作,只涉及到一种对象
还是对上面的例子:某个User的详细信息页面,页面需要同时列出 User信息,及这个User的 Experience信息。

应用Ajax我们可以怎么做呢?
首先直接输出 User 的详细信息,页面获取 User 的id 之后,再 Ajax 请求 其 Experience 信息。
这个过程,相信大家对比一下,很轻松就可以发现如下几个优点:
1. 整个过程 不需要浪费 服务器资源处理对象之间的关系
2. 每次请求,只涉及一个类型的对象
3. 无论涉及多少张表,及 多少张表之间的关联,通过这种方式,均特别容易实现
4. 任何 layer 的设计,只需要正对一种对象 的 (增,删,改,查...)。
5........


最近写了三个站点,按时间先后:
1. 自己的站点:[url=http://www.city366.com/]http://www.city366.com/[/url] 纯 Ajax 网站,整个网站只有一个页面(site map 除外,那不是给人用的,是为SEO做的).如果你打开source code,可以发现,几乎没有任何 html 代码,全部通过js创建 html objects.

2. 公司的项目:[url=http://www.backofmyhand.com/]http://www.backofmyhand.com/[/url] ,也是纯 Ajax 功能站点。 写了很多控件 scroll bar , 100行js代码+ css 实现的一棵 tree...,四个级别的缓存 DB-->XML-->Cache-->Client ......

3. 自己的站点(还没做完): [url=http://inn.city366.com/]http://inn.city366.com/[/url]本来是打算借这个项目 尝试 SAAS 的,推广了一段时间后发现,国内的用户 至少5年后才会 认识SAAS,使用SAAS不知道要到 猴年马月,尝试基本宣告失败。
站点3,也写了自己写了个日历,尝试了很多新的东西,另外 [url=http://inn.city366.com/housedetail.aspx?houseid=1]http://inn.city366.com/housedetail.aspx?houseid=1[/url] 这个页面,实现了如上的事例 (先显示房子信息,然后 Ajax 调用订单,反映在右侧的日历上)


谢天谢地,不知不觉也罗嗦了一大堆...
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值