文章目錄
開篇
系統架構的文章系列,也是擱淺的太久了,最近也是整理了下思路,將目前未完成的內容,寫完吧,也不能拖太久,就不太好了。所以就趁周末寫一下,今天我
們要說的是單機應用,單擊應用軟體可以很複雜,也可以很簡單。有些單機軟體可以沒有資料庫,也可以有資料庫,比如我們平時的一些工具類的軟體,寫字板,V
S開發工具等,當然,目前很多的單機軟體都有連網的功能,單機軟體,估計大家有時候回想,單機軟體不需要什麼特殊的架構設計吧,其實不然,因為有的時候我
們的單機工具,可能是提供給不同的使用者群體等,或者是面向不同的人員使用時,適應不同的情境和需求的變化時,就會要求我們的單機軟體也需要從架構的角度去
考慮。因為如果想要可持續發展,那麼一個軟體或者工具不管是單機軟體還是聯機軟體都需要考慮。
大綱
1、開篇
2、大綱
3、單機軟體的定義
4、單機軟體架構
5、關於開發出來的單機軟體說明
單機軟體的定義
雖然目前互連網很盛行,但是還是有很多的軟體我們目前在使用,當然也有很多的軟體,他們能夠連上互連網,這樣的軟體不能算作是單機軟體。單機軟體的廣
泛可理解的定義:可以在不通過互連網或者聯機的情況下即可啟動並執行軟體或系統,稱之為單機軟體或單機系統。
比如說我原生很多應用就是單機版的。
這些本身就能完成自主的功能,不需要連網,也不需要與其他的電腦互動即可完成功能,相當於功能是自治的,這樣的軟體我們就認為是單機軟體。
我之前也是做過不少的小工具,比如我們做一個winfrom的小工具,完成文本字串的替換,或者自己開發的易用的小工具,都可以看作是一個建議的單機軟體。
VS在某種情況下,我們也稱之為功能強大的單機軟體。下面我們將會結合我們這次的主角來說明架構設計的必要性。我們這裡以AgileEAS.NET平台中的介面設計器
來說明。介面設計器本身就是一個非常獨立的可以啟動並執行工具,根據AgileEAS.NET平台的資料模型設計器產生的模型檔案來產生介面模型。
單機軟體的架構設計
單機軟體一般都是比較簡單的,那麼從架構設計的角度來說,一般就是在邏輯架構上的要求比較高,物理架構的架構要求幾乎為0,當然可能因為未來適應市場
的變化,可能需要單機軟體實現區域網路或者互連網的資訊共用或者互連網應用整合,這時候就需要考慮更高層次的架構,當然我們設計時也需要考慮這方面的因素,
但是我們本篇就從簡單的架構說開了去,來說明如何適應這樣的變化。
1、我們剛開的系統架構的設計可能是這樣的。系統架構都是需求驅使的,因為一開始需求很簡單。例如一開始客戶要求我開發一個簡單的介面設計器,沒有什
麼要求,就要求我能夠實現簡單的拖拽功能。
我根據要求分析出如下的結構:
通過分層來實現,將通用的拖拽的基礎組件等放在基礎組件層,同時將開發設計拖拽頁面相關的的配置頁面放在設計檢視層中。
2、後來,又來了一個需求,說是要能通過嚮導來產生頁面的設計檢視,那麼此時我想了下,有將系統架構修改成如下:
這時候需要添加一個新的層,該層負責添加所有的嚮導頁面,然後設計器視圖層根據配置來載入介面的組件元素。這時候系統架構如下:
3、再後來,隨著需求的變化,有要求可以產生代碼,輸出winfrom頁面代碼,要求拖拽頁面看到的什麼樣的介面,要求輸出的winfrom介面的代碼與設計器看到的
可視化介面相同,這時候我的架構設計如下。
4、通過上面的架構設計,我發現,後續的需求又來了,不過這次我通過設計,已經可以對付這次的需求了,這次的需求變化是,要求支援多種頁面表現風格。
比如,在設計器視圖,設計一次,即可產生winfrom的同樣的頁面,web的頁面也布局類似,同事可以支援silverlight和WPF。
這樣的話,不需要進行大的架構重構,只需要修改CodeDOM層中,將原來的設計器視
圖調用的代碼產生,換成介面調用的方式來解耦,後續如果需要新增,只需要實現介面即可。
5、這時候又來了新的需求了,想要讓工具與原來的其他工具之間整合,例如將AgileEAS.NET平台中的資料模型設計器產生的sdm檔案進行整合,支援開啟和儲存
功能。將設計後的介面模型檔案儲存體到sdm檔案中,這是如何處理。
、
6、最終差不多算是告一段落了,後續可能還會有新的需求,可能會要求我把單機工具修改為連網軟體,或者是設計的介面儲存到資料庫中,實現應用部署的動
態變更單等,都是非常可能的需求,這時候,可能我的架構有需要發生變化了。
7、未來要求在互連網進行動態更新該軟體,支援軟體的智能升級。
單機軟體架構說明
即便是今天,複雜的單機系統也有很多,它們大多都是專業領域的產品,如CAD/CAM領域的CATIA、ProEngineer,Autodesk的AutoCAD,還有我們熟悉的Photo
shop、CoralDraw,等等(這些系統的進階版本可能提供了一些網路化的功能,但改變不了其單機系統的實質)。
所以這裡筆者要說的是,軟體架構複雜並不代表軟體系統複雜,其實,軟體架構設計較為重要的領域只有一個,那就是資訊系統領域,即以資料處理(資料存放區,傳
輸,安全,查詢,展示等)為核心的軟體系統。其他行業的軟體應用對該概念其實並不是那麼強調。
微軟的.NET的架構圖
關於單機軟體的說明
比如,上述我們說明的內容,我們下面來示範下該軟體工具具有的功能和設計思路。
1、主介面:
支援開啟.sdm檔案:
這時候,我們選擇基於AgileEAS.NET中的ORM資料模型設計器產生的解決方案檔案,這樣
可以實現介面設計器與資料模型設計器的整合和統一,也方便開發人員使用。當然後續可能將工具功能整合到一個控制台中也是可能的。
所以我們在架構設計的過程中需要考慮,後續的可能的需求,但是我們不能過分的考慮擴充性,因為需求的變化,我們不能預見100%,所以我們只能做到盡可
能的適應變化,據統計,系統架構師所考慮的擴充性,20%的幾率在實際的項目中使用到,80%的擴充性的設計,並沒有使用到,所以一句話,具體問題具體分析。
然後就是產生解決方案:
選擇“產生解決方案”出現如下選擇頁面:
直接將介面設計器的模型檔案來產生解決方案。
通過不斷的需求的加入和架構設計的不斷擴充,來滿足日益變化的需求。這一切都決定了架構的設計成敗。
更多
比如我們平時常用的VS2010開發工具,我們可以見證該工具的強大和靈活的設計,強大的擴充性,都和它的架構和設計不無關係,vs通過外掛程式可以擴充很多強
大的功能,vs還支援項目模板的開發,提高開發速度。這些都是我們在設計單機軟體工具時應該考慮的問題,當然前提是你做的單機軟體工具是為瞭解決某項問題,
並且能夠適應日益的發展變化,當然有些工具,我們不需要過度的設計,過度的設計往往效果並不明顯,不要讓我們的設計因為不可能出現的80%而造成過度臃腫的
設計,這樣的設計反而是失敗的設計,這樣的例子太多了,我原來也是想的設計的越低耦合,擴充性越強越好,發現實際的項目中並不是這樣的。
一桶水,是有限的,剛剛好最好。
相關資訊
下載資訊。
如果您在使用AgileEAS.NET開發平台中有什麼問題,請使用如下幾種連絡方式或者溝通方式。
1、電話-郵箱方式:
何戈洲:hegezhou_hot@163.com 手機:18691480181 部落格:http://www.cnblogs.com/hegezhou_hot/
2、QQ交流:
308961614 -網名:H.O.T
3、QQ交流群:
185074255 建立
AgileEAS.NET快速開發平台下載
請點擊圖片下載。