摘要: 引言:我们已经习惯于一个人独立进行软件开发,每个人都使用自己的风格进行程序设计,但随着工程项目变大或者是对时间要求比较紧时,就需要几个人,十几个人,甚至是上百个人协作进行软件开发与设计,这时一个比较棘手的问题就是如何将若干人所编写的软件代码(有可能是链接库、组件)进行无缝地集成,纵然进行源代码集成是... 阅读全文
posted @ 2015-08-13 23:04 rainbow70626 阅读(2183) 评论(0) 推荐(0) 编辑
摘要: 1、定义所谓“插件模型”,指应用程序由一些动态的独立模块构成,每个模块均具有一个或多个服务,并满足一定的插件协议,能够借助主程序实现主程序-插件;插件-插件之间的通讯。应用该模型的系统,具有以下特点:1)所有业务功能均是“砖块”,更新及维护简便2)子系统的概念变得模糊,子系统是多个模块的组合3)有效... 阅读全文
posted @ 2015-08-13 22:53 rainbow70626 阅读(1710) 评论(0) 推荐(0) 编辑
摘要: 插件式架构,一种全新的、开放性的、高扩展性的架构体系.插件式架构设计近年来非常流行,基于插件的设计好处很多,把扩展功能从框架中剥离出来,降低了框架的复杂度,让框架更容易实现。扩展功能与框架以一种很松的方式耦合,两者在保持接口不变的情况下,可以独立变化和发布。基于插件设计并不神秘,相反它比起一团泥... 阅读全文
posted @ 2015-08-13 22:33 rainbow70626 阅读(6138) 评论(1) 推荐(1) 编辑
摘要: 在C++中加载和卸载DLL是一件很容易的事,LoadLibrary和FreeLibrary让你能够轻易的在程序中加载DLL,然后在任何地方卸载。在C#中我们也能使用Assembly.LoadFile实现动态加载DLL,但是当你试图卸载时,你会很惊讶的发现Assembly没有提供任何卸载的方法。这是由... 阅读全文
posted @ 2015-08-13 22:13 rainbow70626 阅读(4609) 评论(0) 推荐(1) 编辑
摘要: 微软装配车的大门似乎只为货物装载敞开大门,却将卸载工人拒之门外。车门的钥匙只有一把,若要获得还需要你费一些心思。我在学习Remoting的时候,就遇到一个扰人的问题,就是Remoting为远程对象仅提供Register的方法,如果你要注销时,只有另辟蹊径。细心的开发员,会发现Visual Studi... 阅读全文
posted @ 2015-08-13 21:35 rainbow70626 阅读(745) 评论(0) 推荐(0) 编辑
摘要: 1. Assembly中的类要从MarshalByRefObject继承,如果你想从你自己的类来继承,那么请选用interface或者继续研究其他解决方案。namespace Library{ public class MyClass : MarshalByRefObject { ... 阅读全文
posted @ 2015-08-13 21:22 rainbow70626 阅读(1804) 评论(0) 推荐(0) 编辑
摘要: 最初之所以要采用插件的形式进行开发,主要是为了解决功能服务的“热插拔”问题,在决定采用“框架+插件”的方式进行设计后,我们就更进一步,打算将一个个可以分割开来的拥有完整功能的组件都做成插件的形式,并且使同类型的插件的接口兼容,这样在以后需要改变时就可以灵活的进行替换。比如,将通信部分做成通信插件、日... 阅读全文
posted @ 2015-08-13 21:03 rainbow70626 阅读(423) 评论(0) 推荐(0) 编辑
摘要: 设想这样一种场景:我们的服务系统提供一系列的功能服务,而以后会有更多新的功能服务增加进来,也可能出现功能服务需要被更改或移除的情况。对于这样的服务系统,一个常见的基本的要求就是,在添加/移除/更新功能服务的时候不能停止的服务系统的运行。通常,将每一项服务封装成一个插件Dll,可以非常容易地实现“插件... 阅读全文
posted @ 2015-08-13 20:50 rainbow70626 阅读(576) 评论(0) 推荐(0) 编辑
摘要: 很多时候,我们都想使用(开发)USB式(热插拔)的应用,例如,开发一个WinForm应用,并且这个WinForm应用能允许开发人员定制扩展插件,又例如,我们可能维护着一个WinService管理系统,这个WinService系统管理的形形色色各种各样的服务,这些服务也是各个"插件式"的类库,例如: ... 阅读全文
posted @ 2015-08-13 20:31 rainbow70626 阅读(341) 评论(0) 推荐(0) 编辑