评WSO2/WSF系列框架之设计
来源:互联网 发布:太空工程师编程 编辑:程序博客网 时间:2024/05/05 09:22
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系列框架之设计
- 评WSO2/WSF系列框架之设计
- wsf
- WSO2之BusinessActivityMonitor(2)
- 框架设计系列-之一
- 《控制台小游戏系列》之《二、游戏框架设计》
- 框架设计之菜鸟漫漫江湖路系列 开篇
- 接口自动化测试系列之PHPUnit-框架设计构思
- WSF插件
- WSO2架构之Elastic Load Balancer
- WSO2之DAS介绍使用之一
- 深度学习框架设计系列
- 框架设计之感
- 框架设计之感
- SOA(wso2+tuscany)新框架开发部署规范
- OO系统设计师之路--设计模型系列(1)--软件架构和软件框架
- C#游戏编程:《控制台小游戏系列》之《二、游戏框架设计》
- 框架设计之菜鸟漫漫江湖路系列 三:初入江湖
- 将图片资源文件整合到DLL文件中
- Java中的文件与磁盘操作技术详细解析
- JMS(Jboss Messaging)的一点使用心得(十四)Spring扩展应用—用单线程接收Queue
- instanceof关键字
- linux 备份相关
- 评WSO2/WSF系列框架之设计
- ococo的可下载资源
- 指针与数组
- char,TCHAR,WCHAR区别
- [ASP.NET]如何灵活定制皮肤/页面:布局设计器介绍
- 货币 和 日期 转 中文大写
- J2EE下使用AJAX(一) 最原始的AJAX
- 我的工作,有没有专业点的名称?
- 开通再说