C\S結構的外掛程式式開發思想以及向B\S結構的架構延伸(一)

來源:互聯網
上載者:User
    長夜漫漫、無心睡眠!不斷地在想,各大軟體企業、各個Team Dev、各種各樣的項目都在根據自己的現實情況不斷地在嘗試各種各樣的開發模式、思想、以及管理,但是每個團隊中都會存在各種各樣的難題,這樣的現實也說明了,要做到一個IT企業的長遠、合理、有效規劃是多麼的艱難。所以各個團隊就不斷地學習各種管理技術各種先進的開發模式以適應瞬息萬變的“挨踢”界,都向著同一個目標“在限定的時間內給客戶提供高品質的軟體產品”進發。前面有感而發,有點說大了,在接下來的一段時期裡將跟大家一起探討一個比較值得學習的開發思想,以及從這個開發思想延伸出來的能夠用到實際項目中的一些有效方法,探討的內容就是從C\S結構外掛程式式開發向B\S結構延伸。
    外掛程式式開發風靡各個軟體項目已經許久,他的可靠性高、重用性高、耦合度小、低維護成本等都一直深受廣大架構師以及程式員的喜愛,外掛程式式開發也是從面向過程的編程轉向物件導向編程的產物,外掛程式式開發的著名產品可謂遍布全球,如:OFFICE、Visual Studio一系列產品、AUTODESK等知名產品都採用的該思想進行產品的研發以及規劃,甚至更可怕的是AUTODESK如今的產品能夠做到產品向上相容,也就是低版本的程式能夠相容高版本的程式,雖然他們的核心我們不得而知,但是可以肯定的是這跟他們的產品的良好的規劃分不開。在開源界也有很多著名的外掛程式式開發的項目,其中最著名的就是SharpDevelop ,他是一個用於製作C#或者VB.NET的項目而設計的一個編輯器,同時,這個編輯器本身就是使用C#開發的,而且公開了全部原始碼,因此這個工具本身也是學習C#以及軟體開發規範的一個很好材料。通俗點講,就是用C#和VB寫了一個VS平台(包含解析器和編譯器等所有模組,牛X),接下來我將用該項目一起去探尋外掛程式式開發的奧秘。首先我們將瞭解一下什麼是外掛程式式開發。
     外掛程式式開發是什嗎?首先我們來先瞭解一些名詞
插 件: 外掛程式是可獨立完成某個或一系列功能的模組。通常外掛程式由宿主程式載入,不能獨立運行。
宿主:宿主是承載外掛程式啟動並執行環境,為外掛程式提供基本服務。通常外掛程式由宿主程式管理和控制。(也就是架構)
外掛程式式:通常是由開發人員編寫宿主程式,並預先定義好系統提供基本服務介面和外掛程式介面。然後由其他開發人員根據系統外掛程式介面編寫外掛程式功能。通常外掛程式以一個獨立功能模組的形式出現, 對於宿主程式來說並不知道外掛程式的具體功能, 通常宿主啟動時檢索外掛程式資訊,並根據預定的外掛程式介面裝載外掛程式。
    我想瞭解了這幾個名詞之後大概能知道外掛程式式開發的工作原理。不錯,就是宿主在啟動時把所有的外掛程式載入到架構中,根據外掛程式的定義組成了一個整體。通俗點講,就像一個房子(毛坯),剛開始很空,往裡頭放個空調它就能製冷、往裡頭拉盞燈它就能照明、往裡頭放個電腦就能進行電腦操作等,房子的組合根據需要而不同,有人把房子組合成了咖啡廳,有人把房子組成了快餐店,也有人把房子組合成了軟體公司等。這些都是根據需求去研發出相應的產品,當然這個例子稍微有點不太靠譜,但是我想讓大家更明白外掛程式式的一些概念。再舉個軟體的例子吧,比如WORD中要加入列印功能,那麼我們首先能想到的是可能是這幾點:版面設計、印表機、網路,如果往細裡想可能是:列印菜單、菜單名稱、圖片、右鍵菜單、快速鍵等一系列的功能。那麼這些功能都是WORD列印模組的一個外掛程式,如果沒有這個模組WORD架構一樣能正常工作,只不過是缺失了列印功能,這個時候就可以發現,其實一個“外掛程式”並不是一個簡單的函數或者簡單的功能,而是一些列功能的組合。所以如果要我們去做一個WORD的列印外掛程式,那麼我們就要定義菜單、圖片、提取內容、版面設計、網路環境判斷、印表機選擇、以及相關的快捷功能。這個外掛程式的功能做好之後提供一個外掛程式介面給宿主(WORD)程式調用,在宿主啟動的時候將會調用該外掛程式進行解析以及裝載,從而該外掛程式的功能就插入到了宿主程式中,但是該外掛程式的運行並不影響宿主的正常運行以及其他外掛程式的運行。
    這就是外掛程式式的思想,說白了就是一些列的組合形成一個能夠實現一系列功能目標整體,再強調一下該種開發思想的優點:高內聚、低耦合、重用性高、移植性強、穩定性高、可以進行混合編程等優點。呵呵,這些將是以後一段時間裡我將陸續探討與學習該思想的重點,因為這確實是我們每個項目中都迫切需要的一種理想狀態。當然,不是每個項目都能夠用上這種架構,但是瞭解並不會造成項目失敗,一起探討、共同成長!

夜深了。。。
未完待續。。。
下 一個文章將介紹著名的開源項目SharpDevelop 的基本架構以及外掛程式式開發的核心結構。。。
歡迎拍磚。。。z z Z z z。。。
2011-03-25 03:07

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.