<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    greenteazsh
    讓我們攜手一起努力......
    posts - 26,  comments - 18,  trackbacks - 0
    我想大家一定會問?為什么你們項(xiàng)目中要用到Web Services,因?yàn)榭蛻粲腥缦滦枨螅?
    •   1、客戶要求項(xiàng)目用C/S架構(gòu),并且服務(wù)器端是IBM那一套:WebSphere AppServer+DB2+AIX5.3+RS/6000。
    •   2、最終用戶上報(bào)數(shù)據(jù),因?yàn)榫W(wǎng)絡(luò)原因,譬如Modem上網(wǎng),可以離線操作,等填寫了幾十張報(bào)表后,可以一次提交。同時,在登錄時,可以將服務(wù)端數(shù)據(jù)同步到本地Access或MSSQL數(shù)據(jù)庫,這樣提高客戶端響應(yīng)速度。
    •   3、由于有些報(bào)表以后可能需要修改,或添加一些新報(bào)表,又不想重新開發(fā),這樣客戶那邊工作人員可以通過客戶端自定義。

      如果有以上需求,我想大家應(yīng)該都比較認(rèn)同這種異構(gòu)分布式解決方案:客戶端用C# .Net開發(fā),通過Web Services調(diào)用服務(wù)器端Java組件。

      其實(shí),上面的解決方案太過于理想,最后我們不得不面對殘酷的現(xiàn)實(shí):三種客戶端中的兩種最后被迫改為B/S。

      在項(xiàng)目中,我主要負(fù)責(zé)Web Services和服務(wù)器端組件開發(fā)中所遇到的種種問題,相當(dāng)于技術(shù)支持吧,以及部分模塊的開發(fā)。

      以下是我們開發(fā)中遇到的實(shí)際問題,雖然最終都一一解決,但遇到了幾個無法突破的瓶頸:客戶端不穩(wěn)定,客戶端響應(yīng)遲緩,后期測試和維護(hù)困難巨大。

      一、異構(gòu)平臺的Web Services兼容性

      開發(fā)過程中,我們用Axis做Web Services引擎,Tomcat做容器。因?yàn)槲覀冎挥蠭BM提供的RAD6.0的60天試用版。該工具超級占內(nèi)存,用內(nèi)置的WebSphere開發(fā)測試極其緩慢,嚴(yán)重影響開發(fā)效率,經(jīng)過我初期試用后,基本廢棄了。推薦項(xiàng)目組二三十開發(fā)人員用Lomboz Eclipse3.12開發(fā),基本滿意。

      由于Axis是一個嵌入式引擎,所以可以將其打包到最終的WebSphere AppServer(WAS)上,也就是說,我們沒有用到WAS提供的Web Services引擎,這引出了后面會談到的一個問題:Web Services安全性怎么部署?

      用Axis時,Axis一直都有一個bug或是說缺陷,官方文檔也詳細(xì)注明,只是我們當(dāng)時沒有發(fā)現(xiàn)而走了很多彎路:用Axis發(fā)布的Web Services給.net客戶端調(diào)用時,必須用RPC風(fēng)格,不能用Web Services標(biāo)準(zhǔn)的跨平臺風(fēng)格Document,而后者是Lomboz axis插件的默認(rèn)方式。也就是說,我們發(fā)布的Web Services總是莫名其妙的不好用。我們用JBuilder2007自帶的Axis插件發(fā)布,竟然非常順利。

      二、Web Services開發(fā)中服務(wù)器端組件問題

      我們服務(wù)器端開發(fā),是用Spring+Hibernate,在Spring的Service層上再封裝一層,也就是faade模式了,該faade直接發(fā)布為Web Services,必須經(jīng)過這個轉(zhuǎn)換,一是因?yàn)樾阅埽且驗(yàn)镠ibernate的復(fù)雜Model對象,在wsdl描述后,被.net客戶端識別有些問題,List、Map也會有問題,總之這些對象太復(fù)雜了,我們包裝成簡單的VO對象。

      另外一個問題是,我們的service方法,如果直接給WebWork這樣的框架在服務(wù)端用的的話,是不會出問題,當(dāng)提供給.net客戶端用時,就會出現(xiàn)lazy loading的錯誤,因?yàn)?net客戶端不能接收Proxy對象,必須將數(shù)據(jù)全部load出來,但這時Hibernate的session已經(jīng)關(guān)閉。項(xiàng)目組很多人遇到這些問題,最后大家不約而同的全部用eager模式,導(dǎo)致了最后的惡果:嚴(yán)重的的性能問題。由于我不是leader,所以當(dāng)時這個問題發(fā)現(xiàn)了,也沒法要求別人,畢竟很大的一個團(tuán)隊(duì)。

      切身體會:一個團(tuán)隊(duì),如果不熟悉Hibernate就隨便上,技術(shù)風(fēng)險(xiǎn)非常大。Hibernate帶來的開發(fā)效率,是以團(tuán)隊(duì)成員掌握它為前提。

      當(dāng)然,性能問題不只是由Hibernate引起,Web Services本身的性能也非常嚴(yán)重:XML的序列化和反序列化耗時,XML文件的膨脹導(dǎo)致的網(wǎng)絡(luò)傳輸,HTTP的無狀態(tài)導(dǎo)致網(wǎng)絡(luò)IO性能。切身體會:如果系統(tǒng)必須用分布式,而不是追求所謂的SOA架構(gòu),Web Services應(yīng)該是下下策,因?yàn)檫€有很多協(xié)議和方式可以選擇:IIOP、RMI、Hessian、burlap、RPC,另外,做系統(tǒng)集成還有Message方式。

      Web Services開發(fā)中其它問題比較少,因?yàn)?strong>Web Services本身不用編程,只是部署的事情,開發(fā)工具和服務(wù)器會自動為我們做,我們只需要理解SOAP引擎的原理和使用就夠了,真的遇到問題,可以通過Axis的TcpMonitor監(jiān)視SOAP數(shù)據(jù)包。

      開發(fā)過程中,.net客戶端那邊,VSStudio做得很智能,它會根據(jù)wsdl文件生成我們所要的一切,當(dāng)然,wsdl文件的變化,會導(dǎo)致VSStudio重新生成所有的類和接口,也很耗時,并且容易出問題。

    出處:IT專家網(wǎng)社區(qū)http://searchwebservices.techtarget.com.cn/tips/465/3388465.shtml

    posted on 2007-07-03 10:43 綠茶 閱讀(297) 評論(0)  編輯  收藏 所屬分類: WebService
    在壓力下共生:)
    我們一起成長
    QQ:176739920

    <2007年7月>
    24252627282930
    1234567
    891011121314
    15161718192021
    22232425262728
    2930311234

    常用鏈接

    留言簿(1)

    隨筆分類

    隨筆檔案

    文章檔案

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 免费看搞黄视频网站| 可以免费看的卡一卡二| 中文字幕亚洲精品资源网| 亚洲?V乱码久久精品蜜桃| 久久久免费观成人影院| 天天看免费高清影视| 成av免费大片黄在线观看| 亚洲噜噜噜噜噜影院在线播放| 国产伦一区二区三区免费| 男人j进入女人j内部免费网站| 亚洲人成7777影视在线观看| 中文字幕亚洲无线码a| www.999精品视频观看免费| 一个人看的在线免费视频| 亚洲av片不卡无码久久| 国产成人高清亚洲| 日韩少妇内射免费播放| 亚洲综合视频在线观看| 亚洲第一成人影院| 香蕉免费一级视频在线观看| 久久精品国产亚洲AV忘忧草18| 中文字幕亚洲一区二区va在线| 一二三四在线观看免费高清中文在线观看 | 国产 亚洲 中文在线 字幕| 亚洲中文字幕无码爆乳AV| 成人免费视频网址| 亚洲欧美国产国产综合一区| 日韩亚洲一区二区三区| 波多野结衣免费视频观看| 国产91色综合久久免费| 永久免费av无码网站yy| 狼色精品人妻在线视频免费| 国产亚洲国产bv网站在线| 亚洲免费视频在线观看| 免费99精品国产自在现线| 你懂得的在线观看免费视频| 亚洲一卡2卡4卡5卡6卡在线99| 亚洲乱码无码永久不卡在线 | 免费无码又爽又刺激网站| 国产精品无码亚洲精品2021| 亚洲一区二区三区免费视频|