EaBIM

标题: [架构模式] 基于插件式的开发框架 [打印本页]

作者: 萧闫子    时间: 2014-1-10 10:54
标题: [架构模式] 基于插件式的开发框架
插件式以其身优势广为开发者所喜爱,本人参与开发过的几个项目都用到了插件式的概念。
最近几天不是很忙, 抽空重新梳理了一下逻辑, 将业务部分剥离, 便有了此版的插件式的开发框架。
希望通过此代码能与大家交流技术,探讨问题,也希望大家提出宝贵意见。

- 概念
插件: 插件是可独立完成某个或一系列功能的模块.通常插件由宿主程序加载,不能独立运行。
宿主: 宿主是承载插件运行的环境,为插件提供基本服务。通常插件由宿主程序管理和控制。
插件式: 通常是由开发人员编写宿主程序,并预先定义好系统提供基本服务接口和插件接口。然后由其他开发人员根据系统插件接口编写插件功能。通常插件以一个独立功能模块的形式出现。对于宿主程序来说并不知道插件的具体功能,通常宿主启动时检索插件信息,并根据预定的插件接口装载插件。

- 优势
增强系统扩展性: 在系统发布后可在不必重新编译系统的前提下按需对系统功能进行扩充。
易维护及复用性: 插件通常为独立的功能模块易于管理与维护,并可在多个业务系统中重用。

如果了解了以上这些信息那么就不难阅读这份源码了。(点击下载 addin_framework_perview2.rar)
声明: 此代码仅为学习之用, 可自由转载或使用, 但希望使用者尽量保留文件头部信息以保证后续开发者能及时反馈. 本人不保证代码的正确性及安全性.   

项目结构

主要类型及接口

目录结构
view source
print?

__

│  

│  Addin.sln

│  

├─Addin

│  │  Addin.csproj

│  │  IConfigurationInitialize.cs

│  │  IHost.cs

│  │  IPackage.cs

│  │  IPackageController.cs

│  │  IPackageProvider.cs

│  │  IPackageManager.cs

│  │  IPackageServiceProvider.cs

│  │  PackageController.cs

│  │  PackageControllerCollection.cs

│  │  PackageDescription.cs

│  │  PackageHost.cs

│  │  PackageManager.cs

│  │  

│  ├─adapter

│  │      DictionaryServiceProviderAdapter.cs

│  │         

│  ├─common

│  │      CancelEventArgs.cs

│  │      EventArgs.cs

│  │      

│  ├─configuration

│  │      AddinSection.cs

│  │      

│  ├─provider

│  │      FilePackageProvider.cs

│  │      

│  └─utility

│          Guard.cs

│         

├─Addin.HostDemo

│  │  Addin.HostDemo.csproj

│  │  Addin.HostDemo.csproj.user

│  │  FormHostManager.cs

│  │  HostForm.cs

│  │  HostForm.Designer.cs

│  │  HostForm.resx

│  │  Program.cs

│  │  

│  ├─adapters

│  │      CommandBarItemCollectionAdapter.cs

│  │      CommandBarManagerAdapter.cs

│  │      CommandBarMenuAdapter.cs

│  │      StatusBarAdapter.cs

│  │              

│  ├─packages

│  │      Addin.PackageDemo.dll

│  │      Addin.PackageDemo.dll.config

│  │      

│  └─Properties

│          AssemblyInfo.cs

│         

├─Addin.PackageDemo

│  │  Addin.PackageDemo.csproj

│  │  App.config

│  │  Form1.cs

│  │  Form1.Designer.cs

│  │  Form1.resx

│  │              

│  └─Properties

│          AssemblyInfo.cs

│         

└─Addin.Services

    │  Addin.Services.csproj

    │  ICommandBar.cs

    │  ICommandBarCollection.cs

    │  ICommandBarItem.cs

    │  ICommandBarItemCollection.cs

    │  ICommandBarManager.cs

    │  ICommandBarMenu.cs

    │  ICommandBarSeparator.cs

    │  IContainer.cs

    │  IStatusBar.cs

    │  

    └─Properties

            AssemblyInfo.cs






欢迎光临 EaBIM (https://eabim.net/) Powered by Discuz! X3.2