软件的工业化使得软件复用已经从通用类库进化到了面向领域的应用框架。应用框架强调的是软件的设计重用性和系统的课扩展性,以缩短大型应用软件系统的开发周期,提高开发质量。应用软件开发的未来就在于提供一个开放的体系结构,以方便中间件的选择、组装和集成,应用框架的重用已成为软件开发生产中最有效的重用方式之一。面对这种发展趋势,呼之欲出的便是一种全新的、开放性的、高扩展性的架构体系,这里我将其命名为插件式架构(或许与别人口中的插件式架构有所区别)。
一、插件式架构设计概述
插件式架构设计近年来非常流行,其中Eclipse起了推波助澜的作用,提到插件式就会不由自主的想到Eclipse。其实插件式设计并不是什么新事物,早在几十年前就有了。像X-Server就是基于插件式设计的,除了核心功能外,它所有的扩展功能和设备驱动都是以插件方式加入进来的。
基于插件的设计好处很多,把扩展功能从框架中剥离出来,降低了框架的复杂度,让框架更容易实现。扩展功能与框架以一种很松的方式耦合,两者在保持接口不变的情况下,可以独立变化和发布。公开插件接口,让第三方有机会扩展应用程序的功能,有财大家一起发。另外,还可以让开源与闭源共存于一套软件,你的插件是开源还是闭源,完全由你自己决定。基于插件设计并不神秘,相反它比起一团泥的设计更简单,更容易理解。各种基于插件设计的架构都有自己的特色,但从总体架构上看,其模型都大同小异。
插件式架构设计中主要包括:插件框架、插件契约(服务)以及插件组件三部分组成。
1、插件框架:组织和管理系统插件的下载、装载、组合、实例化以及销毁,并提供整套完整的与后台服务通信的操作接口等。
2、插件契约(服务):插件契约以服务接口的形式存在,系统的所有插件全部通过实现系统框架统一的接口规范,偏于有效的组织、管理插件对象。
3、插件组件:插件组件既为具体的插件程序,实现了插件契约服务的一个独立的程序。
对于插件式应用框架的开发,关键是要识别出框架中的通用点和扩展点。基于这个原则,对于开发插件式应用框架的方法和步骤主要分以下三点:
1、分析并提取出框架中的通用点
2、分析并提取出框架中的扩展点
3、在应用框架的扩展点处根据系统配置信息动态加载实际需要的程序集(应用插件),动态创建实例对象并调用其服务。
二、插件式架构技术选型
在RIA(Silverlight、Flex等)技术发热的现在,很多企业已经开始使用RIA技术解决方案进行企业管理系统建设,采用RIA技术进行系统建设的最大优点就是将后台处理服务程序和前台UI展现实现了完全分离,且后台实现也不受到任何技术活平台的限制,使系统的整体建设灵活性增强、以及提高对其他外部系统的集成能力。之所里选择微软RIA技术解决方案Silverlight技术来实现插件式系统架构,主要取决于以下优点:
1、Silverlight发布的动态连接库(.dll)或程序包(.xap)更容易实现插件式架构。
2、Silverlight支撑Socket的及时消息通信。
3、Silverlight开发与Blend界面设计完美结合,更容易、快捷的实现UI风格。
4、基于HttpService/WebService/WCF的分布式通信服务借口,提高多系统异构集成能力。
5、应用统一的系统样式,更容易、方便的实现系统多UI风格。
6、友好的全屏模式及独特的OOB(Out-Of-Browser)模式支持。
7、更多......
三、插件式架构设计的优点
可以说任何形式的架构设计实践工作无非就是从负责、繁琐的的研发过程中寻找一种相对方便、灵活、稳定、高扩展性的以及更加简单的一种新型技术实现方式,从而提高项目的整体开发进度和质量,减少开发人员的工作压力,间接的提高整个项目团队的工作效率。
采用插件式架构设计的优点主要体现在以下几个方面:
1)、降低系统各模块之间的互依赖性
在进行插件式开发中,任何一个系统功能模块、通用用户界面以及最小的图标等都可以插件的方式进行开发,从而提高了通用功能模块的重用性;各个功能进行独立开发,相互之间不存在互依赖性,使各个独立的功能都可以单独运行,也可以通过插件框架进行托管运行,从而提高了整个系统的灵活性;对于修改功能模块也不会影响到其他插件模块的正常运行,降低了系统的维护难度,提高了系统的可扩展性。
2)、系统模块独立开发、部署、维护
每个功能模块都可以按照插件契约服务接口所定义的服务接口以及相关的元数据的形式当做一个插件进行独立开发,开发完成编译后可独立运行,也可通过插件框架进行托管运行。理论上插件组件是不应该可以单独运行的,按照插件式架构原理来说,必须是通过插件管家托管才能运行。实际的开发中或许会因为各种的业务需求不同而不同,具体应该如何对插件开发进行约束,还得结合实际项目需求而定。
3)、根据需求动态的组装、分离系统
每个功能模块都可以当做一个插件进行开发,通过统一的配置文件维护插件包的部署信息,插件框架可根据活动情况动态从服务器上下载相应的xap插件包或者是.dll的动态库文件到客户端进行插件初始化创建,插件到框架的组合等,插件框架能够灵活的管理各个插件实例以及插件之间的通信机制,也支持插件的卸载。
三、插件式架构组件(MEF)
在MEF之前,人们已经提出了许多依赖注入框架来解决应用的扩展性问题,比如OSGI 实现以Spring 等等。在 Microsoft 的平台上,.NET Framework 自身内部包含组件模型和 System.Addin。同时存在若干种开源解决方案,包括 SharpDevelop 的 SODA 体系结构和“控制反转”容器(如 Castle Windsor、Structure Map、Spring.Net 以及Unity)。
虽然.NET平台下,包括MS在内的各种方案已经遍地开花,但是MEF是第一个随着CLR发布的解决方案。
官方说法: Managed Extensibility Framework(MEF)是.NET平台下的一个扩展性管理框架,它是一系列特性的集合,包括依赖注入(DI)以及Duck Typing等。MEF为开发人员提供了一个工具,让我们可以轻松的对应用程序进行扩展并且对已有的代码产生最小的影响,开发人员在开发过程中根据功能要求定义一些扩展点,之后扩展人员就可以使用这些扩展点与应用程序交互;同时MEF让应用程序与扩展程序之间不产生直接的依赖,这样也允许在多个具有同样的扩展需求之间共享扩展程序。
转自http://www.po-soft.com/hi/yongtree/blog/2065
分享到:
相关推荐
插件式的架构设计简单来说就是将一套系统中的算法和功能不同而接口相同的同类事物抽象为插件的一种架构设计方式。我更将其看作是策略模式在整个系统的应用,如果采用微服务架构,插件也可以理解为微服务中的微单元。...
设计良好的插件架构需要考虑到版本兼容性,确保新版本的主程序能够处理旧版本的插件,或者反之。 10. **源代码与文档** 提供源代码和相关文档对于开发者来说至关重要。源代码可以帮助理解实现细节,而文档则提供了...
### 基于.NET平台的插件式系统开发 #### 摘要 在软件开发领域,需求变更是一项常见的挑战,这往往导致整个应用程序需要进行调整甚至重构,从而增加了开发成本与时间。针对这一问题,插件式开发方法提供了一种有效...
《插件式GIS应用框架的设计与实现:基于C#和AE+9.2》是一本深入探讨GIS(地理信息系统)开发技术的专业书籍,主要聚焦于使用C#编程语言和ArcGIS Engine(AE)9.2版本来构建插件式GIS应用的理论与实践。GIS是一种集成...
插件式编程架构是C#中一种高级的设计模式,它允许应用程序通过动态加载外部组件(即插件)来扩展其功能。这样的设计为软件提供了灵活性和可扩展性,使得开发者可以在不修改核心代码的情况下增加新功能。 插件式架构...
插件式结构设计是一种软件架构模式,它允许在运行时动态加载和卸载功能模块,这些模块被称为插件。这种设计使得主程序可以扩展其功能,而无需重新编译或修改核心代码。在Windows平台上,C++是实现这种设计的一个常见...
一、插件式框架设计简介 插件式框架是应用程序的基础结构,它为特定领域提供可重用的设计思路和组件。不同于软件架构,框架是具体实现的层次,而软件架构则更侧重于高层次的组件间关系描述,如模型-视图-控制器(MVC...
SpringBoot插件式开发框架是基于SpringBoot框架构建的一种创新性开发模式,旨在解决系统动态扩展和模块化管理的问题。这种框架充分利用了SpringBoot的简洁、高效特性,为开发者提供了快速构建可插拔功能的能力。下面...
### 构建插件式的应用程序框架 #### 一、引言 ...通过合理的设计和实现,插件式架构可以让应用程序在功能上不断进化,同时保持良好的用户体验。在未来,随着技术的进步,插件式架构的应用将会变得更加广泛。
基于插件式开发框架是一种灵活且可扩展的软件架构模式,它允许开发者通过添加或移除插件来增强或修改应用程序的功能。这种框架的核心思想是将应用分解为多个独立的组件,每个组件(即插件)都可以独立开发、测试和...
总的来说,插件式GIS应用框架的设计与实现涉及多方面的技术,包括软件架构设计、模块化编程、动态加载、API设计以及面向对象编程原则。这样的框架使得GIS系统能够适应不断变化的需求,为用户提供丰富的功能选择,...
在IT行业中,插件式开发是一种常见的软件设计模式,它允许开发者通过添加额外的模块或组件来扩展软件功能,而不必修改原有的核心代码。在Windows应用程序开发领域,尤其是在使用C#语言和WinForms框架时,插件式架构...
在GIS(地理信息系统)领域,开发插件式应用框架是一种常见的技术实践,它允许开发者根据需求灵活地扩展和定制系统功能。本主题聚焦于“插件式GIS应用框架的设计与实现”,具体是基于C#编程语言和ArcEngine 9.2这一...
在IT领域,插件式系统框架是一种常见的软件架构设计,它允许通过添加或移除插件来扩展系统功能,而不必修改核心代码。本压缩包文件"插件式系统框架.zip"显然关注的是如何利用WPF(Windows Presentation Foundation)...
插件式架构是一种设计模式,它允许将软件功能分解为可独立替换和升级的模块,即插件。这种架构使得程序具有高度的灵活性和可扩展性,因为新的功能可以通过添加或更新插件来实现,而无需修改核心代码。在OPC服务器...
插件式框架(Plugin-based Framework)是一种设计模式,它允许我们构建可扩展和模块化的应用程序。这种框架的核心思想是将核心功能与可插拔的组件分离,使得开发者可以独立地更新或替换这些组件,而不会影响到整个...
综上所述,插件式GIS应用框架的设计与实践涵盖了软件工程的多个领域,包括系统架构、接口设计、动态加载、事件处理、数据管理、性能优化以及安全控制等,对于GIS开发人员来说,理解和掌握这些知识点至关重要。
标题“插件式GIS应用框架”指的是一个基于插件架构设计的GIS应用系统,这种系统允许用户根据需求添加或移除特定功能的插件,以实现定制化的GIS解决方案。C#是一种常用的编程语言,尤其在.NET框架下,它的面向对象...
MySQL的插件式存储引擎体系结构是一种灵活的设计模式,允许用户根据具体的应用场景选择最适合的存储引擎。这一架构的最大优势在于它允许应用程序和数据库管理员(DBA)不必关心底层的具体实现细节,从而简化了应用开发...