Visual Studio 2008开发新特性系列课程(5):.NET Framework 3.5 新功能介绍

1.概要
? VS2008内置对.Net Framework3.5框架的支持..Fraework3.5框架里面提供了大量的激动人心的新功能.本次课程将主要讲述.Fraework3.5里增强的新功能.


2..NET Framework 3.5 新特性
? 程序集的增加,新库的增加,代码分为red bits 和green bits
red bits----包括以前net2.0和3.0中提供的所有库
green bits—新的库内容(基于red bits基础上开发,尽量不改变red bits,所以向后兼容)


? .NET Framework 实现对大整数的支持。
-----新的BigInteger 类型,该类型使您可以使用任意大小的整数,直至可以达到内存的极限。


? 高性能集合
-----新的HashSet 类
-----System.Collections.Generic
-----标准的集合方法(例如,添加、删除和包含)并提供了多种集合操作(包括,并集、交集和对称差)

 HashSet<int> set1 = new    HashSet<int>();
            set1.Add(1);
            set1.Add(3);
            set1.Add(5);
            set1.Add(3);
// set1 already contains 3; it isn't added twice
 // set1 contains 1,3,5

            HashSet<int> set2 = new HashSet<int>(new int[] { 2, 4, 6 });
            // set2 contains 2,4,6

            set2.UnionWith(set1); //集合运算,并集
     set2.IntersectWith (set1); //集合运算,交集


? 管道-匿名管道
-----已提供了对.NET Framework 的匿名和命名管道的支持。
---- 在System.IO.Pipes 命名空间。(可以用于不同进程的通信)
----- 匿名管道用于父进程和子进程之间的通讯。
-----这些单向管道未命名,并且必须在同一台计算机上本地使用。
-----管道用于在同一计算机或同一网络上的两个或多个进程之间实现进程间通讯(IPC)。
----- 命名管道提供的功能更多。
-----对于初学者而言,它们是全双工的,并且可以对网络使用。
-----命名管道支持单一名称、基于消息的通讯、异步I/O 以及模拟等的多个服务器示例。

服务端代码:
 using (NamedPipeServerStream pipeStream =  new NamedPipeServerStream("mypipe2"))
            {
                pipeStream.WaitForConnection();//等待连接
                using (StreamWriter sw = new StreamWriter(pipeStream))
                {
                    sw.AutoFlush = true;
                    sw.WriteLine(Console.ReadLine());
                    sw.WriteLine(Console.ReadLine());
                }
            }

客户端代码:
using (NamedPipeClientStream pipeStream =new NamedPipeClientStream("mypipe2"))
            {
                pipeStream.Connect();//请求连接
                using (StreamReader sr = new StreamReader(pipeStream))
                {
                    string temp;
                    while ((temp = sr.ReadLine()) != null)
                    {
                        Console.WriteLine(temp);
                    }
                }
            }
通过使用命名管道,客户端和服务器端的进程就可以直接通信。


? 改善了时区支持
---- System.TimeZoneInfo
---- 第一个类型是TimeZoneInfo。与其前辈TimeZone类型相比,TimeZoneInfo在时区方面提供了更好的支持,例如它能够枚举出储存于操作系统中的各个时区信息
String id = "Alaskan Standard Time";
TimeZoneInfo tzi = TimeZoneInfo.FindSystemTimeZoneById(id);


? DateTimeOffset
---- 在大多数情况下该类型将会作为传统DateTime类型的替代品使用。
---- 与DateTime只能保存本地和UTC时间不同的是,DateTimeOffset类型可以表示任何时区中的时间——只要指定该时区相对于UTC的偏移量即可。
DateTimeOffset now = DateTimeOffset.Now;
DateTimeOffset now2 = DateTime.Now;
DateTimeOffset now3 = new DateTimeOffset(DateTime.Now);

DateTime tvShowPremiere = new DateTime(2007, 6, 13, 8, 0, 0);
 DateTimeOffset tvShowPremiereLA = new DateTimeOffset(tvShowPremiere, new TimeSpan(-7, 0, 0));

 

? 高性能Socket API
---- 在.NET Framework 2.0 版本中,System.Net.Sockets 命名空间提供了一个几乎拥有Windows? WinSock Win32? API 的所有功能的Socket 类。该功能所属的类包含为托管代码开发人员设计的各种方法和属性。
---- 2.0 版本的Socket 类适合多种需要使用网络套接字的客户端应用程序,以及一些服务器和服务类型的应用程序。
---- 遗憾的是,。2.0 版本的Socket 类的主要问题是它不仅在分配必要的基础对象以便在大量套接字上同时保持I/O 操作时需要占用过多的CPU 循环,而且在执行单个套接字I/O 操作时也同样如此。
---- 新版本提供了另一个使用套接字上执行异步I/O 的方法模式。这种新模式并不要求为每个套接字操作分配操作上下文对象。
---- 封装操作上下文的是一个SocketAsyncEventArgs 对象,而不是IAsyncResult 对象。该应用程序创建并管理(甚至可以重复使用)SocketAsyncEventArgs 对象。


? P2P
---- System.Net.PeerToPeer 命名空间
---- System.Net.PeerToPeer 命名空间位于System.Net.dll 程序集中,它提供了轻松创建对等(P2P) 应用程序所需的核心构建基块。


? 新的GC方法
---- GCSettings.LatencyMode(可以指定垃圾回收的模式)
---- GC.Collect method


? 插件模式
主机--->主机视图--->主机适配器--->【IContract】<-----插件适配器<-----插件视图<-----插件
---- System.AddIn 命名空间
---- 构建可扩展的宿主应用程序
---- 宿主与其加载项之间的交互会经历下列三个主要阶段:发现、激活和生存期管理
---宿主和插件通过隔离边界彼此隔离。它们只引用各自的视图,因此可以获得用于通讯的约定的抽象层。此外,宿主/插件不能直接自我引用,因此可以相对隔离与其通讯的所有其他组件。
---- 宿主和插件通过隔离边界彼此隔离。它们只引用各自的视图,因此可以获得用于通讯的约定的抽象层。此外,宿主/插件不能直接自我引用,因此可以相对隔离与其通讯的所有其他组件。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值