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

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

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

    nighty

    折騰的年華
    posts - 37, comments - 143, trackbacks - 0, articles - 0

    B/S,C/S架構(gòu)混合使用

    Posted on 2008-05-06 12:43 寒武紀(jì) 閱讀(13763) 評論(25)  編輯  收藏 所屬分類: 軟件架構(gòu)

        一般而言,我們平常接觸的大多數(shù)項目都應(yīng)該是單純使用B/S或是C/S,除非在特殊場合,否則比較少混合使用B/S,C/S架構(gòu)。首先說一下對這二種架構(gòu)特點的一些個人理解。B/S應(yīng)該是目前很多項目都應(yīng)用的架構(gòu),瀏覽器的方式使得用戶的使用十分方便,用戶可以何時何地通過Internet訪問URL而進行相應(yīng)的工作,升級維護也能比較集中,缺點就是瀏覽器的表現(xiàn)能力受限以及常常受非議的安全性問題,如果軟件的應(yīng)用范圍區(qū)域不集中,而且用戶經(jīng)常變換地點進行訪問,那么這種架構(gòu)是非常適合的。C/S架構(gòu)的C端有非常強的處理能力,所以在交互表現(xiàn)和安全方面可以做得比瀏覽器強,但是缺點也是非常明顯的,安裝部署、升級維護、版本兼容都是比較頭大的事情,一般的適用場景是集中的辦公室場所,用戶使用范圍相對穩(wěn)定,以及一些對業(yè)務(wù)處理非常復(fù)雜的場合,為了降低服務(wù)器的負荷,同樣需要C模式的支持。
        以前接觸過的電信領(lǐng)域,就有過混合架構(gòu)的軟件。但是都是非常寵大,一直都對其實現(xiàn)方案比較感興趣,但是都沒有機會進一步了解。最近搜索了一下相關(guān)的資料,總結(jié)一下混合應(yīng)用的一些想法(只針對Java方向)。
        ①混合架構(gòu)的問題集中點。服務(wù)端共享,客戶端采用不同的表現(xiàn)方式,共享的應(yīng)該是業(yè)務(wù)層接口,持久層應(yīng)該是屏蔽的。應(yīng)用層的消息傳遞就是整個應(yīng)用的關(guān)鍵所在,雖然像Jakarta提供的httpClient這種模仿瀏覽器的組件,但是畢竟是模仿,在很多方面的功能還是缺失的。
        ②最傳統(tǒng)的方式是采用EJB做為服務(wù),這個寵然大物容易讓人害怕,不過在分布式的系統(tǒng)中它還是有應(yīng)用優(yōu)勢的,像電信和金融這種行業(yè)應(yīng)用還是比較廣的,而且現(xiàn)成的中間件和應(yīng)用服務(wù)器商都比較多,像Oracel、BEA、IBM、Sun都有成熟的應(yīng)用產(chǎn)品,當(dāng)然開發(fā)的成本和人力投入也是恐龍級數(shù)據(jù)的。
        ③有網(wǎng)友說在C端直接訪問數(shù)據(jù)庫,B/S結(jié)構(gòu)不變,也就是通過數(shù)據(jù)庫進行共享。這種方式是不可取的,二個缺點:把服務(wù)器的業(yè)務(wù)邏輯搬到了C端上,嚴(yán)格上講是不安全的,升級維護也非常麻煩;并發(fā)控制的壓力都在數(shù)據(jù)庫上。
        ④采用RMI,這個老古董相信應(yīng)該很多人都不使用了,因為它的使用要一連串的手續(xù),比如服務(wù)接口定義必須實現(xiàn)Remote接口,服務(wù)Server在實現(xiàn)時必須繼承UnicastRemoteobject類,必須使用rmic指令產(chǎn)生stub和skeleton等,設(shè)置上繁雜。
        ⑤Spring 遠程服務(wù)。這個應(yīng)該說是比較可取的,大家都比較喜歡輕量級的東西。就如第一點所說的,通過遠程服務(wù),我們可以在客戶直接調(diào)用服務(wù)端的服務(wù)接口,就像本地調(diào)用一樣,Spring對遠程服務(wù)提供了好幾種實現(xiàn)方案。
        ⑥WebService。適合異構(gòu)環(huán)境,但是WSDL的這種方式相對來說會比較耗費資料,因為標(biāo)準(zhǔn)定義除了業(yè)務(wù)內(nèi)容外,還有許多另外的說明內(nèi)容。
        Spring遠程服務(wù)實現(xiàn)方案介紹:
        ⑴Spring + RMI。Spring把傳統(tǒng)的RMI方式的繁雜設(shè)置去掉,只要配置Bean文件就和定義服務(wù)接口可以。RMI的服務(wù)啟動和管理都交給Spring來處理。RMI訪問的缺點就是對防火墻的穿透力比較差。
        ⑵Spring + Caucho的Hessian、Burlap。Hessian使用Http將對象以中性的二進制消息進行傳送,而不像RMI使用Java的序列化格式(這種序列化是專制的,不是Sun提供的序列化機制),由于是二進制消息,所以不受限于某種實現(xiàn)語言,傳輸時所需要的帶寬較小是其優(yōu)點。Burlap是以XML文件格式傳送對象,XML文件有較高可讀性,應(yīng)用程序只要能解釋XML就能接收消息,當(dāng)然也不限于某種語言,但是組裝XML和解釋XML都需要消耗資源,當(dāng)傳輸大數(shù)據(jù)時性能應(yīng)該存在問題。
        ⑶Spring + Http Invoker。由于Hessian的序列化機制不是正統(tǒng)的Java序列化機制,所以當(dāng)遇到傳輸復(fù)雜的業(yè)務(wù)模型時,就會存在各種問題,為此,Spring又提供了Http Invoker,同樣是使用Http傳送對象,而且是使用Java的序列化機制。相比RMI,Http對防火墻的穿透力要強。
        后來嘗試了最后的這種Http Invoker方式,是在Spring2.0版本下嘗試的,開發(fā)非常簡單,網(wǎng)上也有大量的資料介紹。應(yīng)該說從這里入口可以做一些嘗試。目前遇到的一個項目就需要混合架構(gòu),B/S采用Spring2 + Struts2 + Hiberntae3,瀏覽器只提供一些查詢功能和數(shù)據(jù)展現(xiàn),C端采用Eclipse的RCP平臺,共享服務(wù)器的業(yè)務(wù)接口,調(diào)用就采用Http Invoker遠程服務(wù),復(fù)雜的業(yè)務(wù)功能都集中在C端上。



    剛進場的時候戲就落幕

    Feedback

    # re: B/S,C/S架構(gòu)混合使用[未登錄]  回復(fù)  更多評論   

    2008-05-06 12:59 by origo
    想學(xué)習(xí)spring http Invoker 的C/S 模式和Spring2 + Struts2 + Hiberntae3的B/S模式的 可以訪問這個網(wǎng)站:http://soyframework.com 有詳細例子。

    # re: B/S,C/S架構(gòu)混合使用  回復(fù)  更多評論   

    2008-05-06 15:24 by blackhero
    現(xiàn)在很多cs和bs混合的項目,互補不同

    # re: B/S,C/S架構(gòu)混合使用  回復(fù)  更多評論   

    2008-05-06 16:50 by 大道自然
    和我的想法差不多,但是我現(xiàn)在還沒有時間去實現(xiàn)C/S結(jié)構(gòu)

    # re: B/S,C/S架構(gòu)混合使用  回復(fù)  更多評論   

    2008-05-06 17:26 by 銀河使者
    以前也做過很多這處C/S和B/S混合的項目。但有些客戶端使用的不是java。當(dāng)然,服務(wù)端也非得使用象EJB一樣的重量級組件。如我做過的一個系統(tǒng)C/S部分的客戶端使用的是delphi,而服務(wù)端只是普通的jsp/servlet程序,也未使用web service,而是通過servlet來為C/S部分的客戶端(delphi客戶端)返回數(shù)據(jù)(也包括一些加密數(shù)據(jù)),而客戶端通過http協(xié)議訪問servlet。當(dāng)然,B/S部分的還是jsp。這樣實現(xiàn)個人感覺比較簡單。

    # re: B/S,C/S架構(gòu)混合使用  回復(fù)  更多評論   

    2008-05-06 21:59 by jasin2008
    c/s 遠程訪問如何維持會話狀態(tài),如何保證數(shù)據(jù)傳輸?shù)陌踩裕恢罉侵髟谶@方面是怎么解決的

    # re: B/S,C/S架構(gòu)混合使用[未登錄]  回復(fù)  更多評論   

    2008-05-07 09:10 by 寒武紀(jì)
    @jasin2008
    個人覺得C/S遠程調(diào)用要像B/S那樣保持會話是比較困難的,遠程調(diào)用和瀏覽器的Cookie機制脫節(jié),所以要模擬會話是有難度的。有網(wǎng)友給出了一些看法,我覺得這種想法挺不錯的,可以參照一下。
    http://www.javaeye.com/topic/82492

    # re: B/S,C/S架構(gòu)混合使用  回復(fù)  更多評論   

    2008-05-07 09:12 by 銀河使者
    實際上C/S和B/S從底層技術(shù)上沒什么區(qū)別。C/S只是模擬瀏覽器來訪問服務(wù)端資源,至于會話狀態(tài),可以讀取http響應(yīng)頭的Session-cookie信息來處理,至于安全性,客戶端可以使用https協(xié)議訪問服務(wù)端,或是自已加密數(shù)據(jù)。

    # re: B/S,C/S架構(gòu)混合使用[未登錄]  回復(fù)  更多評論   

    2008-05-07 11:32 by origo
    @大道自然
    目前有很多現(xiàn)成的組件可以用,c/s的實現(xiàn)還是比較容易的,swing的方式最忌諱的就是代碼混亂,沒有框架支持。

    # re: B/S,C/S架構(gòu)混合使用[未登錄]  回復(fù)  更多評論   

    2008-05-07 11:33 by origo
    @jasin2008
    會話的維持保持在后臺,每個請求維持一個會話,這方便B/S和C/S實現(xiàn)起來也差不多吧

    # re: B/S,C/S架構(gòu)混合使用  回復(fù)  更多評論   

    2008-05-07 14:27 by 銀河使者
    是的,從技術(shù)上差不多。

    # re: B/S,C/S架構(gòu)混合使用  回復(fù)  更多評論   

    2008-05-07 16:37 by for_the_king
    運用Swing+http invoker+spring+hibernate開發(fā)C/S架構(gòu)的系統(tǒng)從技術(shù)上沒有難度,而且java web start可以解決客戶端自動升級的問題,兩年前我們公司一個項目采用這種方式客戶就非常喜歡,客戶又感受到了傳統(tǒng)C/S應(yīng)用的用戶體驗,而且沒有升級麻煩,只局限在局域網(wǎng)中使用等待一系列問題。樓主擔(dān)心的問題10行代碼就可以搞定(http://www.javaeye.com/topic/82492,這么笨的方法也虧這個人想的出來),首先擴展SimpleHttpInvokerRequestExecutor的openConnection()方法把客戶端的信息(登錄用戶,客戶端選擇的locale等)加到URL后面,在服務(wù)器端寫一個filter把這些信息取出來放到threadlocal中,在Service中不就可以隨便用了嗎,httpinvoker本身就是無狀態(tài)的,干嘛非把httpSession牽扯進來,想法就沒對。

    其實這種架構(gòu)最麻煩的莫過于界面的開發(fā),在我們原來的項目中一會兒客戶想要一個可以翻頁的表格,過幾天他又想點擊表頭可以排序,單列排序他又不滿足了他又想多列排序,表格搞得差不多了表單又來了,Swing的布局管理非常靈活,要做好一個表單真得費一番勁,而且客戶總喜歡把他們用VB,delphi做的系統(tǒng)拿來跟你比,說你界面丑陋啦,日期輸入不人性化啦...,用struts2半天就可以搞定的一個表單用Swing恁是搞了一個星期,寫界面的痛苦啊。總之,Swing的界面開發(fā)是個大麻煩,項目完了以后將一些可重用的組件整理了一下,但還是發(fā)現(xiàn)界面代碼一大堆,極難維護,后來的項目只要客戶說C/S,我們也絕口不提C/S。

    后來在javaeye首頁上看到一家公司的富客戶端解決方案的廣告,進去看了看第一感觸就是這個框架的作者當(dāng)時絕對和我一樣痛苦過,只不過他痛定思痛走的更遠了一些,能夠把控件封裝起來,把項目中常見的問題在框架中一并解決了,現(xiàn)在只是感嘆如果這個框架能在兩年前出現(xiàn)那該有多好啊!

    # re: B/S,C/S架構(gòu)混合使用[未登錄]  回復(fù)  更多評論   

    2008-05-07 18:13 by 寒武紀(jì)
    樓上的想法不錯,沒有具體實現(xiàn)過,Http invoker也是最近才曉得。希望能進一步深入了解。
    說起GUI的開發(fā)有強烈的同感,記得以前開發(fā)的第一個Swing項目的時候,項目不大,但是界面不少,表格、樹這些都需要用到。那時JDK和NetBean版本都很低,記得是1.4.X+4.1版本,Eclipse的VE太容易暴掉,所以就在NetBean那上面畫GUI,如果一個頁面控件多了NetBean里面的代碼就亂成一鍋粥。沒有辦法,在基本成型后就全部搬到Eclipse進行重構(gòu)(工作量比較大)。最大的問題就是缺乏Application運行管理內(nèi)核,想想當(dāng)初為了一個打開--編輯--保存--關(guān)閉編輯模型的功能,以及像構(gòu)建工具欄、狀態(tài)欄等這些基本框架,花了大量大量的時間和精力,還好,初出茅廬,有的就是精力,最后還是拼起來了。很多class都是上一二千行的,根本無法維護。后來轉(zhuǎn)去學(xué)習(xí)Eclipse RCP框架,感覺好多了,也成功在RCP平臺上構(gòu)建了一個大型項目的應(yīng)用。自從JDK6以后,Swing好像提升非常快,NetBean也開始支持RCP應(yīng)用,不久還有Application框架,而且像SwingLab這些高級組件也挺不錯的。感覺以后開發(fā)Swing應(yīng)該比原來要容易一些。

    # re: B/S,C/S架構(gòu)混合使用  回復(fù)  更多評論   

    2008-05-07 19:09 by 銀河使者
    做C/S的客戶端不必非得用java吧,雖然Java是跨平臺的,在國內(nèi)客戶端基本都是windows。個人認(rèn)為客戶端用delphi、c++ builder、vb,甚至C#比較好,可以用java做服務(wù)端。java的swing、awt或是SWT做GUI遠不如delphi這些開發(fā)工具方便。如果非得要做的話,netbeans6.1提供的java gui比較好,layout也非常方便,大家可以試試。

    # re: B/S,C/S架構(gòu)混合使用  回復(fù)  更多評論   

    2008-05-07 19:10 by 銀河使者
    我以前做過一個項目,客戶端就是用的delphi,服務(wù)端用的jsp+hibernate,效果很好。反正通訊用的都是tcp

    # re: B/S,C/S架構(gòu)混合使用  回復(fù)  更多評論   

    2008-05-07 22:42 by for_the_king
    還試圖用VB,VC,delphi做數(shù)據(jù)庫應(yīng)用的人醒醒吧,就拿客戶端不能自動升級這一條就能讓我永遠不會考慮他們,這些語言或架構(gòu)不適合做企業(yè)應(yīng)用,如果還沒搞明白什么是企業(yè)應(yīng)用,那我告訴你企業(yè)應(yīng)用至少要有應(yīng)用服務(wù)器。客戶端用delphi服務(wù)器端用jsp+hibernate通訊用TCP就更扯了,當(dāng)然了every language can do everything,向你們的架構(gòu)師的不畏復(fù)雜的精神和他這么有創(chuàng)意的架構(gòu)致敬。

    # re: B/S,C/S架構(gòu)混合使用  回復(fù)  更多評論   

    2008-05-07 22:46 by for_the_king
    在blogjava上搜到一篇文章http://www.tkk7.com/knight-glory-ggg/archive/2008/03/05/183984.html
    估計是這個框架的作者寫出來宣傳框架的,不過作者將Swing做數(shù)據(jù)庫應(yīng)用面臨的問題說的很清楚,值得一讀。

    # re: B/S,C/S架構(gòu)混合使用  回復(fù)  更多評論   

    2008-05-28 16:05 by 懶人
    @銀河使者
    有很多語言可以做客戶端的

    # re: B/S,C/S架構(gòu)混合使用  回復(fù)  更多評論   

    2008-05-28 17:42 by 銀河使者
    @懶人

    不是有很多語言,而是所有支持網(wǎng)絡(luò)技術(shù)(TCP協(xié)議)的語言或技術(shù)都可以做客戶端。包括flash、office。

    如果需要非常絢麗的效果,我看flash就很好,flash做動畫可以其他語言比不了的啊。而且flash的script也可以使用TCP協(xié)議。這就足夠了。如果誰用flash做一個msn或QQ的客戶端,那效果遠比msn或QQ要好的多了。

    # re: B/S,C/S架構(gòu)混合使用  回復(fù)  更多評論   

    2008-05-28 17:52 by 銀河使者
    @for_the_king

    誰說delphi、vc做的東西不能自動升級。我不知道你用過瑞星或其他的殺毒軟件沒。也是用VC或其他的語言寫的,不是也可以自動升級。還有微軟的smallclient(智能客戶端),用C#或VB.net寫的C/S程序。不是也可以很好的自動升級嗎!至于通過tcp協(xié)議訪問,當(dāng)然,用delphi做的程序不一定直接使用tcp。就象ajax可以使用json一樣,做個通用的映射組件,類似于web services,解決的方法非常多。

    但是web程序卻無法做到C/S的某些功能,至少很復(fù)雜。如做個樹、菜單。這些用delphi、vb,只要幾分鐘就可以做個很好的程序。還有更復(fù)雜的效果。
    最煩人的是web程序并不真正跨平臺,ie6、ie7、firefox都得單獨考慮。除非你可以強迫用戶必須使用自己指定的瀏覽器。而C/S程序則是真正意義上的跨平臺。(只限于windows,客戶端是非windows時除外),在win98、win2000、winxp,2003,vista,windows2008上,只要能運行起來,界面效果都一樣。


    至于什么是企業(yè)級應(yīng)用,我認(rèn)為沒有必要非得強調(diào)必須有什么,不能有什么。只要能滿足用戶的需要,其他的一切都不重要。主要得用戶滿意、然后才能老板滿意,最后才能自己滿意。

    # re: B/S,C/S架構(gòu)混合使用  回復(fù)  更多評論   

    2008-05-28 17:55 by 銀河使者
    另外,開發(fā)一個大的軟件系統(tǒng)不僅需要開發(fā)人員有團隊精神。所使用的技術(shù)也應(yīng)團隊合作。沒有哪一種技術(shù)可以適合于所有的領(lǐng)域和應(yīng)用。如進行數(shù)據(jù)遷移,就可以利用數(shù)據(jù)庫本身的技術(shù),如sql server的DTS技術(shù)。

    # re: B/S,C/S架構(gòu)混合使用[未登錄]  回復(fù)  更多評論   

    2008-07-21 19:20 by lucky
    www.soyframework.com目前最好的RCP框架了,不防試試

    # re: B/S,C/S架構(gòu)混合使用  回復(fù)  更多評論   

    2013-03-06 23:16 by harrison
    怒頂樓主,查找了半天相關(guān)的文獻資料

    # re: B/S,C/S架構(gòu)混合使用  回復(fù)  更多評論   

    2014-04-16 17:31 by Unbotrusive
    我同意“客戶端就是用的delphi,服務(wù)端用的jsp+hibernate”,效果確實很好。其實這個只要用上SOA 框架后,都能解決C/S 和B/S混合使用的問題。 只要在服務(wù)器上搭建能處理數(shù)據(jù)的SOA框架的處理服務(wù),然后再搭建客戶端,直接利用服務(wù)器的數(shù)據(jù),這樣就可以解決問題了。
    但是若按上面4樓的說法只用一種語言只得很麻煩,特別是JAVA 這種節(jié)目很差的語言。

    # re: B/S,C/S架構(gòu)混合使用[未登錄]  回復(fù)  更多評論   

    2014-10-02 15:42 by eagle
    可以幫我發(fā)個b/s和c/s混合架構(gòu)的例子不?我們最近要做,我只用.net做過b/s架構(gòu)的網(wǎng)站,現(xiàn)在要我負責(zé)這個混合結(jié)構(gòu)的c,好愁喲,不知道該怎么弄,求助樓主大神,360082175@qq.com是我的QQ郵箱

    # re: B/S,C/S架構(gòu)混合使用[未登錄]  回復(fù)  更多評論   

    2014-10-02 15:42 by eagle
    補充一下:用的語言是java,開發(fā)環(huán)境是eclipse

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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲成a人片在线观看无码 | 成人免费视频网站www| 亚洲一区二区三区精品视频| 日本成人免费在线| 国产线视频精品免费观看视频| 亚洲成人福利在线| 久久精品国产精品亚洲艾草网美妙| 久久久久国色av免费看| 亚洲人成网站18禁止| 在线观看亚洲精品福利片| 皇色在线视频免费网站| 国产免费久久精品99久久| 亚洲av专区无码观看精品天堂| 亚洲精品无码成人片在线观看| 1000部免费啪啪十八未年禁止观看| 黄色免费网址大全| 亚洲美女视频网址| 亚洲天堂在线视频| 成人毛片18岁女人毛片免费看| 国偷自产一区二区免费视频| 午夜亚洲WWW湿好爽 | 一个人看的免费观看日本视频www| 亚洲成年人电影在线观看| 亚洲人成网站观看在线播放| 台湾一级毛片永久免费| a国产成人免费视频| 黄色免费网址在线观看| 亚洲午夜在线播放| 亚洲AV色香蕉一区二区| 亚洲国产成人精品无码久久久久久综合| 亚洲综合免费视频| 无码国产精品一区二区免费16| 黄页网站在线免费观看| 亚洲欧美日韩中文高清www777| 亚洲成在人天堂一区二区| 亚洲人成人网站在线观看| 成人爱做日本视频免费| 亚色九九九全国免费视频| 97久久免费视频| 久久一本岛在免费线观看2020| 久久国产精品免费|