.net framework from 1.0 -> 4.0

Post on 29-Jun-2015

9.352 views 6 download

Tags:

description

简单介绍了.net framework 从1.0到4.0的演变历程.本文已经开放下载

Transcript of .net framework from 1.0 -> 4.0

ligaoren@gmail.com.NET Framework 1.0 → 4.0

假如给你一次机会从零开始学习 .net,你还会使用同样的方法么 ?

我们换一个角度……

第一个问题 : 你是用什么做开发的 ?

• C# 1.0 / 2.0 / 3.0 / 4.0 • Vs2005 VS2008 VS2010• .net Framework 2.0 /3.0 / 4.0

????

1.0 1.1 2.0 3.0 3.5 4.0

2002 2003 2005 2006 2007 2010

vs2002 vs2005vs2003 vs2008 vs2010

这些年我们一直追技术 ......

• 这些年 .net 到底发生了哪些变化 ?• 这些变化有什么规律吗 ?• 除了语法糖我们还能关注些什么 ?

.NET Framework 的设计目标是什么 ?

Productivity 

1. 减少语法噪音• 完成目标功能语法本身代码量所占比例• 这部分改进多数被我们当作语法糖

2. 惯用法实现• 多数人都会采用的惯用法 , 会逐渐迁移到框

架内实现• 例如 :– TryParse – int? default()– EventHandler<T>

• 惯用法的实现职责从开发人员转移到框架 ,往往也会降低代码量

3. 类库功能增强• 常用功能逐渐加入到类库中• List<T>.FindAll• Stringbuilder.Clear();• String.Join• Collection 类库每一个版本都在变化

• 这种变化比较零散 , 需要我们 BCL 有一个持续的关注

4. 编程范式• 2.0 泛型编程• 3.0 函数式编程• 4.0 并行编程 dynamic

5. 设计模式• 设计模式本质上是弥补面向对象语言的不

足• 如果语言本身支持 , 何必重新发明轮子 ?– Lazy<T>– Event– Iterator

6. 产品级通用解决方案• LINQ• EF• TPL• Rx

7. 项目开发支持• Code Behind• Partial Class• Namespace alia

我们再换一个角度……

OOP 设计原则

SRP-SoC

OCP

DIP

DI/IoC

KISS

DRP

This page intentionally left blank

.net Framework 2.0

泛型 Generics 

<T>  算法抽象

迭代器 Iterators 

foreach yei ld   IenumberableIenumberator  Col lecti on

局部类 partial

代码生成 一个类确实很大怎么办

TryParse()

Test-do exception

• 属性访问修饰符 access modifiers on getters and setters 

• 匿名方法 anonymous methods.  

Inline

//declare a method with no name and convert it into a delegate.

• 后台工作进程 background worker pattern

 Event-based Asynchronous Pattern (EAP)

• 泛型约束 Generics Constraints

• 最令你吃惊的事实是什么?

人生只有 900 个月.net framework 2.0 才有静态类

• C#– default()– System.EventHandler<T>– System.Collections.Generic.List<T> FindAll()– General Catch Block– Nullable Modifier int?– contravariance & covariance

• Product– Ado.net– Asp.net

• What's New in the .NET Framework Version 2.0• http://msdn.microsoft.com/en-us/library/t357fb32.aspx

• Breaking Changes in .NET Framework 2.0• http://msdn.microsoft.com/zh-cn/netframework/aa570326.aspx

.net Framework 3.0

• 3.0

.net Framework 3.5

匿名类型 anonymous types

var

自动属性 automatically implemented properties

{get;set;}

集合初始化 Collection Initializers

new List<int>(){1,2,3,45};

对象初始化 Object Initializer

Student student=new Student(){ StudentName="zen",Number=20022396};

扩展方法 Extension methods

“abc”.ToHTML()

LINQ

data.Select(n=>n.ToUpper()).All(n => n.Length > 5);

无参匿名方法 Parameterless Anonymous Methods

 delegate { return Console.ReadLine() != "“}

Lambda 表达式(a,b)=>a+b

Expression Trees

.net Framework 4.0

TPL & Parallel loops

PLINQConcurrent Collection

dynamic

Optional parameters

 

Tuple

 

Func & Action

 

结束了吗 ?

C# 5.0 is Coming Soon

• 10000 个小时的练习,成为技术专家

我曾认为用手槌要六百年才能掘通的隧道

安迪用不到二十年就办到了

持续关注,坚持练习

每天早晨叫醒我们的不是闹钟而是梦想

谢谢 !