评WSO2/WSF系列框架之设计
wso2/wsf是wso2推出的基于wsf_c的系列web service框架,其關鍵是提供了對ws-security的全套支持,比如sign、encrytion、timestamp;?目前能夠支持的語言包括:Php、Ruby、Perl、C、C++、Java;其中Php我們已經用該框架進行了接入,具體可見http://blog.csdn.net/sfdev/archive/2008/03/29/2228761.aspx;之后對Ruby語言也進行預研,由于之前已經有了Php的經驗,WSF/Ruby的環境配置和sample運行沒有遇上什么阻礙,但是由于無法驗證服務端簽名的問題,我們還嘗試了wss4r【Web Services Security For Ruby】這個框架,該框架年老失修,很多東西都有問題,特別是對namespace的處理上,很多時候都需要自己修改他的源代碼來完成(源碼中二選一的情況挺多,一般注釋掉一種,保留另外一種,若需要啟用注釋掉的,則手工將另外一種注釋掉);
綜合前段時間對各種語言的接入情況,包括Java Xfire、.Net WSE 2.0、.Net WSE 3.0、.Net WCF、Php WSO2/WSF、Ruby WSO2/WSF,各種框架的接入難易程度不通,對wss支持的設計方式也不一樣;下面就WSO2/WSF和其他各框架的設計方式及其接入成本等進行下對比;
1、WSO2/WSF是唯一的系列框架集,他在wcf_c【基于AXIS/Rampart思想的C語言實現】的基礎上可以擴展到不同語言之上;由于他們的核心是一樣的,所有不同語言利用此框架接入時的成本是比較低的,尤其是經歷過其中一種語言接入之后;相比較而言,其他的框架都是針對特定語言的,沒有通用性;
2、由于WSO2/WSF的核心是WCF_C,他是用C實現的,所以在跟蹤bug時非常困難,能夠跟蹤的級別也就是各語言對WCF_C的封裝層面;.Net下面各框架也都有同樣的問題,雖然說.Net 3.5所開放了很多的源碼,可以在vs2008中進行在線查看,但是我沒有成功過;對于這點,java方面自然有得天獨厚的優勢,基本上能夠跟蹤到90%以上的源代碼,對于security方面的src,可以到sun網站下載scsl版本的源碼,默認jdk中的src是沒有security和sun部分的源碼的;
3、WSO2/WSF對ws-security的實現方式非常不友好!這系列框架可以用于客戶端進行ws的調用,也可以用于服務端發布帶有security支持的ws;但是他所有相關的參數都是沒有客戶端和服務端之分的,這加大了理解該框架細節的難度,很多參數無法明確知道其用途及其使用范圍,由于無法跟蹤源碼,很多時候只能通過設置不通的值來進行嘗試其返回的結果;其二:在客戶端調用或者是服務端接受請求進行處理時,參數設置也是統一的;其實無論對于哪種處理方式(發起或者接收請求),都有兩個過程,一個發送和一個接收,這兩個過程很多時候需要的參數是不一樣的,這在wso2/wsf中就不知道怎么辦了!相比較而言,Java和.Net對此的設計就更優美、更具可擴展性;比如Xfire/AXIS2中對于各請求都有OutflowSecurity/InflowSecurity的配置,這兩者是互不干擾的,當然兩者不是必須的,你可以只設置其一,這要看具體需求;.Net下面的實現方式也比較類似,但是.Net下面更傻瓜化,很多都可以通過工具Step By Step的進行;
4、非.Net語言都無需將證書導入到OS中,可以直接從文件讀取,這非常省事;在我們接入各ISV過程中,.Net都是一個耗資源大戶,不同環境下面證書導致的問題很多;
5、從證書格式上來說,Java采用jks和der crt,.Net采用pfx和der crt,其他均采用pem和pem crt;當然Java也可以采用pfx格式證書,從服務端為Java這種情況來說,非Java環境下面的證書格式均需要用工具來進行額外轉換,當然pem格式的步驟最多;
總的來說,能看到源碼真是件幸事啊,不管從哪個角度來說,Java的接入都是最輕松的,在框架的設計上也是最優美的;
PS:在前面的《WSF/PHP調用帶有WS-Security支持的Web Service時的注意事項》文章中,我提到該框架暫時不支持服務端簽名驗證;但實際上這是錯誤的,框架本身提供了該功能,而且就是通過receiverCertificate參數來加載服務端公鑰的;只不過該功能能夠支持的服務端security_token_reference類型有限,據我的測試,現在好像只支持KeyIdentifier類型,在框架自帶的sample中無論客戶端/服務端配置何種類型,返回的始終是KeyIdentifier類型的,而調用也始終成功,但是若服務端不是用WSO2/WSF框架發布的,那返回其他類別的就不能驗證了;這在前臺沒有任何體現,需要查看后臺日志文件才行;
總結
以上是生活随笔為你收集整理的评WSO2/WSF系列框架之设计的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Code Pratice】—— 猜字母
- 下一篇: 微信开放小程序SDK,几款SDK产品对比