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

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

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

    posts - 56, comments - 77, trackbacks - 0, articles - 1
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    代碼的物理組織

    Posted on 2010-06-20 23:37 切爾斯基 閱讀(2246) 評(píng)論(2)  編輯  收藏
    同一個(gè)Feature的代碼要放在一起(IDE里單獨(dú)的一個(gè)工程, 或者工程里單獨(dú)的一個(gè)文件夾), 這些代碼要么全有要么全無的, 它們合作完成一個(gè)Feature, 如果用戶不再需要這個(gè)Feature了, 可以把它們整個(gè)的痛快的刪掉, 不會(huì)留下誰也用不到的代碼成為系統(tǒng)的垃圾. 如果想看一個(gè)Feature是如何實(shí)現(xiàn)的, 那所有相關(guān)代碼都在一起, 不需要在龐大的代碼庫中跳來跳去.

    那么理想的情況就是: 你看看源代碼樹里所有工程文件的名字, 或者文件夾的名字, 就知道系統(tǒng)提供了哪些功能, 它可以跟你的需求描述對(duì)應(yīng)起來, 無論用User Story還是Use Case, 都可以用它們的名字作為工程名或者文件夾的名字, 方便維護(hù)


    流行的MVC框架缺省的物理文件組織并不是這樣的, Controller, Model, View分別在不同的文件夾里面. ASP.Net MVC提供了VirtualPathProvider以及ViewEngine, 可以讓我們把一個(gè)Feature的Controller/Model/View統(tǒng)統(tǒng)打包到一個(gè)project或者文件夾而運(yùn)行時(shí)依然能夠找到對(duì)應(yīng)的action和view, 這是我們正在利用的特性


    這種代碼組織方式對(duì)架構(gòu)的影響是什么?

    這基本會(huì)導(dǎo)致基于插件/擴(kuò)展點(diǎn)的體系結(jié)構(gòu). 放到更大尺度上, 就是SOA. SOA才是王道. 這個(gè)詞太大了, 還是先聚焦到一個(gè)進(jìn)程的應(yīng)用....

    1. UI如何聚合? 最終用戶看到的UI, 是一個(gè)聚合的結(jié)果, 可能來自系統(tǒng)的不同部分. 解決這個(gè)問題的擴(kuò)展點(diǎn)技術(shù)有客戶端的Ajax, 或者服務(wù)端的RenderAction. (問題: Css應(yīng)該如何處理? 不同部分的顯示順序, 布局如何確定?)
    2. Feature如何溝通? Feature之間不可能一點(diǎn)依賴沒有, 比如可能會(huì)用到相同的數(shù)據(jù), 相同的業(yè)務(wù)邏輯. 解決這個(gè)問題的方法有Bounded Context, Context Mapping, DCI...都是一回事
    3. 數(shù)據(jù)庫如何劃分? 不同的Feature使用自己的獨(dú)立定義的數(shù)據(jù)表, 做映射和同步, 也是同樣的方案
    4. 如何把這些Feature組裝在一起? Java平臺(tái)有OSGi, .Net目前沒有看到跟OSGi類似的方案. 基本是注冊(cè)或動(dòng)態(tài)發(fā)現(xiàn)的路子, 遵循開閉原則...



    評(píng)論

    # re: 代碼的物理組織  回復(fù)  更多評(píng)論   

    2010-06-21 11:00 by anders
    非常正確,這其實(shí)是分析模型到設(shè)計(jì)模型到實(shí)現(xiàn)模型的一種直接的映射關(guān)系。
    不僅僅是MVC,甚至于n-Tier模型都是存在同一個(gè)問題——它們是很好的技術(shù)模型,但不是很好的信息模型。

    從需求開始就是我們有這樣這樣或者那樣的組件及其功能,開發(fā)過程中的用例、分析都是以功能為主線組織的,可是到了實(shí)現(xiàn)模型(代碼),就變成了MVC或者n-Tier要求的技術(shù)工件劃分,于是代碼被分割了。

    沒有人能購快速的找到一個(gè)功能對(duì)應(yīng)的代碼,另一方面這樣的劃分違反了包的穩(wěn)定性原則。

    # re: 代碼的物理組織  回復(fù)  更多評(píng)論   

    2010-06-21 13:34 by chelsea
    @anders

    看了你的這篇http://m.tkk7.com/AndersLin/archive/2010/02/21/313521.html, 看來有類似的問題類似的想法

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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 国产AV无码专区亚洲AWWW| 免费观看毛片视频| 久久精品国产精品亚洲艾草网| 色哟哟国产精品免费观看| 免费看一级做a爰片久久| 亚洲国产精品自在自线观看| 免费理论片51人人看电影| jzzijzzij在线观看亚洲熟妇| 免费观看的av毛片的网站| 深夜A级毛片视频免费| 亚洲国产精品13p| 中文字幕免费在线看电影大全| 国产亚洲成AV人片在线观黄桃| 男人天堂免费视频| 78成人精品电影在线播放日韩精品电影一区亚洲| 国产免费一区二区视频| 亚洲电影唐人社一区二区| 毛片免费全部免费观看| 美女视频黄视大全视频免费的| 久久精品国产亚洲Aⅴ蜜臀色欲| 中文字幕视频在线免费观看| 91在线精品亚洲一区二区| 免费观看的毛片大全| 国产成人亚洲精品蜜芽影院| 亚洲伊人色欲综合网| 8888四色奇米在线观看免费看| 久久亚洲国产成人影院| 波多野结衣视频在线免费观看| 本免费AV无码专区一区| 亚洲国产中文在线视频| 免费一级毛片正在播放| 久久国产精品免费专区| 亚洲一线产品二线产品| 国产亚洲免费的视频看| 在线jlzzjlzz免费播放| 最新久久免费视频| 亚洲日韩国产欧美一区二区三区| 国产成人精品亚洲精品| 永久免费AV无码国产网站| 国产免费久久久久久无码| 亚洲午夜精品一区二区公牛电影院 |