来看看.NET 4.5的新功能
2013-12-21 22:42
423 查看
微软的.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中应该可以吧。
同步方式:
传统的异步方式(Windows Phone上的网络请求仍在使用):
.NET 4.5以后新增的简单异步方式(Windows 应用商店应用所有I/O方法和Windows Phone 8应用部分方法可用):
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):
枚举(Enum):
①用ZipFile创建、提取和打开压缩文档
首先需要添加程序集System.IO.Compression.FileSystem的引用,然后using System.IO.Compression;
创建压缩文档方法:CreateFromDirectory,共有3个重载,最基本的包括输入目录路径和输入压缩文件名,后面两个重载提供了压缩级别、压缩编码、是否包含基本目录的支持。
例如:对E:\apk文件夹进行压缩,压缩文件存至E:\apk.zip,使用最高级别,也是时间最长的压缩方式,包含基本目录
(原文件夹(左)和生成的压缩文件(右),由于安卓安装包Apk本身就是压缩文件,所以大小只减少了10MB)
②解压缩:
直接上代码吧,就不用截图了
③获取压缩文件中的某一个文件
④使用ZipArchive手动构造Zip压缩文件
例:仅选取Java打包好的.jar文件进行压缩,并在zip中创建一个JavaJar的目录
.NET Framework 4.5和4.5.1新增的内容还有很多,感觉比较实用的就是上面两个,更多详情请参见MSDN:http://msdn.microsoft.com/zh-cn/library/ms171868(v=vs.110).aspx
感谢您的阅读,转载请注明出处:http://blog.csdn.net/yuanguozhengjust/article/details/17469625
最新的.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):
类 | 说明 | |
---|---|---|
DeflateStream | 提供使用 Deflate 算法压缩和解压缩流的方法和属性。 | |
GZipStream | 提供用于压缩和解压缩流的方法和属性。 | |
ZipArchive | 表示压缩文档格式的压缩文件包。 | |
ZipArchiveEntry | 表示压缩文档中的压缩文件。 | |
ZipFile | 提供静态方法,用于创建、提取和打开压缩文档。 | |
ZipFileExtensions | 为 ZipArchive 和 ZipArchiveEntry 类提供扩展方法。 |
枚举 | 说明 | |
---|---|---|
CompressionLevel | 指定一个值压缩操作是否基础速度或压缩范围。 | |
CompressionMode | 指定是否压缩或解压缩基础流。 | |
ZipArchiveMode | 以指定值与 ZIP 存档项。 |
首先需要添加程序集System.IO.Compression.FileSystem的引用,然后using System.IO.Compression;
创建压缩文档方法:CreateFromDirectory,共有3个重载,最基本的包括输入目录路径和输入压缩文件名,后面两个重载提供了压缩级别、压缩编码、是否包含基本目录的支持。
例如:对E:\apk文件夹进行压缩,压缩文件存至E:\apk.zip,使用最高级别,也是时间最长的压缩方式,包含基本目录
static void CreateZIPFromDirectory() { ZipFile.CreateFromDirectory("E:\\Apk", "E:\\apk.zip", CompressionLevel.Optimal, true); }
(原文件夹(左)和生成的压缩文件(右),由于安卓安装包Apk本身就是压缩文件,所以大小只减少了10MB)
②解压缩:
直接上代码吧,就不用截图了
static void Extract() { ZipFile.ExtractToDirectory("E:\\apk.zip", "E:\\temp"); }一行就搞定,非常的简单!
③获取压缩文件中的某一个文件
static void FetchFileFromZip(string fileName) { using (ZipArchive zip = ZipFile.OpenRead("E:\\apk.zip")) //用了只读的方式 { foreach (var item in zip.Entries) //遍历所有文件 { if (item.Name == fileName) //文件名和参数给定相同 { using (Stream stream = item.Open()) { //处理文件流,可以复制啊、发送啊。。。。 } } } } }
④使用ZipArchive手动构造Zip压缩文件
例:仅选取Java打包好的.jar文件进行压缩,并在zip中创建一个JavaJar的目录
static void Main(string[] args) { CreateZIPByLimitedType("D:\\Java", "*.jar"); } static void CreateZIPByLimitedType(String PathName, String extension) { IEnumerable<String> files = Directory.EnumerateFiles(PathName, extension); //获取指定目录下的文件名 using (ZipArchive zip = ZipFile.Open("E:\\test.zip", ZipArchiveMode.Create)) //创建压缩文件 { foreach (var filename in files) //遍历文件 { var entryName = Path.Combine("JavaJar", Path.GetFileName(filename)); //设置好路径 zip.CreateEntryFromFile(filename, entryName); //加入 } } }通过使用流,可以使用以流作为输入的ZipArchive构建Web服务器,以便通过数据库中存储的内容动态创建.zip 存档,或将结果直接写入到响应流中,而不是写入到磁盘中。
.NET Framework 4.5和4.5.1新增的内容还有很多,感觉比较实用的就是上面两个,更多详情请参见MSDN:http://msdn.microsoft.com/zh-cn/library/ms171868(v=vs.110).aspx
感谢您的阅读,转载请注明出处:http://blog.csdn.net/yuanguozhengjust/article/details/17469625
相关文章推荐
- .NET4.5新功能:异步文件 I/O
- 【转】.NET 4.5 使用async和await关键字调用异步方法
- .NET 4.0新功能介绍:In Process Side By Side
- 看看.NET 4.0 都有些什么?
- .NET 4.5任务并行库改动与指南
- 返璞归真 asp.net mvc (11) - asp.net mvc 4.0 新特性之自宿主 Web API, 在 WebForm 中提供 Web API, 通过 Web API 上传文件, .net 4.5 带来的更方便的异步操作
- [AutoCAD2008新功能介绍3]在AutoCAD中使用.NET来添加一个新的缩放比例
- .net 4.5的新特性
- .Net 4.5 Async & Await 用法
- 代码演示 .NET 4.5 自带的 ReadonlyCollection 的使用
- .net 4.5的异步编程
- .NET 4.5新关键字async和await:
- .Net 2.0 新功能:重构(Refactoring)
- .net 4.5 新特性 async await 一般处理程序实例
- .Net 4.5可执行程序OutOfMemory
- C# 5.0 与 .Net 4.5 学习(四)SpinLock自旋锁&WaitHandle
- .Net 2.0 新功能:属性访问器可访问性(Property Accessor Accessibility)
- .Net 4.5 异步编程初试(async和await)
- .NET 4.0新功能介绍:In Process Side By Side
- 实现虚拟模式的动态数据加载Windows窗体DataGridView控件 .net 4.5 (一)