WebServices开发体会和项目教训.docVIP

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
WebServices开发体会和项目教训.doc

去年,在一个大型项目(1500w)中用到Web Services,现在项目进入了尾声,所以对以前的开发经历做一个总结。? 我想大家一定会问?为什么你们项目中要用到Web Services,因为客户有如下需求:? 1、客户要求项目用C/S架构,并且服务器端是IBM那一套:WebSphere AppServer+DB2+AIX5.3+RS/6000。? 2、最终用户上报数据,因为网络原因,譬如Modem上网,可以离线操作,等填写了几十张报表后,可以一次提交。同时,在登录时,可以将服务端数据同步到本地Access或MSSQL数据库,这样提高客户端响应速度。? 3、由于有些报表以后可能需要修改,或添加一些新报表,又不想重新开发,这样客户那边工作人员可以通过客户端自定义。? 如果有以上需求,我想大家应该都比较认同这种异构分布式解决方案:客户端用C# .Net开发,通过Web Services调用服务器端Java组件。? 其实,上面的解决方案太过于理想,最后我们不得不面对残酷的现实:三种客户端中的两种最后被迫改为B/S。? 在项目中,我主要负责Web Services和服务器端组件开发中所遇到的种种问题,相当于技术支持吧,以及部分模块的开发。? 以下是我们开发中遇到的实际问题,虽然最终都一一解决,但遇到了几个无法突破的瓶颈:客户端不稳定,客户端响应迟缓,后期测试和维护困难巨大。? 一、异构平台的Web Services兼容性? 开发过程中,我们用Axis做Web Services引擎,Tomcat做容器。因为我们只有IBM提供的RAD6.0的60天试用版。该工具超级占内存,用内置的WebSphere开发测试极其缓慢,严重影响开发效率,经过我初期试用后,基本废弃了。推荐项目组二三十开发人员用Lomboz eclipse3.12开发,基本满意。? 由于Axis是一个嵌入式引擎,所以可以将其打包到最终的WebSphere AppServer(WAS)上,也就是说,我们没有用到WAS提供的Web Services引擎,这引出了后面会谈到的一个问题:Web Services安全性怎么部署?? 用Axis时,Axis一直都有一个bug或是说缺陷,官方文档也详细注明,只是我们当时没有发现而走了很多弯路:用Axis发布的Web Services给.net客户端调用时,必须用RPC风格,不能用Web Services标准的跨平台风格Document,而后者是Lomboz axis插件的默认方式。也就是说,我们发布的Web Services总是莫名其妙的不好用。我们用JBuilder2007自带的Axis插件发布,竟然非常顺利。? 二、Web Services开发中服务器端组件问题? 我们服务器端开发,是用Spring+Hibernate,在Spring的Service层上再封装一层,也就是fa?ade模式了,该fa?ade直接发布为Web Services,必须经过这个转换,一是因为性能,二是因为Hibernate的复杂Model对象,在wsdl描述后,被.net客户端识别有些问题,List、Map也会有问题,总之这些对象太复杂了,我们包装成简单的VO对象。? 另外一个问题是,我们的service方法,如果直接给WebWork这样的框架在服务端用的的话,是不会出问题,当提供给.net客户端用时,就会出现lazy loading的错误,因为.net客户端不能接收Proxy对象,必须将数据全部load出来,但这时Hibernate的session已经关闭。项目组很多人遇到这些问题,最后大家不约而同的全部用eager模式,导致了最后的恶果:严重的的性能问题。由于我不是leader,所以当时这个问题发现了,也没法要求别人,毕竟很大的一个团队。? 切身体会:一个团队,如果不熟悉Hibernate就随便上,技术风险非常大。Hibernate带来的开发效率,是以团队成员掌握它为前提。? 当然,性能问题不只是由Hibernate引起,Web Services本身的性能也非常严重:XML的序列化和反序列化耗时,XML文件的膨胀导致的网络传输,HTTP的无状态导致网络IO性能。切身体会:如果系统必须用分布式,而不是追求所谓的SOA架构,Web Services应该是下下策,因为还有很多协议和方式可以选择:IIOP、RMI、Hessian、burlap、RPC,另外,做系统集成还有Message方式。? Web Services开发中其它问题比较少,因为Web Services本身不用编程,只是部署的事情,开发工具和服务器会自动为我们做,我们只需要理解SOAP引擎的原理和使用就够了,真的遇到问题,可以通过Axis的TcpMonitor监视SOAP数据包。?

文档评论(0)

docindoc + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档