1. 程式人生 > >Five Great .NET Framework 4.5 Features (五大特性) [譯].Net 4.5 的五項強大新特性

Five Great .NET Framework 4.5 Features (五大特性) [譯].Net 4.5 的五項強大新特性

[譯].Net 4.5 的五項強大新特性

 
本文原文: Five Great .NET Framework 4.5 Features
譯者: 冰河魔法師

目錄

介紹

微軟的.Net 4.5框架已經發布了差不多一年了,和其他微軟釋出的產品有類似的缺乏溝通的問題,這個產品中只有一到兩個特性是開發者們所知道的,剩下的那些直到最後都只能是在MSDN上面的一些簡單文件而已。

比如說,當你問一個.Net程式設計師在.Net4.5中究竟有什麼樣的更新,他們多半會回答你說async和await(至少我周圍的朋友是這樣回答的)

當然,要想知道所有的特性點是非常困難的,畢竟有些特性在你的工作範圍內一點都不涉及的情況下看起來好像也沒什麼用。

所以在這篇文章裡,我選擇了五個我最喜歡的特性來介紹。重申一下,我最喜歡的特性不一定是你最喜歡的,但是我在選擇的時候已經儘量考慮選擇大部分.Net程式設計師都會用到的,我希望我的文章能夠達到這個期望。

注意:這篇文章討論的新特性僅限於核心庫(.Net 4.5 Core),不會涉及 ASP.NET, WCF, WPF, WWF等。

特性一:async和await

這個特性被大量的宣傳過,而且幾乎每個.Net講師都會提及它,不過它依舊是我最愛的新特性,不用急,你馬上就能知道為什麼我這麼喜愛它了。

async await
是一對標記符,可以用來標記當一個任務(執行緒)完成後將返回到哪裡。

上面這句話有點拗口,所以我們還是一起來嘗試用實際的程式碼來理解這句話。

首先我們來看看下面這段程式碼的執行步驟:

  1. main函式啟動後,呼叫了Method()方法
  2. Method()方法裡面用Task啟動了一個LongTask函式(內容為等待10秒)
  3. 啟動LongTask後會立即返回並執行Method()方法中的剩餘程式碼。換句話說,啟動多執行緒(Task.Run)後,LongTask在執行,而Method()方法中剩餘的程式碼也能被執行

接下來我們希望第三步執行的行為變化一下,我們希望在執行完LongTask()後才回到Method()方法繼續執行剩餘的程式碼。這裡我們使用asyncawait關鍵字來實現上述行為。

這裡有三點需要注意的地方:

  1. asyncawait是成對出現的,獨立是無法使用的
  2. async是標記方法的,這個標記只是指示出該方法中將包含await關鍵字
  3. await關鍵字標記了任務執行結束後需要返回到的位置,所以你常常會將該關鍵字與Task類聯用。

下面這幅圖是將我們之前討論過的程式碼使用asyncawait改造過後的版本,除了第三步是在第二步執行完成後執行的外,其他部分都是和以前一樣的。簡單來說就是隻會在任務LongTask執行完成後才會回到Method()中繼續執行。

現在你已經瞭解了asyncawait,我來問一個問題權當家庭作業吧:使用Task.WaitTask.ContineWith方法也可以達到同樣的效果,不過他們有什麼差別呢?

特性二:Zip壓縮

Zip格式是現在接受程度最高之一的壓縮檔案格式。幾乎所有作業系統都支援操作該格式。

在以前的.Net版本中都沒有內建對Zip壓縮功能的支援,所以通常情況開發人員都會使用第三方的類似於DotnetZip之類的元件來達到該效果。不過在.Net4.5中,Zip壓縮格式已經被內建到框架中去了,在System.IO.Compression名稱空間中。

要使用它,我們就先引用一下兩個名稱空間:

  • System.IO.Compression.FileSystem
  • System.IO.Comptession

接下來將其引入程式碼:

1 using  System.IO.Compression;

如果你想將一個資料夾中的所有檔案都打包進來,就使用CreateFromDirectory方法:

1 ZipFile.CreateFromDirectory( @"D:\data" , @"D:\data.zip" );

如果你想解壓,可以使用ExtractToDirectory方法:

1 ZipFile.ExtractToDirectory( @"D:\data.zip" , @"D:\data\unzip" );

特性三:正則表示式執行超時

正則表示式是做字串類驗證的最好方式,如果你是第一次接觸正則表示式,推薦你看一段視訊,但是標準的正則表示式邏輯卻會給黑客們留下DoS(拒絕服務)攻擊的可能性,我接下來詳細的說明會讓你明白這是為什麼。

假如我們有個正則表示式^(\d+)$,這個正則表示式希望這個字串裡只包含數字。你可以觀察正則表示式符號圖(Regex Symbolic Diagram)來了解正則表示式是如何被計算的。如果我們要驗證字串123456X,將會有6條路徑來驗證,如下圖:

但是如果我們多加一個數字進去,將會變成7條路徑。換句話說,隨著字串長度的增長,正則表示式將會花掉更多的時間來計算,再換句話說,計算時間和字串長度是成線型比例的。

我們將之前定義的正則表示式變成更復雜的^(\d+)+$,你將看到正則表示式的計算過程變得更加複雜,如果我們試圖驗證字串123456X,將會計算32條路徑,只要你將字串加長一個字元,將會計算64條路徑

換句話說,計算時間將會隨著字串的增加而成倍增加。

現在你有可能會問,這個有什麼關係呢?這種超長的計算時間很有可能會被黑客發現來做DoS攻擊,他們只需要向你的伺服器請求一個超長的字串要驗證,你的伺服器將會一直等在那裡。

當然,解決這個問題的最佳方案就是在用正則表示式做驗證的時候設定一個超時時間。在.Net4.5中就有這個功能,像如下程式碼中那樣就可以。從此之後,哪怕使用者發來了惡意字串,我們的程式也不會卡死在那裡。

1 2 3 4 5 6 7 8 9

相關推薦

Five Great .NET Framework 4.5 Features (五大特性 [].Net 4.5強大特性

[譯].Net 4.5 的五項強大新特性   本文原文: Five Great .NET Framework 4.5 Features 譯者: 冰河魔法師 目錄 介紹 特性一:async和aw

搞懂.NET Framework 歷史版本(2017年

最近被.NET平臺各種名詞、以及各種版本弄得有些疑惑,開發和部署,對於開發平臺版本選擇是個基本問題,因此,花了些時間,學習彙總了有關.NET版本演進的歷史。 .NET簡介 這個平臺相信我們都知道,不過隨著技術發展,現在的.NET平臺也今非昔比。 .NET平臺類似J

asp.net -mvc框架復習(1-ASP.NET網站開發概述

頁面設計 對象 ado 數據庫開發 sqlserve 網站 rip ado.net 面向對象 1.網站開發的基本步驟: 2.網站開發的需要的知識結構 (1)網站開發前臺頁面技術 頁面設計:HTML 、CSS+DIV 頁面特效:JavaScript、jQery (2)

.NET Framework 4.5五大特性

http://www.itstrike.cn/Question/10777f22-b683-45ee-a957-c38368823a01.html 介紹 從.NET4.5釋出到現在已經有一年多了。但問題是針對最近微軟釋出的版本資訊中,大部分的.NET開發人員所討論交流的只是其中的一兩個特

Microsoft .NET Framework 4.5.2 (Offline Installer)

com 2012 r2 install installer frame load ram .aspx exe Microsoft .NET Framework 4.5.2 (Offline Installer) for Windows Vista SP2, Windows

IIS 安裝了.net framework 4.0/4.5 卻找不到相應應用程序池

ive framework 在哪裏 2.0 backward repl new es2017 com 通常情況下是因為沒註冊造成的,有些安裝包會自己幫你註冊上有些不會,感覺略坑。 註冊方法:在計算機中點擊 開始菜單–>運行 拷貝以下內容運行一下即可。

WPF 實現INotifyPropertyChanged .Net Framework 4.5

hang nta not void one using style call str   自己動手寫了一個基類來實現INotifyPropertyChanged接口,以後可以直接使用。 1 using System.ComponentModel; 2

MVC .net framework 4.5 發布 瀏覽時顯示目錄

mvc 發布 瀏覽 顯示目錄問題:在IIS發布的mvc網站,瀏覽時顯示為網站目錄。 剛開始沒有註意以為mvc程序是4.0 後發現配置文件中目標框架為4.5 <system.web> <compilation targetFramework="4.5" /> <ht

由.net framework 3.5切換.net framework 4.5遇到的問題

size color none width get inf font 進行 都是 背景 由於server 2012 r2安裝.net framework3.5需要安裝光盤。Scott提出需要把舊項目.net framework升級。不再需要安裝.net framework3

安裝mysql時提示This application requires .NET framework 4.5.2的解決辦法

安裝mysql社群版的時候報這個錯:this application requires .NET Framework 4.5.2  解決方法:到這個地址https://www.microsoft.com/en-us/download/details.aspx?id=42642

WIN10 安裝 ReportBuilder3.msi 提示需要 .NET Framework 4.5

win+r鍵調出執行視窗輸入regedit開啟登錄檔,找到HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/NET Framework Setup/NDP/v4/Client 右鍵 彈出選單中選 許可權 在彈出視窗中選中administrators,我們可以看到此管理員帳戶只有只讀許

報錯:Win10 這臺計算機中已經安裝了 .NET Framework 4.5.2/4.6.1/4.7.1等等任何版本 或版本更高的更新

Win10系統自帶的.net framework版本為4.7,自己安裝.NET Framework 4.5.2時會提示:這臺計算機中已經安裝了 .NET Framework 4.5.2 或版本更高的更新。 解決方法 下載安裝.net framework的開發版或者說開發包。開發版地址h

.net framework 4.5 +steeltoe+ springcloud(一 實現服務註冊功能

首先得先了解並熟悉一下springcloud,並手動去搭建一個服務中心,也可參照eurake官方示例。 如果是.net core的話,實現註冊也是沒有問題的,網上教程很多,可自行度娘。 最難的就是基於Framework的專案怎麼實現註冊,跟core的實現方式區別還是蠻大的

1.關於安裝Microsoft .NET Framework 4.5\ 4.0 安裝不了的解決辦法

在安裝Microsoft .NET Framework 4.5\4.0 時當出現錯誤程式碼 HRESULT 0xc8000222原因:windows update的臨時檔案損壞 建議重新命名該資料夾時使用以下解決辦法:步驟 1.開始----- 執行------- cmd

.net framework 4.5 +steeltoe+ springcloud(二 實現服務發現與呼叫功能

首先,寫一個簡單的可被呼叫的服務註冊到服務中心,我們這命名為java-service,用的是IDEA建立一個spring boot專案,選擇spring client型別。 修改application.properties,配置服務中心地址和服務埠號: spring.application.n

安裝.NET FRAMEWORK 4.5安裝進度條回滾之後發生嚴重錯誤 程式碼0x80070643

安裝.NET FRAMEWORK 4.5安裝進度條回滾之後發生嚴重錯誤  程式碼0x80070643 注意: 回滾完成後,不要急著點選完成 檢視日誌:用IE瀏覽器開啟,最後紅色部分就是要檢視的部分,

首酷12306訂票助手開發完成,基於 .NET FRAMEWORK 4.5 開發,軟體完全免費使用。

1、支援自動查詢,不放過每一張餘票. 2、支援快捷搶票,發現餘票自動彈出驗證碼輸入介面,輸入驗證碼即可提交訂單,方便快捷. 3、查詢餘票音樂、氣泡框提示,工作刷票兩不誤. 4、車次查詢條件、快捷搶票設定軟體會自動記住,下次登陸不需要再次輸入. 5、雙擊餘票列表,即可開啟訂票操作,訂票操作簡單、快捷

Windows10 解決“裝了 .NET Framework 4.5.2/4.6.1/4.7.1等等任何版本 或版本更高的更新”問題

ram com sof 系統 4.6.1 net 安裝 targe blank ========================================================= 系統自帶的.net framework版本為4.7,自己安裝.N

sharepoint 2013 安裝office web apps 2013 with sp1時提示沒有安裝microsoft.net framework 4.5

今天在window server 2012 R2作業系統伺服器中,安裝office web apps 2013 with sp1的時候,遇到一個問題: setup is unable to proceed due to the following error

window 10 安裝 Net Framework 3.5 報錯 0x800F081F 解決

-type 程序 下載地址 ros select span lib href detail 把普通程序安裝成服務用到一個名為winex的小程序,下載安裝net3.5,安裝報錯 0x800F081F 微軟官方有好多人有相似問題,本機通過以下方式成功解決: 下載 Windo