- 1、本文档共70页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
NET4 技术亮点剖析-金老师课件
北京理工大学计算机学院 金旭亮;.NET技术王国探秘
并行计算的时代
“拥抱变化”的软件系统
“动静结合”的编程世界;;;;Reflector:用过的人都说好……;然而,仅有技术是不够的……;IL(Intermediate Language),CLR能识别的“面向对象”的汇编语言。;使用ildasm工具;var v = new { Amount = 108, Message = Hello };;对于应用层的开发,大多数情况下,即使不了解IL也没有多大影响。
对于有以下需求的开发者而言,掌握IL还是很有必要的:;;CPU的多核化,驱动着软件开发进入并行计算的时代。;要完成之数据处理任务:递增一个整数数组中的每个元素值,完成整个数据处理工作需108次操作。;并行计算所带来的挑战;并行程序与串行程序的对比;.NET 4.0中的并行计算组件;某台计算机安装有多个网络接口(Network Interface),每个网络接口都可以定义自己的网关(Gateway)和DNS服务器,我们希望能以并行的方式检测此台计算机是否联网。;如果直接采用多线程开发,则必须要精心考虑应该创建多少个线程,并需要实现复杂的线程同步:;TPL提供了一个“Parallel”类,可以使用它的ForEach方法来并行处理数据集合中单个数据项;TPL为并行循环内置了“中途取消”的机制;示例中使用Parallel.ForEach启动对所有网卡的并行检测,并且在已经有一个网卡Ping通互联网的情况下“通知”其他正在执行的并行循环退出……
;TPL提升了开发“并行计算”的抽象层次,基于“任务(Task)”而非“线程(Thread)”来开发并行计算程序。
“任务(Task)”可以看成是一个可以并行执行的某项工作
TPL使用.NET线程池中的线程来执行任务。
负责将任务“分派”到线程的工作由任务调度器负责,而任务调度器集成于线程池中。
;任务的创建;TPL提供了许多任务同步手段;更多的同步手段;“父子类型”的任务;任务对象的状态机;并行循环也需要被转换为Task;并行任务由线程池中的线程负责执行;Program Thread;Parallel LINQ;PLINQ的性能提升;顺序执行 vs 并行执行;示例程序在不同硬件平台上的性能比对结果;有关并行计算的开发建议;;世界总是在不断地变化中,而软件系统则相对稳定,并且通常需要高昂的开发费用与维护成本。
如何尽可能地延长现有软件系统的生命,是一个很有意义的问题。
“与时俱进”的软件系统,能够不断以“小”的调整来积极地应对外部的变化,人们迫切地希望能更方便快捷地设计和开发出这样的软件系统。;软件的可扩展性;开放/封闭原则(Open/Closed Principle);为软件系统设计一个相对稳定的框架,而将需要变化和扩充的部分独立为“插件(Plug-in)”,是实现软件系统高可扩展性的一种重要技术。
基于早期版本(3.5及以前)的.NET,通常使用“反射(Reflection)”技术来设计插件系统,其问题在于:
;早期插件技术的示例;由于开发基于插件的软件系统的需求日益迫切,.NET 3.5 引入了一个“托管插件框架(Managed Add-ins Framework,MAF)”.
MAF集成了自动识别与装载插件、处理异常、动态卸载插件等功能,是一个完备的插件开发平台。
然而,MAF拥有一个非常复杂的基于“管道(pipe line)”的架构,即使是创建一个最简单的插件和宿主示例,也得创建最少8个项目!
过于复杂的东西没人愿意用!;.NET 4.0基类库多了一个“MEF( Managed Extensibility Framework ,托管可扩展性框架)”。
MEF将一个.NET应用程序看成是普通软件组件与另一种可组合“部件(Part)”所构成的整体,并且部件的组合发生在程序运行时,这实际上就是把.NET应用程序由“静态编译”转换为“动态组合”,将.NET平台的代码复用技术提升到了一个新的水平。;定义部件协定;What is MEF?—(2);MEF应用程序的基本构造块——部件;部件的装配车间——部件组合容器;部件间的“通讯录”——Catalog;通用的MEF组合部件的步骤;MEF的应用实例;可分块下载的Silverlight 4应用程序;示例分析;Silverlight 4+MEF+MVVM;;C#的历史回顾;可以动态添加成员的对象:;简化与COM组件交互的代码;让类型派生自DynamicObject,并重写相应的方法,即可创建自己的动态类型。;将保存有MyDynamicType的程序集放到指定文件夹(比如d:\test),然后启动IronPython……;背后的“主角”——DLR;DLR探秘(1)——自动创建的新类型;动态站点对象通过
文档评论(0)