zoukankan      html  css  js  c++  java
  • MEF技术

    MEF 是一个使开发人员能够创建“插件式应用程序”的技术,这里的“插件”是指在应用程序部署后开发人员能够通过开发“插件”来扩展应用程序功能。但不同之处是使用MEF框架您在系统设计阶段不需要考虑在应用程序部署后可能会有什么插件,MEF可以自动搜索这些插件。这也是为什么会叫他Managed Extensibility Framework。

    一个简单的MEF示例,

    假设系统中有如下需求
    支付功能: 用户可以选择多种支付方式进行支付如支付宝,网银在线,财付通等等。

    1. 定义支付接口及支付请求数据结构

    2. 定义插件接口及插件元数据(用于标识插件信息)

    3. 添加获取支付插件方法, 修改支付函数使支付支持多种支付方式

    4.使用MEF实现支付接口

    5. 编写第一个支付插件

    6. 使用MEF容器注册插件

    7. 目前系统中可用的插件只有“支付宝支付插件”,如果我们想添加一个新的网银在线插件

    8. 插件元数据的定义:

    9. 使用插件/刷新插件

    1. 拷贝需要的插件程序集至 ./bin/debug/plugins。(如Plugin.Payments.Echinabank.dll或 Plugin.Payments.Alipay.dll)MEF会自动加载plugins文件夹中的插件程序集。
    2. 刷新插件,拷贝新插件程序集至 ./bin/debug/plugins调用directoryCatalog.Refresh()函数. MEF会重新加载plugins文件夹中的插件程序集。

    总结,MEF还是挺适合做.net程序的插件框架,使用MEF做插件主要有下面几个好处:

    1. 从.Net 4.0 开始微软已经把MEF内置在.Net Framework中,使用时只需要引用System.ComponentModel.Composition即可。
    2. 开源。
    3. 轻量级,不像Castle 或者 Spring之类的IoC使用起来比较复杂。
    4. 很容易实现动态搜索插件。
    5. 元数据功能使得插件有自描述能力不需要使用xml或者json来描述插件

    相关资源

    MEF 主页, MSDN 文档, MSDN 杂志 MEF vs IoC, .NET 4.0 MEF FAQ (Socket, Plug and extension) 

  • 相关阅读:
    typedef和define的详细区别
    谈谈Android Activity的生命周期管理
    【Android面试】Android面试题集锦 (陆续更新)(最新2012618)
    [ZZ]Ubuntu<>Windows 远程桌面连接(debian等同)
    C语言中的全局变量内存分配和初始化顺序
    [刘未鹏]怎样花两年时间去面试一个人
    线程间通信常用的三种方法
    C语言const详解
    细雨寒风水冰 no
    C#读取*.sql文件,并执行里面的SQL语句 no
  • 原文地址:https://www.cnblogs.com/cw_volcano/p/3881276.html
Copyright © 2011-2022 走看看