简介(CAB和SCSF编程)
一、CAB的特點
1、松散耦合
把軟件分割成很多小塊,然后采用CAB的Service機制把這些小塊縫合起來。類似于我們通常所說的模塊化設計或插件化設計。通過松散耦合,各個小塊之間的交互會盡可能的少,從而使程序易于開發,易于擴展和維護,同時對于項目管理也非常重要。
2、CAB提供一些預制的框架用于支持松散耦合
主要有如下幾大塊:
(1)、運行期模塊裝載的中央控制,主要有模塊遍歷和裝載服務
(2)、一些服務架構
(3)、WorkItem機制和依賴注入
(4)、Workspace(容器Frame)和SmartParts(控制容器)
(5)、UI擴展點
(6)、時間發布和訂閱服務
3、CAB的一些術語
(1)、Shell Application
主WinForm應用程序,CAB程序的各個部分的外部容器。它管理CAB的啟動過程。
(2)、Shell Form
Shell Application的主窗口。一般來說就是通常所說的Shell。它通常包含Workspaces和用戶界面元素,如菜單和工具條。
(3)、Workspace
SmartPart的容器窗口,而SmartPart一般是由WorkItem擁有的。Workspace可以控制SmartPart是顯示還是隱藏。CAB提供了一些標準的Workspace類,當然你也可以自己寫一個。
(4)、WorkItem
對象和服務的運行期容器,一般作為CAB應用程序的組成部分存在。可以把它作為邏輯上的子程序或子進程。它是CAB程序的基本單元。用戶所寫的業務邏輯一般都在一個或多個WorkItem中。
(5)、SmartPart
WorkItem所擁有的數據的可是展示或視圖。它為WorkItem所擁有并顯示在Workspace中。SmartPart一般就是WinForm控件的實現,一般包含其他的WinForm控件。除顯示數據之外,也允許用戶修改數據。
(6)、Service
為松散耦合所服務的一些支撐類,通常包含一些與其他WorkItem獨立的工具方法。
(7)、Module
一個.NET程序集合,為WorkItems, Service, 和其他支持類提供的一個物理容器。
4、CAB的組成
CAB主要有三個工程組成:CompositeUI、CompositeUI.WinForms和ObjectBuilder。這三個工程創建三個動態鏈接庫:CompositeUI.dll,CompositeUI.WinForms.dll,ObjectBuilder.dll。
二、SCSF的概念
1、SCSF的一些背景
(1)、沒有好的輔助開發工具提高開發CAB程序的效率。如創建工程模版等等。
(2)、CAB還不完善
2、基本概念
SCSF實際上是一個代碼、文檔和工具的集合。介紹一些CAB應用程序的開發實例,以及一些設計模式的遵守。相對于CAB,SCSF提供了三個主要的增強:
(1)、SCSF提供了大量類,這些類提供了很多基本CAB所沒有的而又是開發人員所必須的功能。
(2)、SCSF包含一些為開發人員提供架構指導的類。
(3)、SCSF提供了一些叫Guidance Package的工具集。
三、簡單的CAB程序:Walkthrough
1、簡單的CAB程序結構
(1)、ShellApplication.CS文件,Main方法。類ShellApplication衍生自FormShellApplication。在其參數化類型列表中,傳遞的是Shell的根WorkItem和ShellForm。
(2)、對于根WorkItem,可以創建一個類繼承自WorkItem。在這個簡單程序中中該類是空的,什么也不做,僅僅是作為根WorkItem而存在。
(3)、ShellForm是Shell程序創建的主窗口。可以在其上放置Workspace和UI元素。
(4)、程序執行順序:
CAB框架創建根WorkItem——>創建ShellForm的一個實例——>裝載ProgramCatalog.xml中定義的Module。
2、ProfileCatalog.xml文件結構
每個<ModuleInfo>元素指定一個module。
(1)、Module的裝載流程
當一個Module被裝載進程序的地址空間時,裝載器會查找衍生自基類ModuleInit的類。在這個類中可以放一些初始化代碼。
- 在該類中一般又ParentWorkItem的屬性,類型為WorkItem。該屬性只有寫方法,可以從外部寫入,但不能讀取。它被標為[ServiceDependency]屬性,從而導致依賴注入(這是CAB的一個用于松散耦合的一個重要特性)。CAB的模塊裝載器可以根據該屬性知道該模塊需要一個特定的類型,也就是說是WorkItem。這里的Service是指通過松散耦合機制訪問的任何類。
- 一旦模塊被裝載進程序的地址空間,框架會調用其Load方法。我們在實現Module時一般需要重載該方法。在實現該方法時,一般流程如下:(a)、調用基類的Load方法;(b)、創建一個子WorkItem,并把它放進父WorkItem(該父WorkItem是通過注入得來的)的WorkItem集合中。
四、MVP模式(Model-View-Presenter設計模式)
1、基本架構圖
2、架構/模式說明
MVP是在客戶程序中實現三層架構的基本思想。與CAB相對應,WorkItem代表圖中的Model,它包含程序的數據和狀態等。業務邏輯主要由Presenter所表示。View是控件顯示。
3、View與Presenter的交互
定義一個接口負責Presenter和View之間的通信。一般Presenter不需要知道也不想知道該接口在View中是如何實現的。
一般都需要該接口作為Presenter的分離層,如果沒有,則只能讓Model直接與View交互,從而導致緊耦合。
4、View實現
使用.NET本身的UserControl等等。常規的實現。
五、跟蹤和調試
1、經典的Debugger跟蹤
app.config文件結構如下:
2、CAB Visualizer
一個第三方工具。
轉載于:https://www.cnblogs.com/lglruirui/archive/2010/07/07/1772912.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的简介(CAB和SCSF编程)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 消息队列之事务消息,RocketMQ 和
- 下一篇: 5 月份最热的 GitHub 项目