本文會作為一個系列,分為以下部分來介紹:
(1)見識一下這個界面框架;
(2)界面框架如何進行開發;
(3)輔助開發支持:Demo、模板、VsPackage制作。
框架源碼如下所示。
本文介紹第(1)部分。
1 安裝
現在我們就先來見識一下這個界面框架。首先,你可以通過以下鏈接來下載到這個框架的VS插件安裝包:下載地址。下載解壓后,文件如下:
雙擊這個文件,進行安裝(目前只支持VS2012和VS2013,拋棄了VS2010,I am sorry)。
點擊安裝,即可完成。
2 創建主程序
接着打開Visual Studio 2013,新建項目,選擇默認iOpenWorksExtension。
這里面有兩個模板,一個是主程序、一個是插件。在這里,我們先創建一個主程序,你可以發現主程序已經包含了一些通用的功能插件,比如界面框架、配置服務、數據庫服務、權限管理等。在編譯主程序之前,需要確保已經安裝了iOpenWorksSDK和Nuget。
這里編譯時需要OSGi.NET框架支持,並使用Nuget去下載一些第三方庫。編譯通過后,可以直接運行主程序。
首先是一個SplashWindow。
接着是一個Login窗體,輸入默認管理員admin/admin。
登錄成功后,顯示如下主界面,左邊是可擴展導航欄、右邊是可擴展顯示區域、底下是狀態欄,右上角有可擴展的系統菜單。
3 創建插件
接着,我們在項目中來添加一個新建插件。需要注意的是:插件目錄必須位於主程序的bin/Plugins目錄。
插件創建完成后,其項目結構如下所示。
這是一個使用MVVM架構開發的典型的應用。Model表示數據庫模型、DataAccessor表示數據庫訪問類、ViewModel表示視圖模型。接着我們來運行項目。你可以發現界面多了一個功能模塊。
插件定義了一個CourseManagementUserControl.xaml頁面,當點擊“課程管理”菜單時,便在右邊顯示區域動態展示出 來。點擊“增加/編輯”時,在右邊彈出一個輸入框,加載了AddOrEditCourseUserControl.xaml控件。在插件的 Manifest.xml文件,你可以看到,插件是通過以下配置將菜單和現實內容注冊到界面框架的。
另外,在插件的BundleActivator里面定義了如下服務供插件直接調用。
服務即通用功能,有:
(1)PermissionService權限檢測服務:編碼方式來判斷當前用戶是否具有某個權限;
(2)ConfigurationService配置服務:持久化保存界面位置、大小、顏色等個性化信息;
(3)DbConnectionFactoryService數據庫連接工廠:獲取數據庫連接;
(4)MainWindowService主窗體服務:用於關閉當前顯示區域和打開/關閉側邊框。
在插件開發過程中,我們可以直接來寫模型、數據庫訪問、視圖模型、視圖代碼,如果需要使用框架功能,你就調用上述4個服務即可,不再需要與任何框架 打交道。下面我們可以嘗試來添加一個新的XAML頁面ContactsManagementUserControl.xaml,並更改 Manifest.xml做如下配置。
此時,運行后,新頁面便可以加載到內容區域了。
下來就可以在這個頁面上根據業務來編寫頁面顯示、ViewModel等代碼了。
4 框架體驗總結
通過上述簡單演示,你可以發現這樣的框架有如下好處:
(1)高復用:界面可服用、通用功能可服用;
(2)標准化:每一個插件都是用標准的架構、標准的代碼來進行開發,容易維護;
(3)模塊化:可以將一個大軟件分成不同模塊,由不同人開發不同插件來組合;
(4)分層:強制將基礎插件與業務插件分為不同層次,不至於出現基礎插件調用業務插件的功能;
(5)一致的用戶體驗:框架提供標准化UI,使整個系統有了一致的展示。
此外,在OSGi.NET基礎上,還可以支持動態模塊化(動態安裝、啟動、停止、更新、卸載模塊)、自動化部署與更新功能。