Spring Web Services框架入門(mén)研究
關(guān)于Spring Web Services框架
Spring web services框架(以下簡(jiǎn)稱:Spring WS)是springframework東家SpringSource公司旗下的一個(gè)子項(xiàng)目。由于懷著對(duì)spring框架的熱愛(ài),于是打算學(xué)習(xí)下這個(gè)框架。
Spring Web Services框架的特點(diǎn):
◆Spring框架的支持,你可以重用Spring的所有特性。
◆Spring WS使用Contract First(自頂向下)的設(shè)計(jì)方式。Spring WS不支持Contract Last(自底向上)
◆支持幾乎所有的XML API,處理傳入XML消息的時(shí)候就不限于JAX-P,可以是任意的XML API,選擇你所擅長(zhǎng)的。
◆靈活的XML Marshalling,Object/XML mapping產(chǎn)品的支持,包括JAX-B1,2,XMLBean以及Castor等等
◆Security支持,集成了Acegi.實(shí)現(xiàn)web services 認(rèn)證。
Spring Web Services框架的分析
為什么使用Contract First.***實(shí)踐認(rèn)為:使用自頂向下的設(shè)計(jì)方式也就是采用XML/XSD to JAVA可以獲得更多的益處,包括以下幾點(diǎn).
◆重用性,web services或者SOA的很大優(yōu)勢(shì)在于對(duì)業(yè)務(wù)的快速響應(yīng),那么設(shè)計(jì)與開(kāi)發(fā)web services的時(shí)候如果能夠在服務(wù)的重用上做足,做強(qiáng),無(wú)疑在以后業(yè)務(wù)的響應(yīng)上會(huì)帶來(lái)莫大的好處,使用Contract First,使用XML/XSD定義服務(wù),你可以獲得重用,而java則很難做到這一點(diǎn)。
◆性能,web servers的性能一直是眾多人士關(guān)注的,采用Contract Last經(jīng)常會(huì)由于java的引用造成內(nèi)存中存在眾多的reference,假設(shè)一個(gè)java 對(duì)象引用了5個(gè)以上的其他對(duì)上,再把這些對(duì)象轉(zhuǎn)換成XML,可想而知。必然加大內(nèi)存的開(kāi)銷(xiāo),(XML里面表述起來(lái)就像有5個(gè)字節(jié)點(diǎn)一樣,那么更多呢?)采用Contract First,你很明白的所想要的服務(wù),你通過(guò)撰寫(xiě)XSD來(lái)描述你的服務(wù),你很清楚你的引用。
◆版本,使用 Contract Last的時(shí)候,快速響應(yīng)的服務(wù)是會(huì)經(jīng)常修改來(lái)適應(yīng)新的業(yè)務(wù)要求,你發(fā)布服務(wù)通過(guò)java類來(lái)開(kāi)始,那么新的服務(wù)在java中意味著新的接口以及新的實(shí)現(xiàn),那么怎么辦?廢棄原來(lái)的?也許原來(lái)的還在使用,那么你得保持兩個(gè)服務(wù)。采用Contract Last,由于Contract的松散耦合,它允許你存在兩套服務(wù)的同時(shí),并且只有一個(gè)實(shí)現(xiàn)。
這樣造成了Contract Last的問(wèn)題:自底向上生成經(jīng)常會(huì)得到無(wú)法重用的類型定義以及多個(gè)定義為表示語(yǔ)義等效信息的類型。相比而言: XML 模式規(guī)范定義范圍比 Java 更廣的用于描述消息結(jié)構(gòu)的構(gòu)造。其中包括各個(gè)選擇、限制的派生、Annotation 及其他。因此,與采用其他方式相比,使用 WSDL 和 XSD 定義接口并生成框架 Java 代碼的方式更好
比較二者,其實(shí)***優(yōu)劣的莫過(guò)于服務(wù)的變化性,Contract Last會(huì)讓服務(wù)難于修改和快速變更,難于重用,用java開(kāi)始設(shè)計(jì),那么你***保證你的服務(wù)是***不改變的,或者事先你得反復(fù)審查你的服務(wù)接口。使其盡量保持不變性。
【編輯推薦】