插件式程序开发及其应用(C#)
1、 定义
所谓“插件模型”,指应用程序由一些动态的独立模块构成,每个模块均具有一个或多个服务,并满足一定的插件协议,能够借助主程序实现主程序-插件;插件-插件之间的通讯。
应用该模型的系统,具有以下特点:
1) 所有业务功能均是“砖块”,更新及维护简便
2) 子系统的概念变得模糊,子系统是多个模块的组合
3) 有效避免功能的重复开发
4) 可以根据用户需求定制系统,真正的随需而变
5) 当功能插件达到一定规模时,应用系统的开发将变成二次开发
6) 实现化整为零的组织结构,每个模块由微小的团队负责,甚至一个人负责
7) 开发能力要求降低,类似于报表、查询等易变、简单的模块,维护人员即可完成
2、 体系结构组成
系统结构如下图:
图一 系统结构示意图
系统组成元素如下:
1) 应用程序
2) 应用程序配置文件
3) 插件协议
4) 插件
5) 共通组件、控件
6) 远程访问代理
7) 中间层
8) 底层数据库
3、 详细说明
1) 应用程序
应用程序是用户操作的平台,也是所有业务插件的容器,其本身不会有太多的功能,主要通过读取配置文件来配置整个应用程序;包含以下功能:
·主画面
·界面配置管理
·插件管理
2) 应用程序配置文件
包括界面配置和插件配置,采用加密过的XML文件保存配置
·界面配置
·插件配置
3) 插件协议(PluginSdk)
是整个插件模型的运行核心,主要包括用于插件的基类和用于通讯的控制类
·插件基类(PluginBase)
·插件控制类(PluginControl)
4) 插件
基于插件协议,借助共通插件、控件及远程访问代理和业务层配合实现特定的业务
·插件基类派生类
·业务功能实现类
5) 共通组件、控件
是整个体系的运行基础,也是产品化的基础
·权限控制套件
·界面控件库
·常量库
·工具库
6) 远程访问代理
也许系统是基于Web服务的,也许系统是基于其它服务的,总之系统的业务实现很大部分放在远程,这个代理就可以让客户端很好的访问远程服务。
·远程访问代理类
7) 中间层
实现客户端与数据库端的通讯,抛开繁杂的层次步骤,提供简单高效的通讯服务
·服务外观层(Web Service)
·数据访问层(DataAccess)
·数据库代理(DBHelp)/中间件(MiddleWare)
8) 底层数据库
可以是Oracle,也可以是SqlServer(在实现中间件的前提下),在现有情况下,主要业务还由存储过程来实现。
原文链接:插件式程序开发及其应用(C#) - 3(整理后的完善版本)
转载于:https://www.cnblogs.com/rainbow70626/p/4728677.html
插件式程序开发及其应用(C#)相关推荐
- C# 插件式程序开发
C# 插件式程序开发 在网上找了下插件式编程的资料,这里自己先借鉴下别人的,同时发现有自己的看法,不过由于本人水平有限,不一定有参考价值,写出来一方面是为了总结自己,以求提高,另一方面也希望各为朋友看 ...
- Mahout分步式程序开发 聚类Kmeans
Hadoop家族系列文章,主要介绍Hadoop家族产品,常用的项目包括Hadoop, Hive, Pig, HBase, Sqoop, Mahout, Zookeeper, Avro, Ambari, ...
- Mahout分步式程序开发 基于物品的协同过滤ItemCF
Hadoop家族系列文章,主要介绍Hadoop家族产品,常用的项目包括Hadoop, Hive, Pig, HBase, Sqoop, Mahout, Zookeeper, Avro, Ambari, ...
- 老调重弹:插件式框架开发的一个简单应用
VS 2008 最近要做一个应用程序检测程序,就是要检测服务器上各应用程序的运行情况,由于各应用程序的差异,很难做一个统一的探测程序,于是决定对任意一个应用程序都采用独立的一条探测规则. 为了 ...
- 三分钟创建一个新应用,ivx的神奇之处【PPT式程序开发】
像做PPT一样的可视化编程语言你想拥有吗,可以自己尝试一下.像PPT一样的编程语言 文章目录
- MEF 插件式开发 - DotNetCore 初体验
背景叙述 在传统的基于 .Net Framework 框架下进行的 MEF 开发,大多是使用 MEF 1,对应的命名空间是 System.ComponentModel.Composition.在 Do ...
- C\S结构的插件式开发思想以及向B\S结构的架构延伸(二)
忙碌的好多天过去了,自从上一贴发出后,不少同仁都对插件式开发提出了自己的看法以及分享一些插件式开发比较典型的例子,感谢李锋.肖明等 同仁的分享,也感谢所有顶贴的同志,今天来分享一下插件式开发著名的产品 ...
- 《程序开发心理学》几点核心理解
作者:草小诚(wellsmile@foxmail.com) 转载请注原文地址:https://blog.csdn.net/cxcjoker7894/article/details/85319250 前 ...
- 《程序开发心理学》读书笔记
把整本书中每个章节有用的信息记录如下: 在某些特定环境中所看到的那样,额外的金钱实际上反而可能会让某些人放弃自己工作. 也许你现在会说:金钱的激励作用还不如提高对目标设定的参与程度和对工作数量的关心程 ...
最新文章
- linux web高级编程,寒假学习 第16.17天 (linux 高级编程)
- android 数据线读串口数据线,一种串口写频及USB数据二合一数据线的制作方法
- mysql router docker_Docker 安装 Mysql 详解
- RedShift到MaxCompute迁移实践指导
- MongoDB的基本概念与操作
- Motion 5 for Mac(专业视频编辑软件)v5.3.2永久破解版
- STM32F4 使用 JFlash 加密后无法再擦除了
- NIO源码解析-FileChannel
- 爬虫-反爬二:有道词典js加密
- OpenPower基金会和联盟是什么?
- window删除多余的操作系统
- 微信小程序跳转到H5网页
- Intel SGX开发者参考书(四)—— Enclave开发基础(三)
- 自动登录XP其实很轻松
- Windows 系统托盘图标
- apk瘦身 提高优化效果
- 2016年Visual C++推荐图书125本
- mac php pear,OSX EI Captain中安装Pear等三方软件不成功的解决方法
- MATLAB学习笔记(一):绘制二维箭头图
- 小彬学vue系列专栏】 004 | 构建工具一如你初妆
热门文章
- 【mysq 5.7.31】远程访问权限(允许远程连接)
- 宝塔安装php遇错libicui18n.so.42: cannot open shared object file: No such file or directory
- 【uniapp】swiper 自定义轮播图指示点
- spring boot: 查看ApplicationContext中有哪些Bean
- android 并排按钮,简单布局:右边三个按钮并排靠右,左边一个输入框填满其他空间,多谢...
- mysql+br_mysql有哪几种索引
- php trim用法,php trim函数怎么用?
- check box 如何调整字体大小_CSS中关于box-sizing你可能需要知道的小知识
- python 画漫画_在漫画中画一条直线,罗宾逊投影
- Python 中最黑魔法、最难懂的概念