如何用 MEF 扩展应用程序】的更多相关文章

最近在写一篇关于如何扩展 Visual Studio 编辑器的文章时,用到了 MEF,因此打算写一篇文章提一下这个技术点.本篇文章并不打算详细介绍 MEF,只是一个最简单的入门,相信您在阅读本篇文章后,可以迅速开发出一个可扩展的应用程序. 简 介 MEF(Managed Extensibility Framework),是微软推出的一款用于搭建可扩展应用程序的框架,起初是独立于 .Net 发布的,后来集成到了 .Net 4.0 中.使用该框架可以非常轻松地扩展一个已发布的应用程序的功能,连 Vi…
概述 Managed Extensibility Framework(MEF)是.NET平台下的一个扩展性管理框架,它是一系列特性的集合,包括依赖注入(DI)以及Duck Typing等.MEF为开发人员提供了一个工具,让我们可以轻松的对应用程序进行扩展并且对已有的代码产生最小的影响,开发人员在开发过程中根据功能要求定义一些扩展点,之后扩展人员就可以使用这些扩展点与应用程序交互:同时MEF让应用程序与扩展程序之间不产生直接的依赖,这样也允许在多个具有同样的扩展需求之间共享扩展程序. 本文将介绍一…
项目名称:github-notification 项目地址:https://github.com/WQTeam/github-notification 说明:本人打算抽时间学习前端(html + css +js),选择Chrome扩展应用程序制作一个简单练手的项目.避免中途放弃在此立字为证! 有一起的兄弟吗? 项目简介:一款开源的,关于Github通知和监控个人项目的Chrome扩展应用程序(其实就是想监控下github上某个项目的star数,fork数等等.当然大家有什么想法也可以一起提出来讨…
第3章     如何用DAP仿真器下载程序 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/firege 3.1 仿真器简介 本书配套的仿真器为Fire-Debugger,遵循ARM公司的CMSIS-DAP标准,支持所有基于Cortex内核的单片机,常见的M3.M4和M7都可以完美支持,其外观见图 31. Fire-Debugger支持下载和在线仿真程序,支持XP/WIN7/WIN8/WIN…
第3章     如何用DAP仿真器下载程序 集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/firege 3.1 仿真器简介 本书配套的仿真器为Fire-Debugger,遵循ARM公司的CMSIS-DAP标准,支持所有基于Cortex内核的单片机,常见的M3.M4和M7都可以完美支持,其外观见图 31. Fire-Debugger支持下载和在线仿真程序,支持XP/WIN7/WIN8/WIN10这四个…
GitHub: https://github.com/WozHuang/mp-extend 相关文章: 小程序全局状态管理,在页面中获取globalData和使用globalSetData 通过页面预加载(preload)提升小程序的响应速度 主要目标 小程序本身的坑不少,开发时免不了需要引入或大或小的框架.而目前的小程序开发框架基本分为两种,一种是以Taro.wePY这种以其他技术栈开发小程序,一种是在原有的小程序开发模式上进行扩展. 对于新建立的项目,选择何种框架全凭喜好,可以优先考虑与团队…
多种Windows Azure服务可以帮助您将应用程序安全性扩展到云. 有三种服务可提供多个提供程序之间的身份标识映射.内部部署数据中心间的连接和相互发送消息的应用程序功能(无论应用程序位于何处). ·  使用Windows Azure Active Directory,您可以通过位于云中的应用程序的代理身份验证在应用程序上创建单点登录应用程序.使用访问控制服务功能,您可以将来自多个提供程序的标识映射到应用程序可以识别的claims. ·   通过Service Bus,您可以使用安全消息传递和…
[pyinstaller] pyinstaller在他们的官方网站上下载:http://www.pyinstaller.org/ 下载完pyinstaller之后还要安装一个支持包pywin32. 这个包允许了python访问windows系统的一些API,如果没有就会在编译过程中报错. 当然,也可以用pip install pyinstaller来一站式下载pyinstaller和它的支持包. ■ 打包步骤 用cmd键入python ${pyinstaller根目录}/pyinstaller.…
在VSCode中编写Python程序时,由于有些地方要使用环境变量,但是发现设置的环境变量有时不起作用,花了点时间研究了一下,过程不表,直接说结论. 首先,环境变量的设置,Python扩展中有三种方式: 直接设置系统环境变量,或在使用命令行启动VSCode时临时先设置环境变量.这种方式设置的环境变量在所有的运行方式下起效,但由于多个工程所用的环境变量不同,每次设置太麻烦,使用bash脚本或批处理我也觉得不爽,所以没有采用. 通过 terminal.integrated.env.windows /…
不知道有没有科学依据,自己感觉黑底白字对视力好些,于是动手加个chrome扩展: 第一步:建个文件夹,名称比如叫changeColor; 第二步:在changeColor文件夹中建三个文件:manifest.json  .  background.js   和 content_script.js 第三步:编辑三个文件 manifest.json放入以下代码 { "name": "Page color", "description": "…
工具的使用--谷歌浏览器(chrome) (二) 1. 设置和下载方法 右上角菜单按钮 ⇒ 更多工具(more tools) ⇒ 扩展(Extensions) 打开该页面之后,会首先进入扩展(已安装应用程序)的设置界面,当前页面底部会有获取更多应用程序的超链(https://chrome.google.com/webstore/category/extensions?hl=en-US),点击进去,下载新的浏览器插件. 2. 有用的插件 必备工具: vimium:在浏览器搜索结果页面,使用类似 v…
function query_process($service) { /* **查看WINDOWS系统进程列表,并查找指定进程是否存在 */ $tasklist = $_SERVER["WINDIR"]."/system32/tasklist.exe"; //找到windows系统下tasklist的路径 //print($tasklist); //打印tasklist的路径 @exec($tasklist,$arr); //运行tasklist.exe,返回一个数…
转:http://blog.csdn.net/wfdtxz/article/details/7368357 GDB 是GNU开源组织发布的一个强大的UNIX下的程序调试工具.或许,各位比较喜欢那种图形界面方式的,像VC.BCB等IDE的调试,但如果你是在 UNIX平台下做软件,你会发现GDB这个调试工具有比VC.BCB的图形化调试器更强大的功能.所谓“寸有所长,尺有所短”就是这个道理. 一般来说,GDB主要帮忙你完成下面四个方面的功能: 启动你的程序,可以按照你的自定义的要求随心所欲的运行程序.…
本文结合<Android开发艺术探索>书籍中的内存分析例子来讲解如何利用MAT工具来查找内存泄漏(以AndroidStudio开发工具为例). 1.下载MAT(Eclipse Memory Analyzer)工具,windows64位网盘下载地址:http://pan.baidu.com/s/1pLlbOBD,或者通过官网下载:https://www.eclipse.org/mat/downloads.php,下载完毕后解压即可,目录结构如下:…
1.free -m只能查看内存总量情况 2.top M ( 注意M是大写) 3.ps aux|head -1; ps aux | sort -k4nr | head -10 --------------------- 硬盘占用 df -lh (查看文件占用) du -h --max-depth=1 (查看删除占用) lsof -n | grep deleted 查看日志 tail -1  /var/log/boot.log…
xaml 类似于 html,但不是html,它是基于xml语言的:’html可以呈现在浏览器中而xaml 可以现实 3d动画等特效. xaml  是强类型语言,  是解释性语言,虽然他可以被编译.…
全局变量的操作 void lua_getglobal(lua_State * L ,const char * name) 此函数从lua中取出一个名为name的全局变量并将其压入栈中. 如当lua文件内容为 width = 200 height = 300 时,以下代码 int _tmain(int argc, _TCHAR* argv[]) { lua_State *L = luaL_newstate(); luaL_openlibs(L); != luaL_loadfile(L,"confi…
效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/YvYVvY 可交互视频 此视频是可以交互的,你可以随时暂停视频,编辑视频中的代码. 请用 chrome, safari, edge 打开观看. https://scrimba.com/p/pEgDAM/cN6L9SZ 源代码下载 每日前端实战系列的全部源代码请从 github 下载: https://github.com/comehope/f…
Managed Extensibility Framework (MEF) 什么是 MEF?   Managed Extensibility Framework 即 MEF 是用于创建轻量.可扩展应用程序的库. 它让应用程序开发人员得以发现和使用扩展且无需配置. 它还让扩展开发人员得以轻松地封装代码并避免脆弱的紧密依赖性. MEF 让扩展不仅可在应用程序内重复使用,还可以跨程序重复使用.   实例: MEF 位于 ComponentModel.Composition 程序集中 添加 System…
平常喜欢写点小东西玩玩,既可以娱乐自己满足自己的虚荣心,又可以方便工作和学习,今天且拿出一个来,与大家一起分享!  1. 软件介绍 言归正传,先看看需求,有这样一串字符串 abc,def,ghi,jkl,mno 我想把它转为 <td>abc</td><td>def</td><td>ghi</td><td>jkl</td><td>mno</td> 也许这很简单,因为毕竟只有几条而已,但是如…
在应用程序中宿主MEF其实非常简单,只需要创建一个组合容器对象(CompositionContainer)的实例,然后将需要组合的部件(Parts)和当前宿主程序添加到容器中即可.首先需要添加MEF框架的引用,既System.ComponentModel.Composition.dll,详细如下代码块: private void Compose() {     var catalog = new AssemblyCatalog(Assembly.GetExecutingAssembly());…
建议101:使用扩展方法,向现有类型“添加”方法 考虑如何让一个sealed类型具备新的行为.以往我们会创建一个包装器类,然后为其添加方法,而这看上去一点儿也不优雅.我们也许会考虑修改设计,直接修改sealed类型,然后为其发布一个新的版本,但这依赖于你拥有全部的源码.更多的时候,我们会采取针对第三方公司提供的API进行编程的方式.对于我们来说,FCL是一组第三方公司(微软)提供给我们的最好的API. 包装类的编码形式如下: class Program { static void Main(st…
现如今,Kubernetes已经完全改变了软件开发方式.Kubernetes作为一个管理容器化工作负载及服务的开源平台,其拥有可移植.可扩展的特性,并促进了声明式配置和自动化,同时它还证明了自己是管理复杂微服务的主要参与者.而Kubernetes之所以能够在业界被广泛采用,究其原因是Kubernetes迎合了以下需求: 企业想要在不断地增长的同时维持低成本 DevOps想要一个可以大规模运行应用程序的稳定平台 开发人员希望有一个可靠并且可复制的流程来编写.测试和debug代码 但是,你是否考虑过…
很多时候我们是没办法访问谷歌扩展应用程序 chrome应用商店的,这时候我们最好能把对应扩展应用程序下载保存,以便提供给其他人员使用. 搜索得到知乎有很全的方法: 如何导出并打包第三方chrome扩展为crx? 本人记录以下方法供后期使用. 1. 登录网址 Chrome Extension Downloader 2. 我在这里就随便找了个谷歌扩展应用程序 比如:时钟 for Google Chrome,地址: https://chrome.google.com/webstore/detail/c…
之前在使用Prism框架时接触到了可扩展性框架MEF(Managed Extensibility Framework),体验到MEF带来的极大的便利性与可扩展性. 此篇将编写一个可组合的应用程序,帮助大家快速熟悉MEF并将其应用于实际项目中. 有关MEF中的名词含义及功能实现,请大家移步:火车票 介绍下将要编写的Demo程序(下图),使用winform开发. 通过组合操作,程序动态加载可用部件进行组合操作. 通过解体操作,程序卸载所加载的所有部件. 新建项目后需引用程序集: System.Com…
IoC控制反转(Inversion of Control,英文缩写为IoC)是一个重要的面向对象编程的法则用来解决系统耦合问题. 控制反转还有一个名字叫做依赖注入(DI:Dependency Injection).IoC中最基本的技术就是interface + reflection,"反射(Reflection)"编程. ." IoC 容器的职责是对象的创建,核心是对象的生命周期管理(何时创建/怎么创建/何时销毁),就像一个大工厂,对象"托管"在里面.模式…
理解 MEF 容器部件生命周期和实现是非常重要的事情.考虑到 MEF 关注可扩展应用程序.这变得尤为重要.生命期可以解释为期望部件的共享性(transitively, its exports)   共享,非共享与所有权(Share,Non Shared and ownership)   部件的共享性(Shareability)是通过使用 PartCreationPolicyAttribute 定义的.PartCreationPolicyAttribute 提供以下几种值:   Shared:部件…
可组合部件(Composable Parts)   在 MEF 内部可组合部件是一个可组合单元.可组合部件导出其他可组合部件需要的服务,并且从其他可组合部件导入服务.在 MEF 编程模型中,可组合部件用 [System.ComponentModel.Composition.Import] 和 [System.ComponentModel.Composition.Export] 特性标识,以便声明导出点和导入点.可组合部件应该包含至少一个导出点.可组合部件要么显式添加到容器或者通过使用目录创建.M…
MEF 是一个使开发人员能够创建“插件式应用程序”的技术,这里的“插件”是指在应用程序部署后开发人员能够通过开发“插件”来扩展应用程序功能.但不同之处是使用MEF框架您在系统设计阶段不需要考虑在应用程序部署后可能会有什么插件,MEF可以自动搜索这些插件.这也是为什么会叫他Managed Extensibility Framework. 一个简单的MEF示例, 假设系统中有如下需求 支付功能: 用户可以选择多种支付方式进行支付如支付宝,网银在线,财付通等等. 1. 定义支付接口及支付请求数据结构…
<MEF程序设计指南>博文汇总 在MEF之前,人们已经提出了许多依赖注入框架来解决应用的扩展性问题,比如OSGI 实现以Spring 等等.在 Microsoft 的平台上,.NET Framework 自身内部包含组件模型和 System.Addin.同时存在若干种开源解决方案,包括 SharpDevelop 的 SODA 体系结构和"控制反转"容器(如 Castle Windsor.Structure Map.Spring.Net 以及Unity). 虽然.NET平台下…