青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆 - 16, 文章 - 0, 評論 - 55, 引用 - 0
數(shù)據(jù)加載中……

多進(jìn)程的構(gòu)架方法

  做了4、5年的開發(fā),大大小小的項目也做了不少,但以前都有一個致命的問題,不知不覺就會寫出一個巨大的主程序出來,層次復(fù)雜,編碼痛苦,調(diào)試?yán)щy。但似乎大家都認(rèn)同這樣的開發(fā)方式,雖然都知道界面和功能分離是好事情,但就是做不到。我自己也曾痛苦的思考過,但沒有什么收效,似乎在Windows下的開發(fā)只能是這么痛苦。

  一星期前買了<<unix編程藝術(shù)>>,這一周可謂改天換地,每天都在閱讀和思考中度過,想必武俠小說中的武功大進(jìn)也就是這個意思了。雖然書還沒看完,但是有些話實在是不吐不快。

   什么是界面?界面就是功能的子集。沒有哪個界面能反映所有的功能,但是若沒有界面,對于最終用戶來說又是不可忍受的,無論如何都不能指望讓一個門衛(wèi)學(xué)會輸入復(fù)雜的命令來完成工作,雖然最終用戶也包括專業(yè)人士,但這世界上終究普通人更多。在這樣的前提下,可以認(rèn)為功能永遠(yuǎn)比界面更寬泛,更有適應(yīng)性,而GUI更狹窄,更具有特殊性,所以將界面和功能進(jìn)行分拆也就成為一種必然趨勢。

  但是如何分拆?在Windows的世界里,一個普遍觀點就是DLL。DLL很好,但是還不夠好,因為無法直接使用、調(diào)試以及升級,帶來的問題遠(yuǎn)比好處多。另一種方法就是在代碼級進(jìn)行分層,比如GUI一層,功能一層,再用膠合層將二者整合。且不論膠合層的不可復(fù)用和調(diào)試?yán)щy,就一條,如何能做到GUI崩潰的時候卻不影響功能的實現(xiàn)?以前我做過的項目都是這樣處理的,直接的后果就是項目越到后期問題越多,代碼越不接受變化。調(diào)試花費了大量的人力物力,收效卻未必好,功能的一點點小修改就會造成代碼里出現(xiàn)意大利面條。你可以說只要前期的小心規(guī)劃和仔細(xì)架構(gòu)就能避免這些問題,但是誰能準(zhǔn)確預(yù)測未來?無論做怎樣的努力,你也不能保證現(xiàn)在的功能永遠(yuǎn)不變,永遠(yuǎn)不變的恰恰就是變。如果不能保持實現(xiàn)的穩(wěn)定性和較好的移植性,這樣的項目下場一般都不太好。

  說了這么多廢話,還是趕緊進(jìn)入正題。談?wù)勥@一周來的心得體會!

  首先,變化是漸進(jìn)的,非突變式的。如果能將變化的所在約束在一個比較小的代碼范圍內(nèi),修改就不會成為噩夢。怎么約束?就一個要求:在保證完整性的條件下讓每個模塊包含的功能盡量單一和足夠小。首先是保證完整性,不是代碼足夠短,包含的實現(xiàn)足夠少就是完整,要達(dá)到完整,就要讓模塊的各個部分做到不可分割和無需添加,按照古人的說法,就是增一分則太多,減一分則太少。這個要求雖然看起來很好理解,其實并沒有什么標(biāo)準(zhǔn)答案,每個人心里都有自己的回答,正所謂仁者見仁,智者見智。其次是單一化和小型化,一般來說,范圍太大的東西會造成人腦覆蓋不全,比如一個功能,如果牽扯的部分過多,就會造成從底層到中間層,再到上層,全部都要思考到,估計沒有幾個人能做到,即使做到了,將來的維護(hù)和修改也會變成噩夢。相反,只要功能的涉及面夠窄,就很容易進(jìn)行思考和修改,這個道理應(yīng)該沒有什么問題。

  既然要保證模塊單一、小型化和保證完整,也就意味著這個模塊可以認(rèn)為是一個完整而單獨的程序,無需外圍程序的支持就可以單獨運行和測試。從而引出我的最重要的觀點:盡量用多進(jìn)程來分拆程序。在Windows的世界里,多進(jìn)程似乎是天生被忽略和鄙視的,從unix的觀點看,其主要原因是Windows的設(shè)計中對進(jìn)程的快速創(chuàng)建支持不夠,造成對多進(jìn)程的天然排斥和害怕。但是換一個思路看,多進(jìn)程也許是目前最好的架構(gòu)方式。底層的功能分拆成各個進(jìn)程單獨運行,通過ipc和上層的GUI進(jìn)行交互,膠合層薄了,移植性增強了,調(diào)試容易了,功能演進(jìn)也不再成為噩夢。需求永遠(yuǎn)是漸變的,所以進(jìn)程的漸變也就成為可控的行為。

?  多進(jìn)程間的傳遞方式一般有這么幾種:共享內(nèi)存,管道(pipe),信號,消息, socket。其中共享內(nèi)存適宜于大量數(shù)據(jù)的即時傳遞,速度快,容量大。但使用共享內(nèi)存時需要仔細(xì)考慮讀寫沖突問題,一般的解決辦法是用全局鎖,但是鎖的存在必然會造成效率的下降,所以能不用鎖就盡量不要用。pipe的速度和容量都沒有共享內(nèi)存好,但是用來傳遞命令和返回值還是很適合的。信號和消息的方式一般會和操作系統(tǒng)聯(lián)系緊密,個人不太喜歡。最后是socket,對于異地交互而言,socket是目前很常用的手段,甚至本地進(jìn)程間通訊也可以使用。但是由于和網(wǎng)絡(luò)有關(guān),所以同步性不好保證,需要辯證的使用。

  說了這么多,舉個例子說明一下。假設(shè)現(xiàn)在要做一套點菜軟件供酒店使用,其基本功能包括人員管理,桌臺管理,點菜管理,結(jié)賬以及后臺管理五個功能模塊。按照單進(jìn)程的方式就是將所有功能整合在一起,系統(tǒng)啟動時加載所有的功能,一旦某個模塊出現(xiàn)問題,則必須重新啟動程序,而且各個模塊之間很容易發(fā)生資源沖突和請求沖突。如果換成多進(jìn)程方式,讓我們看看有什么不同。首先是所有的功能最終目的地都是數(shù)據(jù)庫,那么可以開發(fā)一個后臺進(jìn)程專門所有負(fù)責(zé)針對數(shù)據(jù)庫的請求,通過pipe或者共享內(nèi)存來接收命令和返回結(jié)果,那么程序或者說具體代碼塊之間的接口就是單一的pipe或共享內(nèi)存了。同時,即使某一個程序運行錯誤也不會造成整體失敗,只需要重起失敗的部分即可。當(dāng)然了,這種方式下存在一個問題,就是效率的降低,但是對于大多數(shù)的應(yīng)用來說,穩(wěn)定性的提高遠(yuǎn)比效率的降低要重要,而且隨著硬件水平的不斷提高,效率總是可以達(dá)標(biāo)的。

  數(shù)據(jù)庫處理分拆出去后,剩下的就很好處理了,人員、點菜、桌臺等管理模塊都作為單獨的后臺程序出現(xiàn),最后GUI部分只需要和各個共享內(nèi)存和pipe打交道即可,無需只要具體的邏輯處理和功能實現(xiàn),而且各個后臺程序還可以復(fù)用,比如人員管理可以挪到客房服務(wù)系統(tǒng)中,甚至是其他系統(tǒng)。GUI隨時可以替換,實現(xiàn)了功能和界面的分離,同時系統(tǒng)崩潰的幾率大大降低,升級和售后也方便很多,永遠(yuǎn)不要把最終用戶想的太愚蠢,很多時候人們還是蠻有求知欲的。

  更多的細(xì)節(jié)需要自己整理,這里只是給出了一個框架,起碼我現(xiàn)在的項目已經(jīng)開始這樣做,效果嘛,半年后就知道了。?

2006-04-05 21:38?

修改于2006-04-07 18:56

再次修改于2006-04-13 21:55

posted on 2006-04-14 01:10 cyantree 閱讀(3401) 評論(12)  編輯 收藏 引用

評論

# re: 多進(jìn)程的構(gòu)架方法  回復(fù)  更多評論   

好文章,頂了,
我也去找本unix編程藝術(shù)看看,這本書被評價得非常高.
2006-04-14 09:39 | Stone Jiang

# re: 多進(jìn)程的構(gòu)架方法  回復(fù)  更多評論   

嗯,樓主的點菜系統(tǒng)的架構(gòu)貌似多層滴胖客戶端應(yīng)用。其實很多java的項目里面都是這樣的,應(yīng)用服務(wù)器負(fù)責(zé)鏈接到數(shù)據(jù)庫,ejb完成業(yè)務(wù),struts 來控制邏輯,jsp來展現(xiàn)。
2006-04-14 14:42 | ZiDing

# re: 多進(jìn)程的構(gòu)架方法  回復(fù)  更多評論   

對于windows程序,我覺得還是多線程比較好,而不是多進(jìn)程?
2006-04-14 23:31 | flyingxu

# re: 多進(jìn)程的構(gòu)架方法  回復(fù)  更多評論   

感覺是不錯,不過有問題調(diào)試的時候可能會麻煩點
2006-04-15 08:57 | 我是阿牛

# re: 多進(jìn)程的構(gòu)架方法  回復(fù)  更多評論   

關(guān)于線程,請看unix編程藝術(shù)中的一段話:
“線程成為滋生bug溫床源于它們太容易知道過多彼此的內(nèi)部狀態(tài)。與有著獨立地址空間、必須通過明確IPC進(jìn)行通訊的進(jìn)程不同,線程沒有自動封裝。這樣,基于線程的程序不僅產(chǎn)生普通的競爭問題,而且產(chǎn)生了新一類bug:時序依賴,要重現(xiàn)這些問題極其困難,遑論修復(fù)。”
起碼在我之前進(jìn)行的項目中,線程在后期造成的問題遠(yuǎn)多過其帶來的好處

關(guān)于調(diào)試,你認(rèn)為是調(diào)試一個小的單進(jìn)程容易,還是調(diào)試一個復(fù)合的大程序容易?
2006-04-15 12:12 | cyantree

# re: 多進(jìn)程的構(gòu)架方法  回復(fù)  更多評論   

這不典型的COM+
2006-04-16 17:40 | wy_rover

# re: 多進(jìn)程的構(gòu)架方法  回復(fù)  更多評論   

If you're in uncomfortable position and have got no money to get out from that, you would need to receive the credit loans. Just because it will help you definitely. I take financial loan every time I need and feel OK just because of that.
2010-05-05 20:44 | loans

# re: 多進(jìn)程的構(gòu)架方法  回復(fù)  更多評論   

Yeah indeed very
helpful for the elocutionists it was pleasant to read about this good post! If you need to get a great job firstofall you need
<a href="http://www.prime-resume.com">resume writers</a>. Study and don't forget - if you have to work and study at the same time, there areold pros who are ready to aid you with your resume when you under time compression and looking for a great job.
2010-08-02 15:01 | Guthrie24Lori

# re: 多進(jìn)程的構(gòu)架方法  回復(fù)  更多評論   

You feel yourself irritated because of your PR? You should not feel so, because company to buy link and optimization issues can rescue your internet business very fast. No crisis will impact on your internet business!
2011-12-12 16:14 | buy links

# re: 多進(jìn)程的構(gòu)架方法  回復(fù)  更多評論   

Tutors have got really negative outlook about plagiarizing. So, be extra careful when buy cheap term papers, just because you don't want to be accused in plagiarism.
2012-05-28 22:31 | writing custom papers

只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲一区在线观看视频 | 久久久久久久综合色一本| 日韩午夜免费| 亚洲婷婷在线| 亚洲一区二区三区视频| 亚洲视频成人| 欧美一区三区三区高中清蜜桃| 欧美伊人久久久久久午夜久久久久 | 嫩草国产精品入口| 欧美久久精品午夜青青大伊人| 欧美日韩国产一区二区| 国产精品嫩草影院av蜜臀| 尤物精品国产第一福利三区 | 国产一区二区精品久久| 在线观看欧美亚洲| 亚洲一区二区黄色| 久久综合久久久久88| 欧美激情一区二区三区在线视频观看| 亚洲精品综合久久中文字幕| 午夜精品福利一区二区蜜股av| 欧美一区二区精品在线| 欧美激情视频在线免费观看 欧美视频免费一| 欧美极品色图| 国语精品一区| 亚洲男同1069视频| 欧美激情一区二区三区四区| 久久国产精品亚洲va麻豆| 欧美人与禽猛交乱配视频| 欧美亚洲免费高清在线观看| 久久一区中文字幕| 欧美日韩在线视频观看| 激情综合五月天| 亚洲一区二区在线看| 久久久久久亚洲精品中文字幕| 亚洲国产欧美日韩另类综合| 亚洲国产毛片完整版 | 久久久欧美一区二区| 欧美日韩美女在线观看| 国产欧美69| 亚洲色图综合久久| 欧美激情精品久久久| 亚洲一区二三| 欧美日本乱大交xxxxx| 亚洲高清视频在线| 欧美一激情一区二区三区| 亚洲日本电影在线| 乱码第一页成人| 国产精品丝袜xxxxxxx| 一区二区高清视频在线观看| 免费在线看一区| 欧美在线三级| 国产一区导航| 久久久久久久网| 亚洲一区二区三区在线看 | 影音先锋日韩资源| 欧美在线亚洲在线| 亚洲一区影院| 国产免费观看久久黄| 亚洲女同精品视频| 亚洲另类自拍| 欧美日韩和欧美的一区二区| 亚洲精品中文字幕在线| 欧美成人日本| 欧美14一18处毛片| 亚洲乱码国产乱码精品精可以看| 欧美成人蜜桃| 欧美丰满高潮xxxx喷水动漫| 亚洲免费观看视频| 一区二区三区四区精品| 国产精品久久久久久模特| 亚洲欧美日韩成人| 欧美在线视频一区二区| 在线不卡亚洲| 91久久久久久国产精品| 欧美视频网址| 久久精品女人| 老司机精品久久| 夜夜夜久久久| 亚洲欧美日本视频在线观看| 韩国欧美国产1区| 欧美激情精品久久久久久免费印度 | 在线综合亚洲| 国产欧美韩日| 免费欧美电影| 欧美日本精品| 久久av一区二区三区漫画| 久久精品二区三区| 在线看视频不卡| 亚洲麻豆一区| 国产亚洲欧美日韩一区二区| 欧美国产日韩一二三区| 欧美日韩一区二区视频在线| 久久av二区| 欧美精品www| 久久精品国产一区二区电影| 欧美电影免费观看高清| 亚洲欧美在线x视频| 久久久久久午夜| 亚洲男人的天堂在线| 久久亚洲精品欧美| 亚洲制服av| 久久手机免费观看| 亚洲欧美激情视频在线观看一区二区三区| 欧美一区二区三区免费观看视频| 亚洲日本va午夜在线电影| 亚洲亚洲精品三区日韩精品在线视频 | 亚洲成人在线免费| 9久re热视频在线精品| 国内精品视频一区| 一区二区国产精品| 最新69国产成人精品视频免费| 亚洲免费网址| 这里只有精品视频| 女女同性精品视频| 麻豆九一精品爱看视频在线观看免费 | 欧美一区二区大片| 亚洲欧美国产日韩天堂区| 欧美激情1区2区3区| 免费欧美高清视频| 激情欧美国产欧美| 欧美一区二区三区日韩| 亚洲欧美日韩第一区| 欧美日韩亚洲一区二| 亚洲国产另类 国产精品国产免费| 国模叶桐国产精品一区| 午夜精品久久久久久| 亚洲欧美一区二区激情| 欧美三级韩国三级日本三斤| 亚洲国产欧美一区二区三区丁香婷| 国产综合自拍| 久久精品视频在线| 久久精品一区蜜桃臀影院| 国产精品一区一区| 午夜亚洲影视| 久久久蜜桃精品| 国产亚洲综合性久久久影院| 亚洲欧美综合国产精品一区| 性欧美大战久久久久久久免费观看| 欧美视频一区二区三区四区| 欧美与欧洲交xxxx免费观看| 国产精品一卡| 午夜精品久久久久久久男人的天堂| 亚洲女优在线| 国产裸体写真av一区二区| 亚洲欧美乱综合| 久久超碰97人人做人人爱| 国产一区二区精品久久| 久久午夜精品一区二区| 亚洲大片在线| 亚洲无玛一区| 国产精品社区| 久久久久久69| 亚洲国产欧美在线人成| 日韩一级成人av| 国产精品成人v| 欧美在线日韩在线| 亚洲国产成人午夜在线一区| 在线视频欧美精品| 国产欧美日韩一区二区三区| 欧美在线观看视频| 欧美国产亚洲视频| 亚洲一区二区伦理| 国模一区二区三区| 欧美人成在线| 欧美一级免费视频| 亚洲国产小视频| 欧美一区二区三区免费视频| 亚洲高清不卡在线观看| 国产精品啊啊啊| 久久免费视频这里只有精品| 日韩视频在线播放| 久久夜色精品国产欧美乱极品 | 国产精品性做久久久久久| 午夜性色一区二区三区免费视频| 麻豆成人av| 午夜精品视频网站| 亚洲高清不卡一区| 国产精品亚洲一区| 久久婷婷丁香| 亚洲先锋成人| 亚洲国产小视频| 久久久无码精品亚洲日韩按摩| 99精品视频一区二区三区| 国产喷白浆一区二区三区| 欧美激情1区2区3区| 久久精品日韩| 午夜日韩av| 在线视频你懂得一区| 亚洲风情亚aⅴ在线发布| 久久久国产精品一区二区中文| 在线一区二区三区四区五区| 亚洲国产精品久久久久久女王 | 亚洲女ⅴideoshd黑人| 亚洲精美视频| 国产揄拍国内精品对白| 欧美日韩亚洲一区二区三区四区| 欧美jizz19性欧美| 久久久夜色精品亚洲| 香蕉成人久久| 午夜欧美大尺度福利影院在线看|