ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲黄色一区,一级片在线视频,一区二区三区中文http://www.aygfsteel.com/stevenjohn/category/51098.html那些青春的岁æœ?/description>zh-cnThu, 24 May 2012 23:20:35 GMTThu, 24 May 2012 23:20:35 GMT60SOAP Webserviceå’ŒRESTful Webservice http://www.aygfsteel.com/stevenjohn/archive/2012/05/24/379028.htmlabinabinThu, 24 May 2012 06:55:00 GMThttp://www.aygfsteel.com/stevenjohn/archive/2012/05/24/379028.htmlhttp://www.aygfsteel.com/stevenjohn/comments/379028.htmlhttp://www.aygfsteel.com/stevenjohn/archive/2012/05/24/379028.html#Feedback0http://www.aygfsteel.com/stevenjohn/comments/commentRss/379028.htmlhttp://www.aygfsteel.com/stevenjohn/services/trackbacks/379028.htmlREST是一¿Uæž¶æž„风æ û|¼Œå…¶æ ¸å¿ƒæ˜¯é¢å‘资源åQŒREST专门针对¾|‘络应用设计和开发方式,以降低开发的复杂性,提高¾pȝ»Ÿçš„可伸羃性。RESTæå‡ºè®¾è®¡æ¦‚å¿µå’Œå‡†åˆ™äØ“åQ?/p>

1.¾|‘ç»œä¸Šçš„æ‰€æœ‰äº‹ç‰©éƒ½å¯ä»¥è¢«æŠ½è±¡äØ“èµ„æº(resource)

2.每一个资源都有唯一的资源标è¯?resource identifier)åQŒå¯¹èµ„源的操作不会改变这些标è¯?/p>

3.所有的操作都是无状态的

REST½Ž€åŒ–开发,其架构遵循CRUD原则åQŒè¯¥åŽŸåˆ™å‘Šè¯‰æˆ‘ä»¬å¯¹äºŽèµ„æº(包括¾|‘络资源)只需要四¿Uè¡Œä¸ºï¼šåˆ›å¾åQŒèŽ·å–ï¼Œæ›´æ–°å’Œåˆ é™¤å°±å¯ä»¥å®Œæˆç›¸å…³çš„æ“ä½œå’Œå¤„ç†ã€‚æ‚¨å¯ä»¥é€šè¿‡¾lŸä¸€èµ„源标识½W¦ï¼ˆUniversal Resource IdentifieråQŒURIåQ‰æ¥è¯†åˆ«å’Œå®šä½èµ„源,òq¶ä¸”针对˜q™äº›èµ„源而执行的操作是通过 HTTP 规范定义的。其核心操作只有GET,PUT,POST,DELETEã€?/p>

ç”׃ºŽREST强制所有的操作都必™åÀL˜¯stateless的,˜q™å°±æ²¡æœ‰ä¸Šä¸‹æ–‡çš„¾U¦æŸåQŒå¦‚果做分布式,集群都不需要考虑上下文和会话保持的问题。极大的提高¾pȝ»Ÿçš„可伸羃性ã€?/p>

对于SOAP Webserviceå’ŒRestful Webservice的选择问题åQŒé¦–先需要理解就是SOAP偏向于面向活动,有严格的规范和标准,包括安全åQŒäº‹åŠ¡ç­‰å„ä¸ªæ–šw¢çš„内容,同时SOAPå¼ø™°ƒæ“ä½œæ–ÒŽ³•和操作对象的分离åQŒæœ‰WSDLæ–‡äšg规范和XSDæ–‡äšg分别对其定义。而RESTå¼ø™°ƒé¢å‘资源åQŒåªè¦æˆ‘ä»¬è¦æ“ä½œçš„å¯¹è±¡å¯ä»¥æŠ½è±¡äØ“èµ„æºå›_¯ä»¥ä‹É用REST架构风格ã€?/p>

如果从这个意义上è®ÔŒ¼Œæ˜¯å¦ä½¿ç”¨RESTž®±éœ€è¦è€ƒè™‘资源本èín的抽象和识别是否困难åQŒå¦‚果本íw«å°±æ˜¯ç®€å•çš„¾cÖM¼¼å¢žåˆ æ”ÒŽŸ¥çš„业务操作,那么抽象资源ž®±æ¯”较容易,而对于复杂的业务‹zÕdŠ¨æŠ½è±¡èµ„æºòq¶ä¸æ˜¯ä¸€ä¸ªç®€å•的事情。比如校验用æˆïL­‰¾U§ï¼Œè½¬èÌŽåQŒäº‹åŠ¡å¤„ç†ç­‰åQŒè¿™äº›å¾€å¾€òq¶ä¸å®ÒŽ˜“½Ž€å•çš„æŠ½è±¡ä¸ø™µ„源ã€?/p>

其次如果有严格的规范和标准定义要求,而且前期规范标准需要指导多个业务系¾lŸé›†æˆå’Œå¼€å‘的时候,SOAP风格ç”׃ºŽæœ‰æ¸…晰的规范标准定义是明显有优势的。我们可以在开始和实现之前ž®×ƒ¸¥æ ¼å®šä¹‰ç›¸å…³çš„æŽ¥å£æ–ÒŽ³•和接口传输数据ã€?/p>

½Ž€å•数据操作,无事务处理,开发和调用½Ž€å•这些是使用REST架构风格的优åŠÑ€‚而对于较为复杂的面向‹zÕdŠ¨çš„æœåŠ¡ï¼Œå¦‚æžœæˆ‘ä»¬˜q˜æ˜¯ä½¿ç”¨RESTåQŒå¾ˆå¤šæ—¶å€™éƒ½æ˜¯ä»ç„¶æ˜¯ä¼ ç»Ÿçš„面向活动的思想通过转换工具再è{换得到REST服务åQŒè¿™¿Uä‹É用方式是没有意义的ã€?/p>

正如另外一½‹‡æ–‡ç« é‡Œé¢è°ˆåˆ°çš„åQŒREST核心是url和面向资源,url代替了原来复杂的操作æ–ÒŽ³•。REST允许我们通过url设计¾pȝ»ŸåQŒå°±åƒæµ‹è¯•驱动开发ä‹É用测试用例设计类接口一栗÷€‚æ‰€æœ‰å¯ä»¥è¢«æŠ½è±¡ä¸ø™µ„源的东西都可以ä‹É用RESTfulçš„urlåQŒå½“我们以传¾lŸçš„用SOAP方式实现的一个查询订单服务的时候可以看刎ͼŒ˜q™ä¸ªæœåŠ¡é¦–å…ˆå­˜åœ¨è¾“å…¥çš„æŸ¥è¯¢æ¡ä»Óž¼Œç„¶åŽæ‰æ˜¯è¾“出¾l“果集。那么对于类似场景要使用RESTåQŒä¸å¯é¿å…çš„会将传统的SOAP服务拆分ä¸ÞZ¸€ä¸ªHTTP POST操作和一个HTTP GET操作。前面是输入åQŒè€ŒåŽé¢æ˜¯è¾“出ã€?/p>

使用REST的关键是如何抽象资源åQŒæŠ½è±¡çš„­‘Šç²¾¼‹®ï¼Œå¯¹REST的应用越好。如何进行抽象,面向资源的设计和传统的面向结构和对象设计区别åQŒèµ„源和对象åQŒæ•°æ®åº“表之间的差别是另外一个在分析设计时候要考虑的问题。在REST分析设计中如何改变传¾lŸçš„SOAP分析设计思想又是一个重要问题ã€?/p>

下文转蝲自:http://hi.baidu.com/gaohong230/blog/item/cd3924396bc7332fb9998f52.html

在SOA的基¼‹€æŠ€æœ¯å®žçŽ°æ–¹å¼ä¸­WebService占据了很重要的地位,通常我们提到WebService½W¬ä¸€æƒÏx³•ž®±æ˜¯SOAP消息在各¿Uä¼ è¾“协议上交互。近几年REST的思想伴随着SOA逐渐被大家接受,同时各大¾|‘站不断开放API提供¾l™å¼€å‘者,也激起了REST风格WebService的热潮ã€?/p>

SOAP

什么是SOAPåQŒæˆ‘想不用多è¯ß_¼Œgoogle一把满眼都是。其实SOAP最早是针对RPC的一¿Uè§£å†Ïx–¹æ¡ˆï¼Œ½Ž€å•å¯¹è±¡è®¿é—®åè®®ï¼Œå¾ˆè½»é‡ï¼ŒåŒæ—¶ä½œäØ“åº”ç”¨åè®®å¯ä»¥åŸÞZºŽå¤šç§ä¼ è¾“协议来传递消息(Http,SMTP½{‰ï¼‰ã€‚但是随着SOAPä½œäØ“WebService的广泛应用,不断地增加附加的内容åQŒä‹É得现在开发äh员觉得SOAP很重åQŒä‹É用门槛很高。在SOAP后箋的发展过½E‹ä¸­åQŒWS-*一¾pÕdˆ—协议的制定,增加了SOAP的成熟度åQŒä¹Ÿ¾l™SOAP增加了负担ã€?/p>

REST

REST其实òq¶ä¸æ˜¯ä»€ä¹ˆåè®®ä¹Ÿä¸æ˜¯ä»€ä¹ˆæ ‡å‡†ï¼Œè€Œæ˜¯ž®†Http协议的设计初衷作了诠释,在Http协议被广泛利用的今天åQŒè¶Šæ¥è¶Šå¤šçš„æ˜¯å°†å…¶ä½œä¸ÞZ¼ è¾“协议,而非原先设计者所考虑的应用协议。SOAP¾cÕdž‹çš„WebServicež®±æ˜¯æœ€å¥½çš„例子åQŒSOAP消息完全ž®±æ˜¯ž®†Httpåè®®ä½œäØ“æ¶ˆæ¯æ‰¿è²åQŒä»¥è‡³äºŽå¯¹äºŽHttp协议中的各种参数åQˆä¾‹å¦‚编码,错误码等åQ‰éƒ½¾|®ä¹‹ä¸é¡¾ã€‚其实,最轻量¾U§çš„应用协议ž®±æ˜¯Http协议。Http协议所抽象的get,post,put,deletež®±å¥½æ¯”数据库中最基本的增删改查,而互联网上的各种资源ž®±å¥½æ¯”数据库中的记录åQˆå¯èƒ½è¿™ä¹ˆæ¯”å–ÖM¸æ˜¯å¾ˆå¥½ï¼‰åQŒå¯¹äºŽå„¿Uèµ„源的操作最后æ€ÀL˜¯èƒ½æŠ½è±¡æˆä¸ø™¿™å››ç§åŸºæœ¬æ“ä½œåQŒåœ¨å®šä¹‰äº†å®šä½èµ„源的规则以后åQŒå¯¹äºŽèµ„源的操作通过标准的Http协议ž®±å¯ä»¥å®žçŽŽÍ¼Œå¼€å‘者也会受益于˜q™ç§è½»é‡¾U§çš„协议ã€?/p>

REST的思想归结以下有如下几个关键点åQ?/p>

1åQŽé¢å‘资源的接口设计

所有的接口设计都是针对资源来设计的åQŒä¹Ÿž®±å¾ˆ¾cÖM¼¼äºŽæˆ‘们的面向对象和面向过½E‹çš„设计区别åQŒåªä¸è¿‡çŽ°åœ¨ž®†ç½‘¾lœä¸Šçš„æ“ä½œå®žä½“éƒ½ä½œäØ“èµ„æºæ¥çœ‹å¾…ï¼ŒåŒæ—¶URI的设计也是体çŽîCº†å¯¹äºŽèµ„源的定位设计。后面会提到有一些网站的API设计说是REST设计åQŒå…¶å®žæ˜¯RPC-RESTçš„æØœåˆä½“åQŒåƈ非是REST的思想ã€?/p>

2åQŽæŠ½è±¡æ“ä½œäØ“åŸºç¡€çš„CRUD

˜q™ç‚¹å¾ˆç®€å•,Http中的get,put,post,delete分别对应了read,update,create,delete四种操作åQŒå¦‚æžœä»…ä»…æ˜¯ä½œäØ“å¯¹äºŽèµ„æºçš„æ“ä½œï¼ŒæŠ½è±¡æˆäØ“˜q™å››¿Uå·²¾lèƒö够了åQŒä½†æ˜¯å¯¹äºŽçŽ°åœ¨çš„ä¸€äº›å¤æ‚çš„ä¸šåŠ¡æœåŠ¡æŽ¥å£è®¾è®¡åQŒå¯èƒ½è¿™æ ïLš„æŠ½è±¡æœªå¿…能够满èƒö。其实这也在后面的几个网站的API设计中暴露了˜q™æ ·çš„问题,如果要完全按照REST的思想来设计,那么适用的环境将会有限制åQŒè€Œéžæ”¾ä¹‹å››æ“v皆准的ã€?

3åQŽHttp是应用协议而非传输协议

˜q™ç‚¹åœ¨åŽé¢å„大网站的API分析中有很明昄¡š„体现åQŒå…¶å®žæœ‰äº›ç½‘站已¾lèµ°åˆîCº†SOAP的老èµ\上,说是REST的理念设计,其实是作了一套私有的SOAP协议åQŒå› æ­¤ç§°ä¹‹äØ“REST风格的自定义SOAP协议ã€?/p>

4åQŽæ— çŠ¶æ€ï¼Œè‡ªåŒ…å?/strong>

˜q™ç‚¹å…¶å®žä¸ä»…仅是对于RESTæ¥è¯´çš„ï¼Œä½œäØ“æŽ¥å£è®¾è®¡éƒ½éœ€è¦èƒ½å¤Ÿåšåˆ°è¿™ç‚¹ï¼Œä¹Ÿæ˜¯ä½œäØ“å¯æ‰©å±•å’Œé«˜æ•ˆæ€§çš„æœ€åŸºæœ¬çš„ä¿è¯ï¼Œž®Þq®—是ä‹É用SOAPçš„WebService也是一栗÷€?/p>

SOAP Webservice和RESTful Webservice的比�/p>

成熟åº?æ€Èš„来说SOAP在成熟度上优于REST)

SOAP虽然发展到现在已¾lè„±¼›ÖMº†åˆè¡·åQŒä½†æ˜¯å¯¹äºŽå¼‚构环境服务发布和调用åQŒä»¥åŠåŽ‚å•†çš„æ”¯æŒéƒ½å·²¾lè¾¾åˆîCº†è¾ƒäؓ成熟的情å†üc€‚不同åã^収ͼŒå¼€å‘语­a€ä¹‹é—´é€šè¿‡SOAP来交互的web service都能够较好的互通(在部分复杂和ç‰ÒŽ®Šçš„参数和˜q”回对象解析上,协议没有作很¾l†è‡´çš„è§„å®šï¼Œå¯ÆD‡´˜q˜æ˜¯éœ€è¦ä½œéƒ¨åˆ†ä¿®æ­£åQ?/p>

REST国外很多大网站都发布了自å·Þqš„开发APIåQŒå¾ˆå¤šéƒ½æä¾›äº†SOAPå’ŒREST两种Web ServiceåQŒæ ¹æ®è°ƒæŸ¥éƒ¨åˆ†ç½‘站的REST风格的ä‹É用情况要高于SOAP。但是由于REST只是一¿UåŸºäºŽHttp协议实现资源操作的思想åQŒå› æ­¤å„个网站的REST实现都自有一套,在后面会讲诉各个大网站的REST API的风根{€‚ä¹Ÿæ­£æ˜¯å› äØ“˜q™ç§å„自实现的情况,在性能和可用性上会大大高于SOAP发布的web serviceåQŒä½†¾lŸä¸€é€šç”¨æ–šw¢˜qœè¿œä¸åŠSOAP。由于这些大¾|‘站的SP往往专注于此¾|‘站的API开发,因此通用性要求不高ã€?/p>

ç”׃ºŽæ²¡æœ‰¾cÖM¼¼äºŽSOAPçš„æƒå¨æ€§åè®®ä½œä¸ø™§„范,REST实现的各¿Uåè®®ä»…仅只能算是私有协议,当然需要遵循REST的思想åQŒä½†æ˜¯è¿™æ ïL»†èŠ‚æ–¹é¢æœ‰å¤ªå¤šæ²¡æœ‰¾U¦æŸçš„地斏V€‚REST日后的发展所走向规范也会直接影响到这部分的设计是否能够有很好的生命力ã€?/p>

效率和易用æ€?REST更胜一½{?

SOAPåè®®å¯¹äºŽæ¶ˆæ¯ä½“å’Œæ¶ˆæ¯å¤´éƒ½æœ‰å®šä¹‰ï¼ŒåŒæ—¶æ¶ˆæ¯å¤´çš„å¯æ‰©å±•æ€§äØ“å„ç§äº’è”¾|‘的标准提供了扩展的基础åQŒWS-*¾pÕdˆ—ž®±æ˜¯è¾ƒäؓ成功的规范。但是也ç”׃ºŽSOAPç”׃ºŽå„种需求不断扩充其本èínåè®®çš„å†…å®¹ï¼Œå¯ÆD‡´åœ¨SOAP处理斚w¢çš„æ€§èƒ½æœ‰æ‰€ä¸‹é™ã€‚同时在易用性方面以及学习成本上也有所增加ã€?/p>

REST被äh们的重视åQŒå…¶å®žå¾ˆå¤§ä¸€æ–šw¢ä¹Ÿæ˜¯å› äؓ光™«˜æ•ˆä»¥åŠç®€‹zæ˜“用的ç‰ÒŽ€§ã€‚è¿™¿Ué«˜æ•ˆä¸€æ–šw¢æºäºŽå…‰™¢å‘资源接口设计以及操作抽象简化了开发者的不良设计åQŒåŒæ—¶ä¹Ÿæœ€å¤§é™åº¦çš„利用了Http最初的应用协议设计理念。同æ—Óž¼Œåœ¨æˆ‘看来REST˜q˜æœ‰ä¸€ä¸ªå¾ˆå¸å¼•开发者的ž®±æ˜¯èƒ½å¤Ÿå¾ˆå¥½çš„融合当前Web2.0的很多前端技术来提高开发效率。例如很多大型网站开攄¡š„REST风格的API都会有多¿Uè¿”回åŞ式,除了传统的xmlä½œäØ“æ•°æ®æ‰¿è²åQŒè¿˜æœ‰ï¼ˆJSON,RSS,ATOMåQ‰ç­‰å½¢å¼åQŒè¿™å¯¹å¾ˆå¤šç½‘站前端开发äh员来说就能够很好的mashup各种资源信息ã€?/p>

安全性:

˜q™ç‚¹å…¶å®žå¯ä»¥æ”‘Ö…¥åˆ°æˆç†Ÿåº¦ä¸­ï¼Œä¸è¿‡åœ¨å½“前的互联¾|‘应用和òq›_°å¼€å‘设计过½E‹ä¸­åQŒå®‰å…¨å·²¾lè¢«æåˆ°äº†å¾ˆé«˜çš„高度åQŒç‰¹åˆ«æ˜¯ä½œäؓ外部接口¾l™ç¬¬ä¸‰æ–¹è°ƒç”¨åQŒå®‰å…¨æ€§å¯èƒ½ä¼šé«˜è¿‡ä¸šåŠ¡é€»è¾‘æœ¬èínã€?/p>

SOAP在安全方面是通过使用XML-Securityå’ŒXML-Signature两个规范¾l„成了WS-Security来实现安全控制的åQŒå½“前已¾lå¾—åˆîCº†å„个厂商的支持,.net åQŒphp åQŒjava 都已¾lå¯¹å…¶æœ‰äº†å¾ˆå¥½çš„æ”¯æŒåQˆè™½ç„¶åœ¨ä¸€äº›ç»†èŠ‚ä¸Š˜q˜æ˜¯æœ‰ä¸å…¼å®¹çš„问题,但是互通基本上是可以的åQ‰ã€?/p>

REST没有ä»ÖM½•规范对于安全斚w¢ä½œè¯´æ˜Žï¼ŒåŒæ—¶çŽ°åœ¨å¼€æ”¾REST风格API的网站主要分成两¿Uï¼Œä¸€¿Uæ˜¯è‡ªå®šä¹‰äº†å®‰å…¨ä¿¡æ¯ž®è£…在消息中åQˆå…¶å®žè¿™å’ŒSOAP没有什么区别)åQŒå¦å¤–一¿Uå°±æ˜¯é ¼‹¬äšgSSL来保éš?但是˜q™åªèƒ½å¤Ÿä¿è¯ç‚¹åˆ°ç‚¹çš„安全åQŒå¦‚果是需要多点传输的话SSLž®±æ— èƒ½äؓ力了。安全这块其实也是一个很大的问题åQŒä»Šòq´åœ¨BEAå³îC¼šä¸Šçœ‹åˆ°æœ‰æ¼”示采用SAML2实现的网站间SSOåQŒå…¶å®žæ˜¯ç›´æŽ¥é‡‡ç”¨äº†XML-Securityå’ŒXML-SignatureåQŒæ•ˆçŽ‡çœ‹èµäh¥ä¹Ÿä¸æ˜¯å¾ˆé«˜ã€‚未来REST规范化和通用化过½E‹ä¸­çš„安全是否也会采用这两种规范åQŒæ˜¯æœªçŸ¥çš„,但是加入的越多,REST失去它高效性的优势­‘Šå¤šã€?/p>

应用设计与改造:

我们的系¾lŸè¦ä¹ˆå°±æ˜¯å·²¾læœ‰äº†é‚£äº›éœ€è¦è¢«å‘布出去的服务,要么ž®±æ˜¯åˆšåˆšè®¾è®¡å¥½çš„æœåŠ¡åQŒä½†æ˜¯å¼€å‘äh员的传统设计思想让RESTçš„åŞ式被接受˜q˜éœ€è¦ä¸€ç‚ÒŽ—¶é—´ã€‚同时在资源型数据服务接口设计上来说按照REST的思想来设计相å¯ÒŽ¥è¯´è¦å®ÒŽ˜“一些,而对于一些复杂的服务接口来说åQŒå¯èƒ½å¼ºè¦åŽ»æŒ‰ç…§REST的风格来设计会有些牵强。这一点其实可以看看各大网站的接口ž®±å¯ä»¥çŸ¥é“,很多¾|‘ç«™˜q˜è¦ä¼ å…¥function的名¿UîC½œä¸ºå‚敎ͼŒ˜q™å°±æ˜Žæ˜¾å·²ç»˜qèƒŒäº†REST本èín的设计思èµ\。而SOAP本èínž®±æ˜¯é¢å‘RPC来设计的åQŒå¼€å‘äh员十分容易接受,所以不存在什么适应的过½E‹ã€‚æ€Èš„来说åQŒå…¶å®žè¿˜æ˜¯ä¸€ä¸ªè€è§‚念,适合的才是最好的

技术没有好坏,只有是不是合适,一¿Uå¥½çš„æŠ€æœ¯å’Œæ€æƒ³è¢«è¯¯ç”¨äº†åQŒé‚£ä¹ˆå°±ä¼šå¾—到反效果。RESTå’ŒSOAP各自都有自己的优点,同时如果在一些场景下如果åŽÀL”¹é€ RESTåQŒå…¶å®žå°±ä¼šèµ°å‘SOAPåQˆä¾‹å¦‚安全)ã€?/p>

REST对于资源型服务接口来说很合适,同时特别适合对于效率要求很高åQŒä½†æ˜¯å¯¹äºŽå®‰å…¨è¦æ±‚不高的场景。而SOAP的成熟性可以给需要提供给多开发语­a€çš„,对于安全性要求较高的接口设计带来便利。所以我觉得¾U¯çÑa说什么设计模式将会占据主导地位没有什么意义,关键˜q˜æ˜¯çœ‹åº”用场景ã€?/p>

同时很重要一点就是不要扭曲了REST现在很多¾|‘站都跟风去开发REST风格的接口,其实都是在学其åÅžåQŒä¸çŸ¥å…¶å¿ƒï¼Œæœ€åŽå¼„得不伦不¾c»ï¼Œæ€§èƒ½ä¸Šä¸åŽ»ï¼Œå®‰å…¨åˆä¿è¯ä¸äº†ï¼Œå¾’æœ‰ä¸€ä¸ªçœ‹ä¼ÆD±¡æ‘¸è±¡æ ïLš„皮囊ã€?/p>

]]>
Ö÷Õ¾Ö©Öë³ØÄ£°å£º ÁÉÖÐÏØ| Ë«ÅÆÏØ| ½ÒÎ÷ÏØ| ¶õÎÂ| Ã×ȪÊÐ| °²ÒåÏØ| ¹ãÄþÏØ| ÏØ¼¶ÊÐ| ÉÏÓÝÊÐ| ÑÓÊÙÏØ| ¶«Ì¨ÊÐ| ½­¶¼ÊÐ| ÎÚÉóÆì| ÐÂÒÊÊÐ| ¹ÌÕòÏØ| ÎijÉÏØ| ÈøåÈÏØ| ÒË»ÆÏØ| ¶«·áÏØ| Ä«½­| ÎåָɽÊÐ| ·½É½ÏØ| ±±Á÷ÊÐ| µ±ÑôÊÐ| ¶«·áÏØ| ¹ãÔªÊÐ| ÎýÁÖ¹ùÀÕÃË| ËÕÖÝÊÐ| ´Ó½­ÏØ| ÎÞ¼«ÏØ| ºôÂ×±´¶ûÊÐ| °ÍÄÏÇø| ¸ßÌ¨ÏØ| ³½ÏªÏØ| ´Ó½­ÏØ| ÓåÖÐÇø| ¼Ð½­ÏØ| »ÆÆ½ÏØ| ºâÑôÏØ| ºþ±±Ê¡| ÉäºéÏØ|