ä»Žæ ¹æœ¬ä¸Šè¯ß_(d¨¢)¼Œé¢å‘æœåŠ¡çš„æž¶æž„èƒ½å¤Ÿä‹Éä¼ä¸šå†…éƒ¨åŠ¨æ€æ•°æ®æœåŠ¡çš„åˆ›å¾å˜å¾—æ›´åŠ æ–¹ä¾¿åQŒåŒæ—Óž¼Œ˜q˜èƒ½å¤Ÿä‹Éä¼ä¸šå¼€å‘äh员创建媄(ji¨£ng)å“这些æœåŠ¡çš„å¤åˆåº”用½E‹åºã€‚Web2.0æä¾›äº†ä¸€ä¸ªä¸°å¯Œçš„Web体验åQŒç”¨æˆ¯‚ƒ½å¤Ÿä»¥é«˜æ•ˆçš„ã€å……æ»¡å¸Œæœ›çš„ã€æœ‰ç›Šçš„æ–¹å¼å‚与åˆä½œã€?
  如果我们把这两个现象¾l“åˆèµäh¥åQŒé‚£ä¹ˆï¼Œé€šè¿‡ä¼ä¸š½C‘Ö›¢æˆå‘˜ä¹‹é—´çš„äº’ç›æ€º¤‹¹ï¼Œä»¥åŠ(qi¨¢ng)æˆå‘˜ä¸Žä¸æ–å˜åŒ–çš„ä¼ä¸šæ•°æ®ä¹‹é—´çš„交互,我们ž®Þpƒ½å¤Ÿå®žçŽ°è¿™ä¸€å…³é”®çš„æé«˜æ•ˆçŽ‡çš„æ–°æ–¹æ³•ã€?/p>
  å作型ä¼ä¸šç›¸äº’èžåˆï¼Œä¸‹ä¸€ä»£çš„Web应用½E‹åºä¹Ÿå·²éœ²ç«¯å€ªï¼Œä½†æ˜¯åQŒå¼€å‘团体的推测是,ä¸ÞZº†å®žçŽ°æ˜Žæ˜¾çš„åˆ©ç›Šï¼Œä¼ä¸šæ‰€é‡‡ç”¨çš„å„¿U技术之间å˜åœ¨ç€æ ÒŽ(gu¨©)œ¬æ€?çš„å·®å¼‚ã€‚æ ‡å‡†å¿…™åÀLœå“ªä¸ªæ–¹å‘å‘展æ‰èƒ½å¤Ÿæ»¡‘³SOA与Web2.0概念的结åˆï¼Œä¸ÞZº†æ›´å¥½çš„ç†è§£è¿™ä¸ªé—®é¢˜ï¼Œæˆ‘们ž®†è‡´åŠ›äºŽ‹‚€(g¨¨)验Java表示技术的状æ€ã€?/p>
  Ajax化JavaServer Faces
ã€€ã€€æ ‡å‡†å¥ å®šäº†SOA的基本结构,但是åQŒåœ¨Web2.0的世界ä¸å´ä¸å˜åœ¨ç€æ ‡å‡†ã€‚䨓(f¨´)了支æŒWeb2.0的功能,市场上出çŽîCº†å¤ªå¤šçš„æ–¹æ³•,其ä¸å¤§å¤šæ•?在JavaScript的实çŽ?å½±å“Ajax的技æœ?上å´éžå¸¸¾Jæ‚。在Java EE的规范ä¸åQŒJavaServer Facesæä¾›äº†è¡¨½Cºå±‚åQŒä½†æ˜¯ï¼Œç›¸æ¯”èµ·Ajax技术和W(xu¨¦)eb2.0概念的æµè¡Œï¼Œå®ƒç›®å‰çš„修订版出现的更早ã€?/p>
ã€€ã€€äº‹å®žè¯æ˜ŽåQŒåœ¨¾l„äšg层,JSFä¸çš„坿‰©å±•组件架构éžå¸”R€‚åˆä¸ŽAjax技术ååŒä‹É用,但是åQŒç»„件层Ajax技术å˜åœ¨çš„问题是,它们是å˜åœ¨äºŽç‹å°çš„è§„ é¿JSF生命周期的交互空间内。解册™¿™ä¸€é—®é¢˜æ‰€éœ€è¦çš„æ˜¯ï¼Œä¸€¿Uæ›´åŠ å…¨é¢çš„æ–¹å¼åQŒä»¥å®žçŽ°åœ¨JSF生命周期内的Ajax交互。具体æ¥è¯ß_(d¨¢)¼Œæœ‰ä»¥ä¸‹ä¸¤ç‚šwœ€è¦ç€é‡é˜ ˜q°ã€?/p>
  1.改进的用户交互模åž? 在JSFä¸ï¼Œç›®å‰çš„用户交互模型是åŸÞZºŽè¡¨æ ¼çš„ï¼Œå®ƒè¿‡äºŽç²—ç•¥è€Œæ— æ³•ä¼ è¾“ä¸°å¯Œçš„Web2.0ç‰ÒŽ(gu¨©)€§ã€‚组件层的Ajax交互¾_’度åQŒä»¥å?qi¨¢ng)JSFç›®å‰ä¾èµ–çš„åŸºäºŽè¡¨æ ¼çš„åä“Q务模型,˜q™ä¸¤è€…之间å˜åœ¨ç€æ˜¾è‘—的差异。交互类型应当包å«ä»¥ä¸‹å‡ ¿UåÅžå¼ï¼š(x¨¬)
  2. 增é‡è¡¨ç¤ºæ›´æ–°: ä¸ÞZº†ä½¿ç”¨Ajaxian æ–¹å¼(䏿˜¯™åµé¢åˆäh–°)实现½W¬ä¸‰¿U交互模型,JSF需è¦ä¸€ä¸ªå¢žé‡æ›´æ–°æœºåˆÓž¼Œä»…仅是把™åµé¢ä¸åº”用到的表½Cºå±‚所åšçš„å¿…è¦ä¿®æ”¹ä»Žä¸€ä¸ªè¡¨çް处ç†ä¼ å‘下一个表现处ç†ã€?下题q™ä¸ªå›„¡¤ºè¡¨æ˜Žäº†è¿™ä¸ªæ¦‚å¿üc(di¨£n)€‚它需è¦ä¸€ä¸ªAjax桥,在æœåŠ¡å™¨ç«¯æŠŠè¡¨ç¤ºçš„æ”¹å˜ç»„åˆè“væ¥ï¼Œåœ¨å®¢æˆïL(f¨¥ng)«¯çš„DOM把那些å˜åŒ–釾l„ã€?/p>
JSF Push模å¼
  Ajaxified JSF实现和多数其它的Ajaxæ–¹å¼ä»Žé—留的Web应用½E‹åºæ¨¡åž‹ä¸ç‘ô承了一个共åŒçš„特å¾åQŒè¯¥æ¨¡åž‹æ˜¯ä¸€ä¸ªå®¢æˆïL(f¨¥ng)«¯å‘è“v的交互模型。这æ„味ç€åQŒå®¢æˆïL(f¨¥ng)«¯çš„表½Cºå±‚åªéœ€è¦é’ˆå¯¹ç”¨æˆ·ä¸Žè¡¨ç¤ºå±‚的交互˜q›è¡Œç›¸åº”å˜åŒ–ã€?/p>
  与ä‹É用é—留应用程åºç›¸æ¯”,使用Ajax技术,˜q™ä¸ªäº¤äº’是细¾_’度的,但是åQŒå®ƒä»ç„¶æ˜¯å®¢æˆ·å‘èµïL(f¨¥ng)š„ã€‚çŽ°åœ¨ï¼Œå½“ä½ ‹‚€(g¨¨)验支æŒåº”用程åºçš„SOAæ•°æ®æ¨¡åž‹çš„动 æ€ç‰¹æ€§ã€äº†è§£ä¼—å¤šåŒæ¥ç”¨æˆ·é‡‡ç”¨è¿™ä¸€åŠ¨æ€æ•°æ®æ‰€˜q›è¡Œçš„å调互æ“作æ—Óž¼Œä½ 就能够æ„识刎ͼŒåœ¨å®¢æˆïL(f¨¥ng)«¯æŽ¨åŠ¨åŠ¨æ€è¡¨½Cºå˜åŒ–的机制是éžå¸”R‡è¦çš„åQŒè¿™ä¸€ç‚¹è¶Šæ¥è¶Šæ¸…晰。它æ˜?辑ֈ°Web2.0模型所需è¦çš„真æ£çš„动æ€ç‰¹æ€§çš„唯一途径ã€?/p>在äñ”业ä¸å·²ç»è¯æ˜ŽåQŒå¯¹äºŽJSF规范与一个表½Cºpush模型的å作æ¥è¯ß_(d¨¢)¼ŒAjax push技术,也指CometåQŒæ˜¯å分必è¦çš„ã€‚å‰æ–‡å·²¾læ˜q°çš„˜q™ä¸ªå¢žé‡æ›´æ–°ç‰ÒŽ(gu¨©)€§ï¼Œæä¾›äº†åœ¨å®žçްJSF Pushæ¨¡å¼æ—¶æ‰€éœ€è¦çš„åŸÞZºŽAjax的更新机制。除æ¤ä¹‹å¤–,当应用程åºé€»è¾‘å‘现出现了一些将ä¼?x¨¬)åª?ji¨£ng)å“客æˆïL(f¨¥ng)«¯è¡¨ç¤ºå±‚状æ€çš„å˜åŒ–æ—Óž¼Œå»‰™•¿JSF的生命周期æ¥å…许 ä¸€ä¸ªå¼ºåˆ¶çš„è¡¨çŽ°å¤„ç†æ˜¯å¾ˆæœ‰å¿…è¦çš„ã€?br />
虽然åQŒJSF push模型相对而言实现èµäh¥æ›´åŠ å®ÒŽ(gu¨©)˜“åQŒä½†æ˜¯ï¼Œç”Ÿäñ”¾l验表明åQŒäØ“(f¨´)使得开å‘äh员能够有效ç‘ô承,仅仅暴露JSF APIä¸åº•层强制的表示机制是远˜qœä¸å¤Ÿçš„。关于基本的push机制åQŒJSF规范很有必è¦å¯¹è¡¨çްAPI˜q›è¡Œä»‹ç»åQŒä»Žè€Œå‘ˆçŽ°ç»™å¼€å‘äh员一个清晰有效的机制åQŒç”¨ 于请求强制表½Cºã€‚APIž®¤å…¶éœ€è¦æä¾›ä»¥ä¸‹å‡ 个方é¢ï¼š(x¨¬)
  1.触å‘的表çŽ?应用½E‹åºå¼€å‘äh员应当能够在å‘出表示处ç†è¯äh±‚的业务逻辑ä¸å®šä¹‰è§¦å‘点ã€?/p>
  2. ¾Ÿ¤ç»„表现: 一个触å‘点能够影å“一个å•一客户端ã€å¤šä¸ªå®¢æˆïL(f¨¥ng)«¯åQŒæˆ–者是所有连接到该应用程åºä¸Šçš„客æˆïL(f¨¥ng)«¯ã€‚å› æ¤ï¼Œä¸ø™§¦å‘表现æä¾›ç¾¤¾l„管ç†ç»“构,˜q™æ˜¯å¾ˆæœ‰å¿…è¦çš„ã€?/p>
  3. 预定的表çŽ?有许多åˆé€‚的计划机制应当被支æŒï¼ŒåŒ…括åQŒæŒ‰éœ€è¡¨çŽ°ã€æŽ¨˜qŸè¡¨çŽŽÍ¼Œä»¥åŠ(qi¨¢ng)å†…éƒ¨è¡¨çŽ°ã€‚é¢„å®šçš„è¡¨çŽ°æž¶æž„åº”å½“å…·å¤‡å¯æ‰©å±•性,以支æŒå…¶ä»–用户预先设定的需 求。很é‡è¦çš„一ç‚ÒŽ(gu¨©)˜¯åQŒè§¦å‘è¡¨çŽ°æœºåˆ¶åº”å½“èƒ½å¤Ÿæ›´åŠ æœ‰æ•ˆçš„ä¼ è¾“ã€‚ç”±äºŽå˜åœ¨ç€å¤§é‡çš„触å‘,它们潜在åœîC»¥å„ç§æ–¹å¼å½±å“ç€å®¢æˆ·ç«¯ï¼Œå› æ¤åQŒç®¡ç†è¡¨çŽ°çš„å¤„ç†˜q™ä¸€ä»ÕdŠ¡ä¸èƒ½ ä»…ä»…è½åœ¨å¼€å‘äh员èín上。触å‘表现的实现åQŒå¿…™åÀLœ‰æ•ˆåœ°åˆåƈ表现处ç†è¯äh±‚ã€å¤„ç†å¿…è¦çš„åŒæ¥åQŒè€Œä¸”åQŒè¿™äº›æ“作都是以一¿U线½E‹æœ‰æ•ˆçš„æ–¹å¼ã€?/p>
  多视图支�/strong>
  现å˜çš„䨓(f¨´)JSF定义的阶ŒDµå’Œéœ€æ±‚范å›ß_(d¨¢)¼Œæ ÒŽ(gu¨©)œ¬ä¸èƒöä»¥æ”¯æŒæ»¡‘³Ajaxçš„JSF应用½E‹åºâ€”—用戯‚ƒ½å¤Ÿåœ¨åŒä¸€åº”用½E‹åºä¸ŠèŽ·å¾—å¤šä¸ªæ´»åŠ¨è§†å›¾ã€‚é˜¶ŒDµèŒƒå›´èƒ½ 够维护所有视囑օ±åŒçš„状æ€ï¼Œä½†æ˜¯åQŒå®ƒä¸èƒö以处ç†è§†å›¾ä¹‹é—´ä¸åŒçš„状æ€ã€‚ç”±äºŽå¤šä¸ªåŒæ¥è¯·æ±‚都必须是活动状æ€ï¼Œæ‰€ä»¥ï¼Œéœ€æ±‚范围也ä¸å……åˆ†ã€‚å› æ¤ï¼Œéœ€è¦ä¸€ä¸ªæ–°çš„范 å›ß_(d¨¢)¼Œæ¥ç®¡ç†æ»¡‘³Ajax çš„JSF应用½E‹åºçš„会(x¨¬)è¯æ–¹é¢ã€‚JBossçš„Seam æ–ÒŽ(gu¨©)¡ˆæå‡ºäº†ä¼š(x¨¬)è¯èŒƒå›ß_(d¨¢)¼Œå®ƒä¸»è¦æä¾›JSF䏿‰€éœ€è¦çš„é¢å¤–范围。除了支æŒå¤šè§†å›¾ä¹‹å¤–åQŒä¼š(x¨¬)è¯èŒƒå›´è¿˜èƒ½å¤Ÿå¸¦æ¥å…¶ä»–优势åQŒä¾‹å¦‚,在应用程åºä¸åQŒé€šè¿‡ä¼?x¨¬)è¯ä¸å¯¹ä¸€¾pÕdˆ—ç”?户交互的明确æè¿°åQŒå°±èƒ½å¤Ÿæœ‰æ•ˆåœ°æ”¯æŒä¹¦½{‘Ö’Œ˜q”回按钮ç‰ÒŽ(gu¨©)€§ã€?/p>
  长期å˜åœ¨çš„HTTPè¯äh±‚
  回到å‰é¢æ‰€æåˆ°çš„push模型åQŒä½ å¯èƒ½æ³¨æ„刎ͼŒæœºåˆ¶éœ€è¦ä¸€ä¸ªç‰¹ŒDŠçš„HTTPè¯äh±‚åQŒå®ƒèƒ½å¤Ÿå¼‚æ¥åœ°å“应从应用½E‹åºä¸å‘出的触å‘表现出ç†è¯äh±‚ã€‚ä¾æ®æ›´ 新的频率åQŒè¿™ä¸ªç‰¹ŒDŠHTTPè¯äh±‚能够长期å˜åœ¨ã€‚由于在å“应之å‰åQŒæ¯ä¸€ä¸ªè¯·æ±‚都å 用其线½E‹ï¼Œæ‰€ä»¥ï¼Œåœ¨å¤„ç†è¿™ä¸ªé•¿æœŸå˜åœ¨çš„è¯äh±‚æ—Óž¼Œçްå˜çš„Servlet模型æ—?法很好的å“åº”ã€‚å› æ¤ï¼Œä¸ÞZº†æ”¯æŒpush模型åQŒå¿…™åÕd¯¹Servlet模型˜q›è¡Œæ”¹å˜åQŒä‹É它能够以¾U¿ç¨‹æœ‰æ•ˆçš„æ–¹å¼æ¥å¤„ç†é•¿æœŸå˜åœ¨çš„请求。å†å¼ø™°ƒä¸€‹Æ¡ï¼Œæœ‰å¾ˆå¤šç”Ÿäº?æ–ÒŽ(gu¨©)¡ˆä¸Žå¼‚æ¥Servletså’ŒHTTPæœåŠ¡å™¨ç›¸å…»I¼ŒJava EE规范能够在æ¤åŸºç¡€ä¸Šå®šä¹‰ä¸€ä¸ªè§£å†Ïx–¹æ¡ˆã€?/p>
  ¾l“论
  äºÞZ»¬ä»ç„¶æœ‰äº›è´¨ç–‘åQšSOA与Web2.0世界ž®†ä¼š(x¨¬)å‘生抵触åQŒæ–°ä¸€ä»£çš„å作型ä¼ä¸šåº”用程åºå·²éœ²ç«¯å€ªã€‚也å˜åœ¨ç€˜q™æ ·çš„质疑,现å˜çš„Java EEè§„èŒƒæ— æ³•å®Œå…¨å¤„ç†Web2.0æå‡ºçš„请求,以åŠ(qi¨¢ng)JSR处ç†å¿…须开始在直接™å¹ä¸è€ƒè™‘˜q™äº›è¯äh±‚。然而,产业ä¸çš„é‡å¤§˜q›æ¥åQŒå·²¾l能够处ç†å‡ºçŽ°çš„è¯äh±‚åQŒåƈ且能 够实现扩展现å˜Java EE基础¾l“构的商业化的å¯è¡Œæ–¹æ¡ˆã€‚峞®†ä‹É用JSR 172æ¥ç”ŸæˆJSF2.0规范åQŒéžå¸”R‡è¦çš„æ˜?包å«Ajaxç‰ÒŽ(gu¨©)€§ï¼Œä»¥åŠ(qi¨¢ng)产业å‚与者èµA(ch¨³)献相å…ÏxŠ€æœ?æ¥ç¡®ä¿èƒ½å¤ŸåŠ(qi¨¢ng)æ—¶åšå‡ºåŸºäºŽæ ‡å‡†çš„解决æ–ÒŽ(gu¨©)¡ˆã€?/p>