来看看.NET 4.5的新功能

微软的.NET一向势头很猛,发展极快,比起上世纪末出现的Java,.NET可以说除了跨平台没有Java牛逼,其他方面处处比Java先进的多,尤其是针对微软的平台,包括最新的Windows 桌面/服务器操作系统、Windows Phone 8手机、Windows Azure、SQL Server等等。

最新的.NET Framework版本已经伴随着Microsoft Visual Studio 2013的发布,更新到4.5.1,该版本是对是对4.5的小更新,对于一代经典版本4.0的更新,4.5已经表现得十分明显,下来一起来看看.NET Framework 4.5的新功能。


总的来说,可以分为以下方面:

1.支持Windows 应用商店,即Windows 8 Metro(Modern UI)应用的开发

2.可移植类库,即开发同时支持Windows 应用商店和Windows Phone 8程序的类库

3.一些底层和核心功能上的更新,如:自动绑定程序集的重定向、性能提升、GC优化、大内存占用优化、UTF-16控制台支持、异步编程改进(async、await关键字)和调试、原生ZIP压缩支持等等

4.Resgen.exe(资源文件生成器)、Mpgo.exe(按托管配置文件优化工具),两个新工具。

5.并行计算更新

6.ASP.NET:支持WebSocket,以及新的System.Net.Http、System.Net.Http.Headers、System.Net.WebSockets和HttpListener类。

7.WPF、WCF、WF三大Windows框架的更新。


下来说几个比较重要的:

1.简化的异步I/O编程:

使用异步 I/O 有很多优点。 这有助于避免阻止 UI,并且可以减少操作系统需要使用的线程数。(来自MSDN Magazine 文章《.NET 4.5 基类库中的新增功能》作者.Immo Landwerth)

Windows Phone上的开发,很多函数都被设计成为异步方式,就是为了不阻塞UI线程,从而带给用户优良的用户体验。Node.js对于I/O的处理,也用到了非阻塞和异步的模式,从而减少资源消耗,实现超大规模并发。

这里举一个HTTP请求的例子,该例子方法可在Windows 应用商店程序开发中使用,很遗憾目前的Windows Phone 8中还不能使用,估计在Windows Phone 8.1中应该可以吧。

同步方式:

static void RequestWebAsync(String URL)
        {
            string ResponseStr = null;
            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(URL);
            WebResponse response = request.GetResponse();
            using (Stream stream = response.GetResponseStream())
            {
                StreamReader reader = new StreamReader(stream);
                ResponseStr = reader.ReadToEnd();
            }
            Debug.WriteLine(ResponseStr);
        }

传统的异步方式(Windows Phone上的网络请求仍在使用):

void RequestWebTraditional(String URL)
        {
            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(URL);
            request.BeginGetResponse(new AsyncCallback(GetResponse), request);
        }

        void GetResponse(IAsyncResult Result)
        {
            string ResponseStr = null;
            HttpWebRequest request = (HttpWebRequest)Result.AsyncState;
            HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(Result);
            using(Stream stream = response.GetResponseStream())
            {
                StreamReader reader = new StreamReader(stream);
                ResponseStr = reader.ReadToEnd();
            }
            Debug.WriteLine(ResponseStr);
        }

.NET 4.5以后新增的简单异步方式(Windows 应用商店应用所有I/O方法和Windows Phone 8应用部分方法可用):

async void RequestWebAsync(string URL)
        {
            string ResponseStr = null;
            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(URL);
            WebResponse response = await request.GetResponseAsync();
            using (Stream stream = response.GetResponseStream())
            {
                StreamReader reader = new StreamReader(stream);
                ResponseStr = await reader.ReadToEndAsync();
            }
            Debug.WriteLine(ResponseStr);
        }

2.System.IO.Compression 命名空间和ZIP文件支持

从.NET Framework 3.0起开始支持GZip格式的打包文档的读取和写入,但旧版本的System.IO.Compression的GZipStream往往不能用于处理普通 .zip 存档。

.NET Framework 4.5中新增的System.IO.Compression.ZipArchive使用了众所周知的zlib库,压缩支持明显提升,新类DeflateStream采用更高效、压缩比更高的算法,用于解决性能和压缩质量问题。压缩文件大小通常要比之前版本小。

Windows Phone 8还不能使用这个方法,但有相关的zlib的.NET实现,可自行编译Windows Runtime类库给Windows Phone使用,也可采用Silverlight SharpZiplib(http://slsharpziplib.codeplex.com)。

Windows 应用商店应用不可使用ZipFile静态类,但可以用ZipArchive进行相关操作。

来自MSDN的资料:

类(Class):

 
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值