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