卢斌 Software Development Engineer Microsoft Corporation

Slides:



Advertisements
Similar presentations
项目6 通用堆栈.
Advertisements

計算機概論 第4章 基本視窗程式應用 4-1 程式語言簡介 4-2 演算法與流程圖 4-3 視窗程式語言設計 4-4 資料結構.
Demo-dataSource與DropDownList
授课教师:江星玲 1.
第一章 認識程式語言.
ooxx這個遊戲程式,非常的簡單只要你小時候會玩井字遊戲即可把電腦打敗,可以說是一種考智力取勝的遊戲。
程式語言(I)- Visual Basic 6.0 第 9 章 結構化程式設計
第14章 預存程序 14-1 預存程序的基礎 14-2 建立與執行預存程序 14-3 預存程序的參數傳遞 14-4 預存程序的傳回值
第7章 C#函數與.NET Framework類別函數庫
Chap 13 視界與資料庫程式設計.
第6章 資料庫管理系統 6-1 關聯式資料庫管理系統 6-2 SQL Server資料庫管理系統
資料庫設計 Database Design.
客户端用Net-Library和SQL SERVER连接
課程名稱:程式設計 授課老師:________
第2章 数据定义功能 创建表 在关系型数据模型中,表(Table)是最基本的数据结构。
2017年9月14日12时3分 DEV349 Visual C 无缝集成,无限潜力 李建忠 微软特约讲师 上海祝成科技
第7章 建立資料表與完整性限制條件 7-1 資料型別 7-2 資料表的建立 7-3 建立完整性限制條件 7-4 修改與刪除資料表
Visual Basic.NET 程序设计语言课程内容
題目:台灣客運 南臺科技大學 機械工程系 班級:奈米一乙 學號:4A 姓名:蔡政堯 授課教師:謝慶存
Ch03 VB.NET語法建立ASP.NET 網頁程式設計.
第1章 程式語言與Visual Basic的基礎
C# 程式設計 第一部分 第1-4章 C# 程式設計 - 南華大學資管系.
第一章 認識Visual C 環境架構 1-1 認識Visual C Visual Studio 概觀
Microsoft .NET 第4組 十月15, 2002 B 陳東傑 B 蔣佳勳
Lotus Domino R7 Designer
CH11.
BizTalk Server 2004.
C#程序设计 c# programming 泛型 C#程序设计课程组.
建立VB.NET應用程式 資管系 助理教授 詹曉苓.
陈 峦 副教授 研究院大楼316# 电子科技大学 能源科学与工程学院
Chapter 1 用VC++撰寫程式 Text book: Ivor Horton.
課程名稱:資料庫系統 授課老師:李春雄 博士
第16章 Windows Form與資料繫結 16-1 資料繫結的基礎 16-2 在專案新增資料來源 16-3 使用資料來源建立單筆編輯表單
第 14 章 預存程序.
南华大学计算机学院 软件工程系 QQ讨论群:
第8章 列舉器與集合 注意: 本投影片僅供本書上課教師使用,非經同意請勿上網轉載或供拷貝.
DEV 331 深度探索 Microsoft Visual C# 2.0
第16章 VB.NET物件導向與.NET Framework
Ch13 集合與泛型 物件導向程式設計(2).
課程名稱:資料庫系統 授課老師:李春雄 博士
第20章 LINQ 資料查詢技術 注意: 本投影片僅供本書上課教師使用,非經同意請勿上網轉載或拷貝.
SQL Server 2000 数据库入门.
JAVA程序设计 第5章 深入理解JAVA语言----补充.
C++ with Managed Extensions
課程名稱:資料庫系統 授課老師:李春雄 博士
鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所
第三章:包   包(package)是一个可以将相关对象存储在一起的PL/SQL结构。包包含了两个分离的部件------包说明(specification)和包主体(body)。每个部件都单独被存储在数据字典中。包只能存储在数据库中,不能是本地的。除了可以将相关对象作为一组存在一起以外,包也是十分有用的,因为它们在依赖性方面的限制是比较小的。也有许多性能上的优点。
移动电子商务 第十二章 Windows Mobile应用案例 倚动软件工厂实验室.
程式設計 Visual Basic簡介 週次:1 建國技術學院 資管系 饒瑞佶 2003年9月17日.
第12章 VBA模块设计.
医院职工公费医疗系统.
Ch4.SQL Server 2005資料庫組成員元件介紹
Instructor:Po-Yu Kuo 教師:郭柏佑
第 8 章 VB.NET与数据库应用程序 本章主要内容: ADO.NET体系结构; VB.NET与SQL Server数据库的连接;
$10 可空类型.
Visual Basic.NET 程序设计语言课程内容
講師:戴志華 國立台灣大學電機工程研究所 Visual Basic 程式設計 講師:戴志華 國立台灣大學電機工程研究所.
第7章 繼承/多型/介面 注意: 本投影片僅供本書上課教師使用,非經同意請勿上網轉載或供拷貝.
微软云计算 --Windows Azure platform
利用 ASP.NET MVC 提升您的 Web 應用程式
劉崇汎 崑山科技大學 電腦與通訊系 DLL的建立與引用 劉崇汎 崑山科技大學 電腦與通訊系
第五章 介面/集合/泛型 注意: 本投影片僅供本書上課教師使用,非經同意請勿上網轉載或供拷貝.
橫跨電腦、手機與軟體的全方位端點管控解決方案
CS, ZJU 4/18/2019 Chapter 7 数据库.
21世纪高职高专规划教材 C#语言程序设计 李继武 彭德林 主 编 张 珑 赵 松 周建辉 副主编
ERWin简介 目前流行的数据库建模工具 PowerDesigner Rose ERwin
DEV342 Visual Basic 2005: 应用程序框架 和高级语言特性
C# 匿名委派 + Lambda + Func 建國科技大學 資管系 饒瑞佶.
数据库应用技术 天津电大 翟迎建.
Windows Workflow Foundation CON 230
Presentation transcript:

卢斌 Software Development Engineer Microsoft Corporation .NET框架2.0新特性综述 卢斌 Software Development Engineer Microsoft Corporation

BCL 新功能 Serial port Compression Strongly typed resources Console support Threading Diagnostics Networking 。。。

演 示 Strongly Typed Resources

Generics “泛型” C# public class List { private object[] elements; private int count; public void Add(object element) { if (count == elements.Length) Resize(count * 2); elements[count++] = element; } public object this[int index] { get { return elements[index]; } set { elements[index] = value; } public int Count { get { return count; } public class List<T> { private T[] elements; private int count; public void Add(T element) { if (count == elements.Length) Resize(count * 2); elements[count++] = element; } public T this[int index] { get { return elements[index]; } set { elements[index] = value; } public int Count { get { return count; } List<int> intList = new List<int>(); intList.Add(1); // No boxing intList.Add(2); // No boxing intList.Add(“3"); // Compile-time error int i = intList[0]; // No cast required List intList = new List(); intList.Add(1); intList.Add(2); intList.Add(“3"); int i = (int)intList[0]; List intList = new List(); intList.Add(1); // Argument is boxed intList.Add(2); // Argument is boxed intList.Add(“3"); // Should be an error int i = (int)intList[0]; // Cast required

Generics “泛型” 为什么要Generics? VB, C#, MC++ 编写和运用 generics Generics国际标准化 编译时类型验证 高性能 (不用装箱box, 不用转换downcasts) 减少代码累赘 (typed collections) VB, C#, MC++ 编写和运用 generics Generics国际标准化

Generics in VB VB Dim intList As New List(Of Integer) Public Class List(Of ItemType)      Private elements() As ItemType      Private elementcount As Integer      Public Sub Add(ByVal element As ItemType)           If elementcount = elements.Length Then Resize(elementcount * 2)           elements(elementcount) = element           count += 1      End Sub      Public Default Property Item(ByVal index As Integer) As ItemType           Get               Return elements(index)           End Get           Set (ByVal Value As ItemType)               elements(index) = Value           End Set      End Property      Public ReadOnly Property Count As Integer               Return elementcount           End Get End Class Dim intList As New List(Of Integer) intList.Add(1)           ‘ No boxing intList.Add(2)           ‘ No boxing intList.Add(“3")     ‘ Compile-time error Dim i As Integer = intList(0)  ’ No cast required

Generics in C++ C++ generic<typename T> public ref class List {    array<T>^ elements;    int count; public:    void Add(T element) {       if (count == elements->Length) Resize(count * 2);       elements[count++] = element;    }    property T default [int index] {       T get() { return elements[index]; }       void set(T value) { elements[index] = value; }    property int Count {       int get() { return count; } }; List<int>^ intList = gcnew List<int>(); intList->Add(1);           // No boxing intList->Add(2);           // No boxing intList->Add(“3");     // Compile-time error   int i = intList[0];        // No cast required

基础类库泛类 (Generics in BCL) System.Collections.Generic classes List<T> Dictionary<K, V> Stack<T> Queue<T> System.Collections.Generic interfaces IList<T> IDictionary<K, V> IDictionary<K, V> ICollection<T> IEnumerable<T> IEnumerator<T> IComparable<T> IComparer<T> Nullable(Of T) EventHandler<T> Dim intVal as Nullable(Of Integer) = 5 If intVal.HasValue Then ‘ checks for a value delegate void EventHandler<T>(Object sender, T e) where T : EventArgs;

提高 CLR 性能 长远目标: CLR性能指标与非托管本机代码一致 NGEN 减少多个托管进程的marginal cost 减少托管应用程序起动时间和工作集 NGEN 将 IL 编译成本机代码, 然后存盘 好处: 无需反复将 IL 编译成本机代码, 类的布局也已定型, 起动时间更短 CLR 2.0:显著地减少了private, non-shareable工作集 ngen install, ngen update, ngen /queue

使.NET框架成为更快的编程平台 提高现有API的性能 降低应用程序域(AppDomain)开销,应用程序域之间的方法调用 (加快 ~1.1倍-50倍) 委托(delegate)创建 (~10倍) 和调用 (~2倍) UTF8Encoding: translation (~2.5倍) 新的高性能 API 更快的资源查找API Lightweight CodeGen: 只生成关键代码 (与 Reflect Emit 对比)

演 示 TryParse

走向 64 位 64 位 Windows 服务器和工作站 支持 WoW64 VS: 作为32位应用程序运行 支持 IA64 和 X64 (AMD64) Windows Server 2003 SP1和未来的64 位 Windows Client 支持 WoW64 32位应用程序可在 64位机上运行 CLR1.0 和1.1应用程序在 WoW64上运行 VS: 作为32位应用程序运行 可以开发, 调试和部署32位和64位应用程序 新的CLR 64位实时编译, 垃圾回收和程序调试服务

C# Compiler /platform: PE32+ YES NO ILONLY 64bit NO WOW64 YES YES NO 32BITREQUIRED C# Compiler /platform: <AnyCPU>: ILONLY, NOT 32BITREQUIRED <x86>: 32BITREQUIRED <Itanium> or <x64>: PE32+

演 示 Space Invaders

CLR安全功能 支持新的加密服务(cryptography) DPAPI (Data Protection API) 支持托管ACL 支持 PKI and PKCS7 支持 XML 加密 更好地支持 X509 certificates DPAPI (Data Protection API) 支持托管ACL 提高应用程序安全 Permission 计算器 (PermCalc) Debug-In-Zone

演 示 SecureString

RAD程序调试 编辑-继续能力 (Edit and Continue) Display Attributes 控制调试器显示 允许的编辑: (例子) 给类加新的private字段 给类加新的private非虚拟方法 改写方法内的代码 不允许的编辑: (例子) 除去字段或方法 编辑泛类 (generics) 序列化(Serialization)不认知新的字段 Display Attributes 控制调试器显示

SQL Server 集成 将开发工具 Visual Studio 与数据管理平台 SQL Server 集成在一起 将中间层的.NET框架编程模式和开发技能应用到数据层 用托管代码写 Stored Procedures, Triggers, data types CLR安全系统(类型安全和代码访问安全)

定义 Location.Distance() SQL CLR 功能 VB, C#, … Build 文件集: geo.dll VS .NET 项目 SQL 数据: create assembly … create function … create procedure … create trigger … create type … 定义 Location.Distance() SQL Server SQL Server 承载 CLR SQL Queries: SELECT name FROM Supplier WHERE Location::Distance ( @point ) < 3

Sql 编程模式 分割字符串 (Splitting a string) T-SQL 老方法 (T-SQL)…. declare @str varchar(200) select @Str = 'Microsoft Corporation|SQL Server|2003|SQL-CLR|2002-08-20|11:32:00|Document|3.b.3' SELECT substring(@Str + '|', 0 + 1, charindex('|', @Str + '|', 0 + 1) - 0 - 1 ), substring(@Str + '|', charindex('|', @Str + '|') + 1, charindex('|', @Str + '|', charindex('|', @Str + '|') + 1) - charindex('|', @Str + '|') - 1 ), substring(@Str + '|', charindex('|', @Str + '|', charindex('|', @Str + '|') + 1) + 1, charindex('|', @Str + '|', charindex('|', @Str + '|', charindex('|', @Str + '|') + 1) + 1) - charindex('|', @Str + '|') + 1) - 1 ), charindex('|', @Str + '|') + 1) + 1) + 1, charindex('|', @Str + '|') + 1) + 1) + 1) - charindex('|', @Str + '|') + 1) + 1) - 1 ), charindex('|', @Str + '|') + 1) + 1) + 1) + 1, charindex('|', @Str + '|') + 1) + 1) + 1) + 1) - charindex('|', @Str + '|') + 1) + 1) + 1) - 1 ), charindex('|', @Str + '|') + 1) + 1) + 1) + 1) + 1, charindex('|', @Str + '|') + 1) + 1) + 1) + 1) + 1) - charindex('|', @Str + '|') + 1) + 1) + 1) + 1) - 1 ), charindex('|', @Str + '|') + 1) + 1) + 1) + 1) + 1) + 1, charindex('|', @Str + '|') + 1) + 1) + 1) + 1) + 1) + 1) - charindex('|', @Str + '|') + 1) + 1) + 1) + 1) + 1) - 1 ), charindex('|', @Str + '|', charindex('|', @Str + '|', charindex('|', @Str + '|') + 1) + 1) + 1) + 1) + 1) + 1) + 1, charindex('|', @Str + '|') + 1) + 1) + 1) + 1) + 1) + 1) + 1) - charindex('|', @Str + '|') + 1) + 1) + 1) + 1) + 1) + 1) - 1 ) declare @str varchar(200) select @Str = 'Microsoft Corporation|SQL Server|2003|SQL-CLR|2002-08-20|11:32:00|Document|3.b.3' charindex('|', @Str + '|', 0 + 1) - 0 - 1 ), substring(@Str + '|', 0 + 1, SELECT substring(@Str + '|', charindex('|', @Str + '|') + 1, charindex('|', @Str + '|') + 1) - charindex('|', @Str + '|', charindex('|', @Str + '|') - 1 ), charindex('|', @Str + '|', charindex('|', @Str + '|', charindex('|', @Str + '|') + 1) + 1, substring(@Str + '|', charindex('|', @Str + '|', charindex('|', @Str + '|') + 1) + 1) - charindex('|', @Str + '|') + 1) - 1 ), charindex('|', @Str + '|') + 1) + 1) + 1, charindex('|', @Str + '|') + 1) + 1) + 1) - charindex('|', @Str + '|') + 1) + 1) - 1 ), charindex('|', @Str + '|') + 1) + 1) + 1) + 1, charindex('|', @Str + '|') + 1) + 1) + 1) + 1) - charindex('|', @Str + '|') + 1) + 1) + 1) - 1 ), charindex('|', @Str + '|') + 1) + 1) + 1) + 1) + 1, charindex('|', @Str + '|') + 1) + 1) + 1) + 1) + 1) - charindex('|', @Str + '|') + 1) + 1) + 1) + 1) - 1 ), charindex('|', @Str + '|') + 1) + 1) + 1) + 1) + 1) + 1, charindex('|', @Str + '|') + 1) + 1) + 1) + 1) + 1) + 1) - charindex('|', @Str + '|') + 1) + 1) + 1) + 1) + 1) - 1 ), charindex('|', @Str + '|', charindex('|', @Str + '|', charindex('|', @Str + '|') + 1) + 1) + 1) + 1) + 1) + 1) + 1, charindex('|', @Str + '|') + 1) + 1) + 1) + 1) + 1) + 1) + 1) - charindex('|', @Str + '|') + 1) + 1) + 1) + 1) + 1) + 1) - 1 )

Sql 编程模式 分割字符串 (Splitting a string) VB 新方法… Public Shared Sub SplitString() Dim s As String s = "Microsoft Corporation|SQL Server|2003|SQL-CLR|2002-08- 20|11:32:00|Document|3.b.3" Dim myArray() As String = Split(s, "|") End Sub

更多资源 MSDN Dev Center GotDotNet Microsoft Technical Communities http://msdn.microsoft.com/developercenters/ GotDotNet http://www.gotdotnet.com Microsoft Technical Communities http://www.microsoft.com/communities/default.mspx CLR Application Compatibility Lab www.gotdotnet.com/team/changeinfo/compatibility/

Your Feedback is Important!