<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
    我想大家一定會問?為什么你們項目中要用到Web Services,因為客戶有如下需求:
    •   1、客戶要求項目用C/S架構(gòu),并且服務器端是IBM那一套:WebSphere AppServer+DB2+AIX5.3+RS/6000。
    •   2、最終用戶上報數(shù)據(jù),因為網(wǎng)絡原因,譬如Modem上網(wǎng),可以離線操作,等填寫了幾十張報表后,可以一次提交。同時,在登錄時,可以將服務端數(shù)據(jù)同步到本地Access或MSSQL數(shù)據(jù)庫,這樣提高客戶端響應速度。
    •   3、由于有些報表以后可能需要修改,或添加一些新報表,又不想重新開發(fā),這樣客戶那邊工作人員可以通過客戶端自定義。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    posted on 2007-07-03 10:29 綠茶 閱讀(99) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導航:
     
    在壓力下共生:)
    我們一起成長
    QQ:176739920

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    常用鏈接

    留言簿(1)

    隨筆分類

    隨筆檔案

    文章檔案

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 在线不卡免费视频| 亚洲人精品午夜射精日韩| 四虎影视久久久免费| 亚洲国产精品无码久久一区二区| 黄色网址免费观看| 日本高清不卡中文字幕免费| 久久精品国产亚洲AV无码偷窥 | 国产成人yy免费视频| 免费观看又污又黄在线观看| 亚洲色成人网一二三区| 国产免费久久精品久久久| 最近高清中文字幕免费| 国产成人亚洲精品91专区高清 | 亚洲人成网7777777国产| 毛片a级毛片免费观看免下载| 韩国免费A级毛片久久| 四虎必出精品亚洲高清| 亚洲AV无码久久寂寞少妇| 国产成人涩涩涩视频在线观看免费| 久久国产精品免费观看| 免费国产高清毛不卡片基地| 亚洲二区在线视频| 亚洲精品V欧洲精品V日韩精品| 永久免费视频v片www| 成人免费的性色视频| 91免费福利视频| 色吊丝性永久免费看码 | 亚洲精品无码久久久久秋霞| 亚洲AV无码国产在丝袜线观看| 免费永久看黄在线观看app| 国产91免费视频| 久久免费视频99| 精品一区二区三区高清免费观看| 亚洲av无码偷拍在线观看| 精品亚洲AV无码一区二区三区| 亚洲久本草在线中文字幕| 亚洲综合熟女久久久30p| 亚洲中文字幕无码专区| 免费国产a国产片高清| 韩国日本好看电影免费看| 国产精品视频免费一区二区|