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) 

转载于:https://www.cnblogs.com/cw_volcano/p/3881276.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值