天天看點

AgileEAS.NET之插件接口IModule

 我們知道,要基于平台(容器)+插件的這種模式進行開發,我們必須定義一組契約,用于限制子產品插件開發,也就是說,子產品插件需要遵守一定的标準進行開發,才能正常被容器調用,這就是IModule所定義的内容。

  IModule定義了子產品名稱及子產品被調用的方法Run(),以及被平台加載和關閉的事件,從定義可我們看到IModule繼續自IObject接口。

  這裡為什麼會出現IObject接口,這裡提到一個說明,就在是EAS.NET平台設計之初,我們引入了一個想法,我們視程式中的子產品、ORM對象、所定義的外部裝置等統稱為對象,并對這些對象進行管理,基于這于一個想法,我們引入了一個對象的概念,但是在實際應用中,對象這一層次的了解慢慢談化,也許在将來的設計中,取消這個接口。

  IObject接口顯式的定義了對象的說明性資訊對象描述和圖示,對于IModule接口及IObject接口,都繼承自一個重要的接口IPrivilegObject。

      IPrivilegObject為權限對象接品,平台(運作容器)可以使用其鑒權系統對其實作權限檢查,關于系統的權限設計我會在後面專門進行說明。

      在子產品插件的接口中,我們看到了很多關于子產品自描述的資訊,比如名稱、說明、類型、程式集、版本号以及開發者等等,定義這些資訊的目的在于對子產品的自描述,資源管理平台在安裝子產品的過程中讀取這些中繼資料并存儲在資料庫,以友善對系統中插件的管理。

       子產品中繼資料中定義的程式集、類型資訊用于容器反射調用插件,這也是平台+插件所依賴的關鍵技術。

       在具體的應用開發中,針對WinFrom和WebForm的不同應用對IModule接口進行了某些擴充和基礎實作,用于在應用開發過程的特定應用,以加快開發速度。

   在下一篇文章中,我将會對調用子產品插件的平台,也就是運作容器做介紹。

本文轉自 agilelab 51CTO部落格,原文連結:http://blog.51cto.com/agilelab/561886