zoukankan      html  css  js  c++  java
  • Mussel使用系列(一):Mussel配置文件演示

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


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


     1<?xml version="1.0" encoding="utf-8" ?>   
     2<Addin Name="Core" CreateNewDomain="true" DomainName="Core">   
     3  <ReferenceAssemblies>   
     4    <Reference AssemblyFile="icecs.dll"/>   
     5    <Reference AssemblyFile="Mussel.Communication.Contract.dll"  
     6                      IsMusselAssembly="true" />   
     7    <Reference AssemblyFile="Mussel.Communication.IceCommon.dll"/>   
     8    <Reference AssemblyFile="Mussel.Communication.IceServicePortal.dll"  
     9                      IsMusselAssembly="true"/>   
    10  </ReferenceAssemblies>   
    11  <AddinNode Path="/Mussel/Core">   
    12    <AddinItem ClassKey="BasicFormatter" Name="BasicFormatter"/>   
    13    <AddinItem ClassKey="ConnectionManager"/>   
    14    <AddinItem ClassKey="FullServiceSiteFactory"/>   
    15    <AddinItem ClassKey="IceServicePortal"   
    16               ServiceSiteFactoryKey="/Mussel/Core,FullServiceSiteFactory"   
    17               AdapterId="IceServicePortalAdapter"   
    18               ObjectId="IceServicePortal"   
    19               Endpoint="tcp -p 8755"   
    20               ConnectionManager="/Mussel/Core,ConnectionManager"   
    21               />   
    22  </AddinNode>   
    23</Addin>   
    24

     在这里我们先解释一些概念性的东西: 

    1. Mussel的插件(Addin)是树状结构的,插件可以包含许多个加载节点(AddinNode),加载节点又可以包含许多个插件项目(AddinItem),而插件项目本身又可以是一个容器,可以包含许多子插件项目。
    2. 由于Mussel采用了树状的插件结构,所以加载节点及插件项目都有完全限定的路径。
    3. 插件项目的路径表示为:节点路径,[父级插件项目基本路径.]插件项目名称,例如:如果一个插件项目的完全路径为:/Mussel/UI/MainForm,MainMenu.FileMenu,则其装载节点是/Mussel/UI/MainForm,父级插件项目的完全路径是:/Mussel/UI/MainForm,MainMenu,父级项目的基本路径是MainMenu。


    接下来,我们来看看配置文件中各个节点的具体含义,在Mussel插件配置文件中,一般会有以下一些元素:

    • /Addin,这是一个根元素,每个文件中只有一个。正如其名称一样,该元素表示其内部的XML内容为插件配置相关的信息,该元素有三个特性:
      • Name:插件的标识
      • CreateNewDomain:是否需要在新的AppDomain中加载插件。
      • DomainName:AppDomain的标识,如果多个配置文件的DomainName相同,则会被加载到同一个AppDomain中。
    • /Addin/ReferenceAssemblies,该元素标识其内部的XML内容为引用的程序集相关的信息。
    • /Addin/ReferenceAssemblies/Reference,该元素明确引用的具体程序集,有两个特性
      • AssemblyFile:程序集所在的相对路径(相对于插件文件所在的目录),如果前置"~/"字符,则相对于Mussel.Core程序集所在的目录。
      • IsMusselAssembly:该程序集是否为Mussel插件程序集,如果值为"ture",Mussel会尝试从程序集索并记录Mussel插件项目类型。
    • /Addin/AddinNode,该元素指示插件的装载节点,有一个特性:
      • Container:节点内部的容器,该容器明确元素内部的插件项目的父级插件项目位置。
    • /Addin/AddinNode/AddinItem,该元素设置具体的插件项目,包含两个基本的特性:
      • ClassKey:用于实例化插件项目的类型,对应插件代码中[MusselType(xxxx)]特性指定的类型标识。
      • Name:插件的名称标识,如果不设置的话,默认同ClassKey一致。
  • 相关阅读:
    python基础(6)---set、collections介绍
    Vue Router滚动行为 scrollBehavior
    CSS expression属性
    定时器setTimeout实现函数节流
    axios封装
    vue项目结构
    搭建vue项目环境
    javascript参数传递中处理+号
    微信支付 chooseWXPay:fail
    微信支付get_brand_wcpay_request:fail
  • 原文地址:https://www.cnblogs.com/isuper/p/1238971.html
Copyright © 2011-2022 走看看