RogerTong's Tech Space

文章书傲骨,程序写春秋
posts - 15, comments - 63, trackbacks - 0, articles - 0

Mussel框架

     摘要: 在前面的章节中,我们了解到Mussel是一个基于插件的应用框架。Mussel内核的本身不包含任何方面的功能,它只是负责对我们所编写的插件项目进行协调,维护起插件项目之间的依赖关起,并构建起插件项目之间的沟通渠道。通过编写各种不同的应用插件,我们可以无限的扩展Mussel的功能。同时,Mussel还可以按照用户指定的需求在进程中开辟不同的AppDomain,将不同职能的插件载入不同的AppDomain中,亦可以将相类似职能的不同插件加入到同一个AppDomain。在今天的讲述中,我们将看到如何利用Mussel默认提供的通信及Proxy生成器插件来开发一个简单的 C/S(客户端/服务器)应用  阅读全文

posted @ 2008-07-14 23:10 RogerTong 阅读(1067) | 评论 (15)  编辑 |

     摘要: 在上一篇文章中,我们讲过如何从外部调用插件项目,接下来我们来看看插件项目与插件项目之间的调用。

我们来看看现在的应用场景:同样是对两个数值进行运算,MathOne是基本并且稳定的运算服务,负责对这两个数据相加并返回值。但是由于新的用户的需求发生了改变,他们希望获得的值是MathOne结果的平方数,例如:

如果我们传入的值是 (2,3),旧用户期望得到的值是 2+3 = 5 ,而新用户期望的值是 MathOne 运算结果的平方数,即是 5 2 = 25。

由于需要同时考虑新的需求并兼容旧的用户,所以我们需要加多一个插件项来为新用户响应需求。

为了让大家看起来不那么吃力,我们还是重述一下相关的接口及 MathOne 的实现  阅读全文

posted @ 2008-07-09 16:40 RogerTong 阅读(99) | 评论 (0)  编辑 |

     摘要: 在之前的文章中,我们已经了解了Mussel插件项目树的结构及插件简单的制作方式,今天我们来看看如何对Mussel的插件项目进行调用。

我们想像一下有这样的一个应用场景:我们需要对两个数值运算并返回一个结果,这个运算交由一个独立的运算过程来进行,我们并不关心运算的具体细节,我们只需要运算过程返回一个结果,先来看看这个运算接口的定义  阅读全文

posted @ 2008-07-09 16:39 RogerTong 阅读(80) | 评论 (0)  编辑 |

     摘要: 在之前的文章中我们提到了Mussel插件的层次结构:插件(Addin)包括了插件项目的装载节点(AddinNode),装载节点又包括了插件项目(AddinItem),而每个插件项目又可以包括无限下级的子项目:

Mussel的加载器在加载时,会尝试读取当前文件夹以下(包含子文件夹)的所有*.addin文件,每个addin文件被Mussel加载器识别、加载后,便会形成如上图所示的IAddin对象,如果每个插件都是独立的,这个过程就非常简单。但是插件之间必须然会有一些联系,例如,如果系统的工具栏是一个稳定的插件(addin),如果金山词霸有一个扩展,能添加一个按钮到系统的工具栏中,我们先来看看摸拟的配置文件,为了方便说明,我们假定 ClassKey指示的类型都存在并忽略掉程序集引入的配置部分。  阅读全文

posted @ 2008-07-09 16:26 RogerTong 阅读(91) | 评论 (0)  编辑 |

     摘要: Mussel插件项目都从AddinItem继承,AddinItem类是所有插件项目的基类,附合IAddinItem接口规范,我们先来看看IAddinItem接口的构成类图:

上图是IAddinItem接口的全部方法与属性,从前三个属性中,我们不难看出Addin插件树的组成方式,可以想像的是AddinNode中自然还包插了IAddin的对像。

Properties属性是插件加载时,从Addin配置文件中读取的对应的AddinItem的配置信息。而通过this属性可以轻松的访问到当前插件项目的子插件项目……  阅读全文

posted @ 2008-07-09 16:11 RogerTong 阅读(114) | 评论 (0)  编辑 |

     摘要: 在前面的文章中,我们说过,Mussel的内核是一个插件容器。Mussel本身不提供任何功能上的服务,所有的功能都由插件来提供。Mussel负责协调插件与插件、插件与容器以及容器与调用者之间的通信。

Mussel提供了一个装载器,这个在以后的文章中会讲到。装载器的Start方法调用时,装载器遍历Mussel程序集所在文件夹以及所有的子文件夹,搜寻 *.addin 的插件配置文件。在这里,我们先看一个addin文件的演示……  阅读全文

posted @ 2008-07-09 15:42 RogerTong 阅读(160) | 评论 (1)  编辑 |

posted @ 2008-07-09 15:32 RogerTong 阅读(210) | 评论 (0)  编辑 |