Visual Studio 2010 和 .NET Framework 4 培训研讨会

Slides:



Advertisements
Similar presentations
一、问题的提出 经常听到学校的领导抱怨: 问题为什么总是那么多? 问题的出现为何不可预见? 问题为什么总是重复? 问题解决的效果为何总是 不够理想?
Advertisements

一、统计范围 注册地在湖里区的具有房地产开发资质的 房地产开发企业 无论目前是否有开发项目 无论开发的项目是在湖里区还是在其他区 没有开发项目的企业需要报送年报和月报 中的资金表(空表)。 新成立的项目公司,要先入库,再报报表。
第十二章 常微分方程 返回. 一、主要内容 基本概念 一阶方程 类 型 1. 直接积分法 2. 可分离变量 3. 齐次方程 4. 可化为齐次 方程 5. 全微分方程 6. 线性方程 类 型 1. 直接积分法 2. 可分离变量 3. 齐次方程 4. 可化为齐次 方程 5. 全微分方程 6. 线性方程.
社区健康管理 社区健康管理 青岛松山医院 贺孟泉 青岛松山医院 贺孟泉. 健康管理师 从事对人群或个人健康和疾病的监测、分析、评估以及健康维护和健康促进的专业人员。
PHPCMS 使用指南及二次开发向导 --- 系统设置篇 PHPCMS 网络培训课程 --- 系统设置篇 PHPCMS 项目部 王官庆制作 系统相关设置 1. 站点管理 2. 发布点管理 3. 系统其它设置 管理员设置 1. 角色定义 2. 管理员管理.
石化的 IT 大挑战 洛阳石化工程公司. 石化公司简介 中国石化集团洛阳石油化工工程公司,是国内能源化 工领域集技术专利商与工程承包商于一体的高科技企 业。拥有中国综合设计甲级资质,为国家首批业务涵 盖 21 个行业的工程咨询企业之一,拥有工程总承包、 工程设计、工程监理、工程咨询和环境影响评价等甲.
位置相关查询处理 研究背景及意义 移动计算、无线通信以及定位技术的快速发展,使 得位置相关的查询处理及基于位置的信息服务技术 已经成为一个热点研究领域 。 大量的应用领域 ( 如地理信息系统、智能导航、交 通管制、天气预报、军事、移动电子商务等 ) 均迫 切需要有效地查询这些数据对象。
Evernote 简介 —— 笔记管理软件 小组成员: 姓名 学号 邵亚平 SC 刘胜菊 SC 李丽丽 SC 周 洋 SC
理论专题 1 :演化经济地理学. 理论专题 1 :演化经济地理学 演化经济地理学 : 经济地理学发展的新方向 演化经济地理学 : 经济地理学发展的新方向 Evolutionary economics and economic geography.
计算机 在分析化学的应用 ( 简介 ) 陈辉宏. 一. 概述 信息时代的来临, 各门学科的研究方法都 有了新的发展. 计算机的介入, 为分析化学的进展提供了 一种更方便的研究方法.
嵌入式操作系统 陈香兰 助教:王振明 Spring 2006.
嵌入式操作系统 陈香兰 Fall 系统调用 10/27/09 嵌入式 OS 3/12 系统调用的意义  操作系统为用户态进程与硬件设备进行交互提供 了一组接口 —— 系统调用  把用户从底层的硬件编程中解放出来  极大的提高了系统的安全性  使用户程序具有可移植性.
地理信息系统概述. 数据和信息 (Data & Information) 数据 原始事实 如:员工姓名, 数据可以有数值、图形、声音、视觉数据等 信息 以一定规则组织在一起的事实的集合。
吉林大学远程教育课件 主讲人 : 杨凤杰学 时: 64 ( 第六十二讲 ) 离散数学. 最后,我们构造能识别 A 的 Kleene 闭包 A* 的自动机 M A* =(S A* , I , f A* , s A* , F A* ) , 令 S A* 包括所有的 S A 的状态以及一个 附加的状态 s.
1 为了更好的揭示随机现象的规律性并 利用数学工具描述其规律, 有必要引入随 机变量来描述随机试验的不同结果 例 电话总机某段时间内接到的电话次数, 可用一个变量 X 来描述 例 检测一件产品可能出现的两个结果, 也可以用一个变量来描述 第五章 随机变量及其分布函数.
Harris Spring 2005 讲座一 “ERP 与企业流程再造 ” 东南大学 自控系 赵霁教授 电话: 一 ERP 是什么? 二企业为什么要引入 ERP 系统? 三企业管理软件的发展与 ERP 的创新之处 四 ERP 与流程再造的关系。 五 企业流程再造规划分析。
例9:例9: 第 n-1 行( -1 )倍加到第 n 行上,第( n-2 ) 行( -1 )倍加到第 n-1 行上,以此类推, 直到第 1 行( -1 )倍加到第 2 行上。
Virtual & Physical Libraries in the 21 st Century21 世纪的虚拟和实体 图书馆 What did I learn? Tony Ferguson Before NOW!!!
论匀强磁场条件下磁通回 路的取法 物理四班 物理四班 林佳宁 (PB ) 林佳宁 (PB ) 指导老师 : 秦敢 指导老师 : 秦敢.
吉林大学远程教育课件 主讲人 : 杨凤杰学 时: 64 ( 第四十八讲 ) 离散数学. 例 设 S 是一个非空集合, ρ ( s )是 S 的幂集合。 不难证明 :(ρ(S),∩, ∪,ˉ, ,S) 是一个布尔代数。 其中: A∩B 表示 A , B 的交集; A ∪ B 表示 A ,
第二部分 行政法律关系主体 第一节 行政主体 一、行政主体 (一)行政主体的概念 cc (二)行政主体资格含义及构成要件 CASE1CASE1\CASE2CASE2 (三)行政主体的职权和职责 1 、行政职权的概念及内容 2 、行政职权的特点 3 、行政职责.
协同工作环境研究中心 协同共享 助力科研. 主要内容  认识协同及协同软件  协同科研软件 duckling 介绍.
线性代数习题课 吉林大学 术洪亮 第一讲 行 列 式 前面我们已经学习了关 于行列式的概念和一些基本 理论,其主要内容可概括为:
Thomson Reuters 中国办事处 2008 年 5 月 Web of Science 培训课件 第三部分 : Web of Science 的引文检索功能.
兰州理工大学 1 第九章 CAD/CAM 系统集成 9.1 概述 9.2 3C 内部集成存在的问题和解决的办法 9.3 CAD/CAM 集成方法 9.4 3C/PDM 集成方法 9.5CIM 与 CIMS.
第 4 章 过程与变量的作用范围. 4.1 Visual Basic 的代码模块 Visual Basic 的应用程序是由过程组成的, 过程代码存放在模块中。 Visual Basic 提供了 三类模块,它们是窗体模块、标准模块和类 模块。 窗体模块 窗体模块是大多数 Visual Basic.
聚合物在生物高分子分离中的应用 王延梅 中国科学技术大学高分子科学与工程系 Tel
1 第 7 章 专家控制系统 概述 专家系统的起源与发展 专家系统的一般结构 专家系统的知识表示和获取 专家系统的特点及分类.
信息利用与学术论文写作 Library of Jiangsu University, Zhenjiang Sha Zhenjiang
UML 对象设计与编程 主 讲 : 董兰芳 副教授 Dept. of Computer Science,USTC
土壤学ⅠⅡ ( 土壤学Ⅰ ) 学时安排:上课: 36 学时 实验: 6 次共 18 学时(单周,第 7 周起) 地点在实验楼一楼进大门右手 授课教师:资源环境学院,潘根兴、李辉信 电话: ( O ) :
主讲教师:陈殿友 总课时: 124 第十一讲 极限的运算法则. 第一章 二、 极限的四则运算法则 三、 复合函数的极限运算法则 一 、无穷小运算法则 机动 目录 上页 下页 返回 结束 §5 极限运算法则.
在发明中学习 线性代数 概念的引入 李尚志 中国科学技术大学. 随风潜入夜 : 知识的引入 之一、线性方程组的解法 加减消去法  方程的线性组合  原方程组的解是新方程的解 是否有 “ 增根 ” ?  互为线性组合 : 等价变形  初等变换  高斯消去法.
1 学籍归档工作 年学籍归档工作安排 从 2008 年开始,改为按届移交档案 从 2008 年开始,改为按届移交档案 今年的归档工作范围: 今年的归档工作范围: 2014 年应届毕业班级 2014 年应届毕业班级 2014 年办理毕业证的往届生。 2014 年办理毕业证的往届生。 整理内容:根据.
导体  电子导体  R   L  i 离子导体  ( 平衡 ) mm   .
吉林大学远程教育课件 主讲人 : 杨凤杰学 时: 64 ( 第五十三讲 ) 离散数学. 定义 设 G= ( V , T , S , P ) 是一个语法结构,由 G 产生的语言 (或者说 G 的语言)是由初始状态 S 演绎出来的所有终止符的集合, 记为 L ( G ) ={w  T *
编译原理总结. 基本概念  编译器 、解释器  编译过程 、各过程的功能  编译器在程序执行过程中的作用  编译器的实现途径.
主要学习内容: 1、用描述法分析样品的风味特征 2 、学习味觉试验方法。 闽北职业技术学院食品与生物工程系.
 符号表  标识符的作用: 声明部分:定义了各种对象及对应的属性和 使用规则。 程序体:对所定义的对象进行各种操作。 $ididname IdnameAttributeIR  必要性 Token : 新表-符号表(种类、类型等信息):
初中几何第三册 弦切角 授课人: 董清玲. 弦切角 一、引入新课: 什么是圆心角、圆周角、圆周角定理的内容是什么? 顶点在圆心的角叫圆心角。 顶点在圆上,并且两边都和圆相交的角叫做圆周角。 定理:一条弧所对的圆周角等于它所对的圆心角的一半。 A B′ C B O.
Department of Mathematics 第二章 解析函数 第一节 解析函数的概念 与 C-R 条件 第二节 初等解析函数 第三节 初等多值函数.
网上预约集港操作指南 一、登录系统 登陆下面图片显示网址:输入堆场用户名、密码和校验码登陆系统.
《 UML 分析与设计》 交互概述图 授课人:唐一韬. 知 识 图 谱知 识 图 谱知 识 图 谱知 识 图 谱.
刘相兵 (Maclean Liu) 介绍 dbms_registry PL/SQL 程序包.
1 、如果 x + 5 > 4 ,那么两边都 可得 x >- 1 2 、在- 3y >- 4 的两边都乘以 7 可得 3 、在不等式 — x≤5 的两边都乘以- 1 可得 4 、将- 7x — 6 < 8 移项可得 。 5 、将 5 + a >- 2 a 移项可得 。 6 、将- 8x < 0.
Visual Studio 2010 and.NET Framework 4 Training Workshop.
项目七: PLC 功能指令应用 带进位循环左移指令 XXXXX. 项目七: PLC 功能指令应用 FX2 系列可编程控制器移位控制指令有移位、循环移位、字移位 及先进先出 FIFO 指令等 10 条指令。 带进位循环右移指令 RCR 带进位循环左移指令 RCL 字右移位指令 WSFR 先入先出读出指令.
1 物体转动惯量的测量 南昌大学理学院
本讲主要内容: 1. 如何登陆网站后台 2. 基础信息修改 3. 网站文章类型资料更新 4. 网站图片类型资料更新 5. 网站链接类型资料更新 本讲主要目的: 在结束本讲内容之后,能够按照客户的需求对网站的资料 进行实时更新操作。
脱口而出 即兴演讲的结构. 即兴演讲的价值 即兴演讲的价值 即兴演讲的结构 即兴演讲的结构 即兴演讲的要求 即兴演讲的要求 即兴演讲的评估 即兴演讲的评估.
表单自定义 “ 表单自定义 ” 功能是用于制作表单的 工具,用数飞 OA 提供的表单自定义 功能能够快速制作出内容丰富、格 式规范、美观的表单。
个体 精子 卵细胞 父亲 受精卵 母亲 人类生活史 问题:人类产生配子(精、卵 细胞)是不是有丝分裂?
算得清写的准 —— 物业费公示报告的编写 讲师:朱芸 物业费的 构成? 哪些是管 理人员工 资呢? 哪些算工程费 用? 怎样才能核 算的清楚呢?
逻辑设计基础 1 第 7 章 多级与(或)非门电路 逻辑设计基础 多级门电路.
“ 百链 ” 云图书馆. 什么是百链云图书馆?1 百链云图书馆的实际效果?2 百链云图书馆的实现原理?3 百链云图书馆的价值?44 图书馆要做什么?55 提 纲.
无忧 PPT 整理发布 无忧 PPT 整理发布 网上教研活动的推进与 学习社区的构建 首都师范大学 蒋国珍 2008 年 12 月.
目录 ontents Related 案例三:研究中的教师专业发展 背 景英特尔 ® 未来教育基础课程理念向教师教 学能力迁移的实践研究 时 间 2011 年 10 月至现在 学 校吉林省东丰县第四中学 研究内容初中语文叙事性散文教学中提问策略的 研究 技术条件网络环境 (网络课程、 QQ 、视频会议、
目标与要求: 让学生了解材料美是布的基本特点,利 用布的特点进行创作,培养学生的创新和实 践能力。
参考文献管理软件. 常见参考文献管理软件 : 中文 : CNKI E-learning (目前免费) NoteExpress NoteFirst 英文: Refworks Endnote (网络版免费) Mendeley……
登陆数据录入明细申报生成汇总申报扣款 输入计算机编码及 密码即可登陆系统. 登陆数据录入明细申报生成汇总申报扣款.
森林保护学本科系列课程 教学改革与实践 西北农林科技大学 一、基本情况 二、主要成果 三、创新点 四、成果的应用 项目研究背景 项目的总体设计 成果简介 解决的主要教学问题 解决教学问题的方法 改革前后的对比.
感谢您的关注 联系电话: – 677 手机: QQ :
八. 真核生物的转录 ㈠ 特点 ① 转录单元为单顺反子( single cistron ),每 个蛋白质基因都有自身的启动子,从而造成在功能 上相关而又独立的基因之间具有更复杂的调控系统。 ② RNA 聚合酶的高度分工,由 3 种不同的酶催化转 录不同的 RNA 。 ③ 需要基本转录因子与转录调控因子的参与,这.
迎接我们的未来 康 凯 教育部高等教育司. 以信息技术为代表的现代科技正在高 速实现着知识爆炸性的积累。 以信息技术为代表的现代科技正在高 速实现着知识爆炸性的积累。 知识总量的递增速度越来越快。 知识总量的递增速度越来越快。 知识创新周期越来越短。 知识创新周期越来越短。
第二节. 广告牌为什么会被风吹倒? 结构的稳定性: 指结构在负载的作用下 维持其原有平衡状态的能力。 它是结构的重要性质之一。
人力资源和社会保障部职业能力建设司. » 《一体化课程开发技术规程》编写综述 » 《一体化课程开发技术规程》内容解读 » 《一体化课程开发技术规程》使用建议.
§9. 恒定电流场 第一章 静电场 恒定电流场. 电流强度  电流:电荷的定向移动  正负电荷反方向运动产生的电磁效应相同 ( 霍尔效应 特例 ) 规定正电荷流动的方向为正方向  电流方向:正方向、反方向  电流强度 ( 电流 ) A 安培 标量 单位时间通过某一截面的电荷.
SCI 数据库检索练习参考 本练习完全依照 SCI 数据库实际检索过程而 实现。 本练习完全依照 SCI 数据库实际检索过程而 实现。 练习中,选择了可以举一反三的题目,读 者可以根据题目进行另外的检索练习,如: 可将 “ 与 ” 运算检索改为 “ 或 ” 、 “ 非 ” 运算检索 等等。 练习中,选择了可以举一反三的题目,读.
§7.2 估计量的评价标准 上一节我们看到,对于总体 X 的同一个 未知参数,由于采用的估计方法不同,可 能会产生多个不同的估计量.这就提出一 个问题,当总体的一个参数存在不同的估 计量时,究竟采用哪一个好呢?或者说怎 样评价一个估计量的统计性能呢?下面给 出几个常用的评价准则. 一.无偏性.
Tech·Ed North America /10/2018 2:43 PM
Presentation transcript:

Visual Studio 2010 和 .NET Framework 4 培训研讨会

托管扩展性框架之旅 姓名 职务 组织 电子邮件 ESTIMATED TIME: 60 minutes DEMO CODE: Use demo “IntroToMef” for all demos. There are “begin” and “end” projects for each individual demo. 姓名 职务 组织 电子邮件

目标 理解可扩展性对软件的重要性 理解何时以及如何使用 MEF 与其他现有技术的关系 您的反馈

问题…… 软件维护 Nearly 80% of software development costs is in the maintenance of software. 原软件开发

托管扩展性框架? 托管扩展性框架(Managed Extensibility Framework,MEF) 是 .NET Framework 中的一个新库,支持更好的重用应用程序和组件。使用 MEF、.NET 应用程序可以从静态编译转变为动态组合 MESSAGING: New Library = just an assembly, a normal .dll, used by any .NET language Dynamically Composed = composition takes place at runtime and composition behavior differs depending on how it is configured.

com·pose [ kəm pṓz ] 2) 将各种组件结合起来形成一个整体 MSN Encarta

开放/封闭原则 软件实体应该 对扩展开放, 但是对修改封闭。

已知 vs. 未知 MESSAGING: Due to it’s declarative-based and discovery-enabled approach, MEF becomes very powerful to use in an application where it is being used to put together a bunch of potentially unknown parts into a working application. You might also think about this as a 3rd party extending your application. When you are compiling your application (long before you ship), you have absolutely no idea on what sorts of extensions might be built for your application into the future. That’s the power of extensible applications, they can be extended and used in ways the original authors perhaps didn’t expect, or didn’t have the time to do themselves. If you are concerned strictly with the “known” part of the equation (composing different software entities together that are all known at compile time), there are other solutions that are available today that are very powerful for this scenario: namely IoC containers (IoC = Inversion of Control). The Managed Extensibility Framework was designed primarily with the unknown aspect of extension in mind.

MEF 基本内容…… 一个应用程序包含很多部件。

MEF 基本内容…… 导出。 导入。 组合。

部件,进入下半场…… public class SimpleMortgageCalculator : IMortgageCalculator { public ILogger Logger { get; set; } public float Calculate() Logger.Log("Calculating Mortgage"); return ...; } 部件 A MESSAGING: So, if a MEF-aware application is built of parts, parts can be thought of as the “heart” of a MEF-aware application. Let’s take a look at a simple Part. In this case, it is a class called SimpleMortgageCalculator that has one dependency it needs satisfied, an ILogger. Let’s see how we would use MEF to declare the needs this part has in order to be composed.

部件 A 导出…… [Export(typeof(IMortgageCalculator))] public class SimpleMortgageCalculator : IMortgageCalculator { public ILogger Logger { get; set; } public float Calculate() Logger.Log("Calculating Mortgage"); return ...; } 部件 A MESSAGING: So, if a MEF-aware application is built of parts, parts can be thought of as the “heart” of a MEF-aware application. Let’s take a look at a simple Part. In this case, it is a class called SimpleMortgageCalculator that has one dependency it needs satisfied, an ILogger. Let’s see how we would use MEF to declare the needs this part has in order to be composed.

部件 A 导入…… [Export(typeof(IMortgageCalculator))] public class SimpleMortgageCalculator : IMortgageCalculator { [Import(typeof(ILogger))] public ILogger Logger { get; set; } public float Calculate() Logger.Log("Calculating Mortgage"); return ...; } 部件 A MESSAGING: So, if a MEF-aware application is built of parts, parts can be thought of as the “heart” of a MEF-aware application. Let’s take a look at a simple Part. In this case, it is a class called SimpleMortgageCalculator that has one dependency it needs satisfied, an ILogger. Let’s see how we would use MEF to declare the needs this part has in order to be composed.

组合。 目录提供部件。 目录

容器是撮合者。 组合。 目录 MESSAGING: Now that we’ve declared all our Imports and Exports, how are they all matched up together? This is the job of the container. The container is the “match maker” if you will. An application will ask the configured container for an object of a given type, then the container will take care of building up the entire object graph and returning the necessary object. All of this matching is handled by the container itself, the user doesn’t have to think about it at all.

容器是撮合者。 组合。 AggregatingCatalog DirectoryCatalog AssemblyCatalog 目录 AssemblyCatalog TypeCatalog

第 1 步 – MEF 基本内容 DEMO: Use “IntroToMef” Demo, _1_Begin (_1_End contains finished demo)

部件 A 不要忘记元数据…… [Export(typeof(IMortgageCalculator))] [ExportMetadata(“Calculation”, “Simple”)] [ExportMetadata(“Tax Aware”, null)] public class SimpleMortgageCalculator : IMortgageCalculator { public ILogger Logger { get; set; } public float Calculate() Logger.Log("Calculating Mortgage"); return ...; } 部件 A

部件 A 部件 B 部件可能会延迟(Lazy)…… [Import(typeof(ILogger))] public ILogger Logger { get; set; } 部件 A 部件 B MESSAGING: Sometimes though, you may not want to import the part itself (let’s say you may only need to use it in specific situations and hence don’t want to create it in every situation, or you might want to programatically determine whether it should be imported or not). This can be done in MEF through lazy imports. To lazily import a part, rather than having the property imported to be the type of the import directly, you can import Export<T> (where T is the type you are importing). Once you have a reference to the Export, you have direct access to information like the contract for that Export as well as any Metadata for that Export (which can then be used to query against to determine whether the import should be used or not).

部件 A 延迟 <B> 部件可能会延迟…… [Import(typeof(ILogger))] public ILogger Lazy<ILogger> Logger { get; set; } 部件 A 延迟 <B> MESSAGING: Sometimes though, you may not want to import the part itself (let’s say you may only need to use it in specific situations and hence don’t want to create it in every situation, or you might want to programatically determine whether it should be imported or not). This can be done in MEF through lazy imports. To lazily import a part, rather than having the property imported to be the type of the import directly, you can import Export<T> (where T is the type you are importing). Once you have a reference to the Export, you have direct access to information like the contract for that Export as well as any Metadata for that Export (which can then be used to query against to determine whether the import should be used or not).

第 2 步– 元数据和延迟评估 DEMO: Use “IntroToMef” Demo, _2_Begin (_2_End contains finished demo)

部件 A 灾难性后果…… [Export(typeof(IMortgageCalculator))] [ExportMetadata(“Calculation”, “Simple”)] [ExportMetadata(“Tax Aware”, null)] [ExportMetadata(“This”, “foo”)] [ExportMetadata(“That”, “bar”)] 部件 A

部件 A 灾难性后果…… 得到了解决 [Export(typeof(IMortgageCalculator))] [ExportMetadata(“Calculation”, “Simple”)] [ExportMetadata(“Tax Aware”, null)] [ExportMetadata(“This”, “foo”)] [ExportMetadata(“That”, “bar”)] [Export(typeof(IMortgageCalculator))] [CalcCapabilities( Mode=Complexity.Simple, TaxAware=true, This=“foo”, That=“bar”)] 部件 A

第 3 步 – 强类型元数据 DEMO: Use “IntroToMef” Demo, _3_Begin (_3_End contains finished demo)

上下文的重要性!

第 4 步 – 上下文感知 DEMO: Use “IntroToMef” Demo, _4_Begin (_4_End contains finished demo)

容器 容器 生命周期 共享 非共享 部件 A 部件B 部件B 部件B MESSAGING: MEF also provides parts the capability of specifying what their lifetime behavior should be (like whether one instance of a part should be used everywhere, or whether a new instance should be created for each new request for that part). Among other things, this is enables scenarios like using MEF in a web server scenario or in a scenario where you might require a part to be isolated from other instances of the same part. This can be specified very easily using the PartCreationPolicy attribute.

第 5 步 – 生命周期 DEMO: Use “IntroToMef” Demo, _5_

但是……… 所谓的外部依赖关系在哪里?

.\Extensions CompositionContainer

第 6 步 – 外部依赖关系 DEMO: Use “IntroToMef” Demo, _6_Begin (_6_End contains finished demo)

声明性的力量 什么 vs. 如何

问题…… 软件维护 Nearly 80% of software development costs is in the maintenance of software. 原软件开发

解决方案…… 软件维护 原软件开发 Nearly 80% of software development costs is in the maintenance of software.

资源 http://mef.codeplex.com Clean Code,Robert C. Martin Working Effectively with Legacy Code, Michael Feathers Refactoring,Martin Fowler

Questions?