关于
						MVC
				
				
						:
						
								
								
						
				
		
		
				
						 
				
		
		
				
						1、  
				
				Ajax
				必然会带来
				Web
				开发
				Model2
				模型的变革。
		
		
				
						a)         
				
				MVC
				的角色由服务器端向客户端靠拢,或者,干脆转为其他更合适的形式,
		
		
				
						b)        
				
				V(View)
				的角色将不再仅仅是不起眼的
				jsp
				,在
				Web2.0
				的时代,它将拥有自己独立的一套体系结构。即行为
				(Java Script/ECMAScript)
				,结构
				(XHTML)
				和样式
				(CSS)
				。
		
		
				
						c)        
				
				M
				的角色将更像
				DTO
				,它的形式可以由多种,比如:
		
		
				
						
								                         i.              
				
				字符串
		
		
				
						
								                       ii.              
				
				JS
				对象
		
		
				
						
								                      iii.              
				
				应用更为广泛的
				XML
		
		
				对应的,他们的传输协议也有多种(当然,都是基于
				HTTP
				):
		
		
				
						
								                         i.              
				
				JSON-RPC
				(
				JS
				对象)
		
		
				
						
								                       ii.              
				
				Burlap(
				基于
				XML
				的
				Java
				对象
				)
		
		
				同时,客户端
				-
				服务器端对象之间的转化也将成为一个必须解决的问题。目前,
				JSON
				,
				Buffalo
				已经比较好的做到了这一点。
		
		
				
						d)        
				
				C
				的角色将更为靠近客户端,它将利用
				Js
				的特点,发挥其快速、灵活的特点。它将取代大部分原服务器端控制器的作用。从而使服务器端的编程更加专注与业务逻辑。
		
		
				服务器端的控制器层则会变得更薄,它将专注于:
		
		
				
						
								                      iii.              
				
				服务器端数据验证与安全保护
		
		
				
						
								                     iv.              
				
				与业务逻辑层之间联结的纽带
		
		
				但是,这一层的功能一旦集成到业务逻辑层,它将失去主要的作用,很可能退出服务器端的领域。
		
		
				
						 
				
		
		
				
						 
				
		
		
				
						2、  
				
				传统的
				MVC
				框架
				(
				比如
				Struts
				,
				WebWork)
				与
				Ajax
				之间应该是竞争的关系,因为:
		
		
				
						a)         
				
				传统的
				MVC
				框架在本质上,都是同步调用,而非
				Ajax
				提倡的异步调用。
		
		
				
						b)        
				
				传统的
				MVC
				框架试图用标签来集成一部分
				Ajax
				应用。但这注定只能是一种过渡行为,因为:
		
		
				
						
								                         i.              
				
				传统的
				Tag
				带来的不便正逐渐显现出来。
				(
				学习成本、不利于编辑、客户端与服务器端代码的夹杂等
				)
		
		
				
						
								                       ii.              
				
				Tag
				对
				Js
				的封装有限,无法发挥
				Js
				强大灵活的功能
		
		
				
						
								                      iii.              
				
				Tag
				是服务器端生成的代码,过多的参与客户端的行为,不利于程序的分层实现。
		
		
				
						
								                     iv.              
				
				使用
				Tag
				使得页面展现逻辑的控制变得复杂和难于理解。它将使动作与表现的分离变得困难。也使得客户端与服务器端逻辑的分离变得不可能。试想用一段代码来控制一个自己也不知道会不会生成,能生成什么样
				HTML
				的
				Tag
				?
		
		
				
						c)        
				
				基于第一部分提出的原因,
				Ajax
				所提倡的新的
				MVC
				方式与传统的
				MVC
				框架所实现的方式已经有本质的区别,它们之间的竞争也就不可避免了。
		
		
				
						3、  
				
				传统的
				MVC
				框架适用的地方(
				Web Request
				适用):
		
		
				
						a)         
				
				重视
				URL
				的应用,如新闻、论坛等
		
		
				
						b)        
				
				重视搜索引擎优化
		
		
				
						c)        
				
				重视用户传统习惯(后退键问题等)
		
		
				实际上,上边所说的问题
				Ajax
				都可具有相应的解决方案,但是由于并不能显示出更多的优势。所以传统的
				MVC
				应用框架仍然有存在的空间。
		
		
				
						 
				
		
		
				另外,强烈推荐的两个
				PPT
		
		
				庄表伟:
		
		
				
						
								
										
												http://www.ajaxcn.org/space/start/2006-03-13/1/Ajax%E6%8A%80%E6%9C%AF%E5%9C%B0%E5%9B%BE.pps
										
								
								
								
						
				
		
		
				
						曹晓刚:
				
				
						
								
								
						
				
		
		
				
						
								http://www.redsaga.com/down/Use-RIA-And-Metadata-In-J2EE-Enterprise-Dev.ppt
						
				
		
		
				
						 
				
		
		
				这个也不错,不过没完全看懂:
		
		
				
						
								http://alex.dojotoolkit.org/wp-content/LowLatencyData.pdf
						
				
		
		
				
						 
				
		
		
				
						 
				
		
		
				
						关于用户体验:
						
								
								
						
				
		
		
				
						 
				
		
		
				
						1、  
				
				更佳的用户体验是
				Ajax
				应用推广的原动力
		
		
				
						a)         
				
				2006
				年的
				Web
				开发将是注重用户体验的一年
		
		
				
						b)        
				
				基于异步的
				Web Remote
				调用将给用户带来更好的用户体验
		
		
				
						2、  
				
				交互式设计
		
		
				
						a)         
				
				传统的设计令人恼怒,也不能提高生产率
		
		
				
						b)        
				
				基于目标导向的交互式设计
		
		
				
						c)        
				
				
						
								http://www.dedream.com
						
				
		
		
				
						 
				
		
		
				
						关于
						Web
				
				
						标准和
						Web2.0
				
		
		
				
						
								 
						
				
		
		
				
						1、  
				
				Ajax
				需要建立在
				Web
				标准之上,因此,学习
				Ajax
				必须学习
				Web
				标准。
		
		
				
						2、  
				
				使用
				Web
				标准能给
				Web
				应用带来更多的好处
				.
				。
		
		
				
						a)         
				
				具体的可以参见《网站重构》一书。
				
						
								http://www.china-pub.com/computers/common/info.asp?id=18781
						
				
		
		
				
						3、  
				
				使用
				Ajax
				可以实现
				Web2.0
				的一堆概念
		
		
				
						 
				
		
		
				
						关于
						RIA
				
				
						(胖客户端):
						
								
								
						
				
		
		
				
						1、  
				
				Ajax
				是否属于
				RIA
				方案?
		
		
				这种争论意义不大,但是
				Ajax
				确实带来了与其他
				RIA
				方案相似的用户体验。在
				RIA
				重新引起人们重视的今天。
		
		
				
						2、  
				
				比较其他的
				RIA
				方案,
				(Flash\Flex
				,
				Java Web Start
				,
				Applet
				,
				Eclipse Remote
				,
				ActiveX)
				,
				Ajax
				更容易被
				Web
				开发人员所接受
		
		
				
						3、  
				
				使用
				XML
				做
				Web Remote
				数据传输体,可以使
				Ajax
				应用方便的迁徙到其他
				RIA
				方案。
		
		
				
						 
				
		
		
				
						其他:
						
								
								
						
				
		
		
				
						 
				
		
		
				
						挑战与思考:
						
								
								
						
				
		
		
				
						1、  
				
				Ajax
				推动的困难之一在于开发人员对
				Js
				、
				CSS
				等表现层技术的轻视。
		
		
				
						a)         
				
				业界需要
				Web
				标准、
				Web 2.0
				等相关技术,加强对此的研究工作
		
		
				
						b)        
				
				需要开发人员重视用户交互、用户体验方面的研究
		
		
				
						2、  
				
				相对不成熟的
				Ajax
				开源框架,目前
				Ajax
				开发尚没有类似
				Struts
				、
				WebWork
				等经过多年考验成熟框架,多数
				Ajax
				框架还不存在
				2.0
				以上的发布版。而且
				Ajax
				开源框架质量的良莠不齐也给开发人员的选择带来困难。
		
		
				
						a)         
				
				部分精品的
				Ajax
				框架(
				DWR
				、
				Buffalo
				、
				JSON
				等)已经将逐步走向成熟,虽然尚缺乏大型应用的考验,但也有了长足的进步。
		
		
				
						b)        
				
				国内优秀的
				Ajax
				框架
				Buffalo
				正逐步得到多方面的应用。
		
		
				
						3、  
				
				Ajax
				的安全问题与解决方案,
		
		
				
						a)         
				
				Ajax
				使用的
				XMLHttp
				技术不能跨域访问
				url,
				也不能在
				HTTP
				协议的页面访问
				HTTPS
				的请求。
		
		
				
						
								                         i.              
				
				对于安全性不高的应用,可以使用服务器端中间页面(服务器段代理)解决此问题。
		
		
				
						
								                       ii.              
				
				对于确实需要加密的应用,可以使用嵌入
				HTTPS
				协议的
				IFrame
				页面来访问
				HTTPS
				请求。
		
		
				
						b)        
				
				DoS
				攻击。
				Ajax
				使用的
				XMLHttp
				使用类似
				POST
				的方式提交数据。使得客户端可以无限制的提交大量攻击性数据。一旦攻击者采用分布式拒绝服务攻击
				(DDoS)
				,将对系统带来很大影响。
		
		
				
						
								                         i.              
				
				除加强服务器段验证外,目前软件方面无太好的解决办法。实际上,使用
				POST
				方式的表单提交同样存在此问题,但是
				Ajax
				的应用使得服务器端的服务地址变得更易被发现。
		
		
				
						
								                       ii.              
				
				使用硬件防火墙。
		
		
				
						c)        
				
				传输数据减少,使得数据被截获后分析变得容易。
		
		
				
						
								                         i.              
				
				使用数据加密技术
		
		
				
						
								                       ii.              
				
				使用安全套接字层传输数据
		
		
				
						d)        
				
				客户端代码展现在用户面前,难以保证商业项目源代码的版权。
		
		
				
						
								                         i.              
				
				对
				JavaScript
				脚本进行加密(
				Google
				)。
		
		
				
						 
				
		
		
				
						4、  
				
				其他问题:
		
		
				
						a)         
				
				缓存问题,
				XMLHttp
				的缓存使得服务器端数据更新后,客户端不一定能立即展现出来
		
		
				
						
								                         i.              
				
				使用随机码访问服务器端地址
		
		
				
						
								                       ii.              
				
				通过对
				XMLHttp
				缓存性质的设置,牺牲部分性能来解决此问题
		
		
				
						b)        
				
				浏览器兼容性问题:
		
		
				
						
								                         i.              
				
				目前流行的
				Ajax
				框架均可支持大部分的浏览器
		
		
				
						
								                       ii.              
				
				对于比较古老的浏览器(不支持
				XMLHttp
				)尚没有解决的办法,但是使用这部分浏览器的访问者数量已经接近于
				0
				。