本文章是由機器翻譯。

ASP.NET 5

介紹ASP.NET5 預覽

Daniel Roth

ASP.NET運作為 Microsoft.NET Framework 1.0,隨著Visual Studio2002年 2002 年發表。 這是進化的動態伺服器網頁(ASP) 帶來的物件導向設計、.NET 基類庫 (Bcl)、 更好的性能和更多。ASP.NET被為了方便開發人員用來編寫桌面應用程式來構建 Web 應用程式與ASP.NETWeb 表單。隨著互聯網的發展,新的框架添加到ASP.NET:MVC 2008 年、 2010 年,Web 頁和 Web API 那麼 SignalR 在 2012 年。 每個這些新的框架,從ASP.NET1.0 為基礎構建的基礎。

與ASP.NET5、ASP.NET是正在歪歪扭扭,就像 ASP 被重新定義到ASP.NET2002 年。 這個重塑帶來許多新的功能:

  • 全肩並肩的支援:ASP.NET5 個應用程式可以現在安裝在一台機器上而不會影響電腦上的任何其他應用程式。
  • 跨平臺支援:ASP.NET5 運行,是支援在 Windows、 Mac 和 Linux 上。
  • 雲就緒:診斷、 會話狀態、 緩存和配置等功能旨在本地和雲計算工作。
  • 更快的發展:中去除了生成步驟 ; 只是保存原始檔案並刷新瀏覽器和編譯自動發生。
  • MVC、 Web 頁面和 Web API:這些是所有合併在一起,簡化,概念的數目。
  • 靈活的主持:你現在可以承載整個ASP.NET5 應用程式在 IIS 上或在您自己的過程。

入門ASP.NET5 預覽

在這篇文章,我會給新的經驗概述ASP.NET開發團隊 — — 是我的一部分 — — 創造了用於ASP.NET5 和Visual Studio2015年預覽。與構建和運行 5ASP.NET應用程式的一般説明,請訪問 asp.net/vNext,在那裡你可以找到分步指南和其他文檔。此外,我們也發佈更新定期向 blogs.msdn.com/b/webdev。若要開始,請下載並安裝Visual Studio2015年預覽。

5ASP.NET運行時的概述

ASP.NET5 已重建從地面到支援構建現代 Web 應用程式和服務。它是開源的跨平臺和工程兩個前提中和在雲。ASP.NET5 是目前在預覽和正在積極開發在 GitHub (github.com/aspnet)。我會提供什麼是新的ASP.NET5 預覽和指標到哪裡,你可以瞭解更多的概述。

靈活的、 跨平臺運行時在其基礎上,ASP.NET5 基於一個新的靈活執行階段主機。它提供了靈活性,在三個不同的運行時環境之一上運行您的應用程式:

  1. Microsoft .NET Framework:您可以在現有的.NET Framework 上運行ASP.NET5 應用程式。這使您最大程度的相容性,現有的二進位檔案。
  2. .NET 核心:船舶作為一套的 NuGet 套裝程式可以包含您的應用程式的.NET framework 的重構的版本。與.NET 核心你得到真正的肩並肩版本支援和自由在您現有的基礎架構上使用最新的.NET 功能。請注意並不是所有的 Api 還可用在.NET 核心和現有一般需要重新編譯的二進位檔案在.NET 核心上運行。
  3. 一元:單聲道 CLR 使您能夠開發和 Mac 或 Linux 的設備上運行ASP.NET5 應用程式。更多的資訊,請參閱博客帖子,"開發ASP.NETvNext 應用程式在 Mac 上的"在 bit.ly/1AdChNZ

無論哪個 CLR 使用,ASP.NET5 利用一個通用的基礎結構,用於承載 CLR,並向應用程式提供各種服務。這種基礎設施稱為 K 運行時環境 (KRE)。雖然它是某種形態的"K"在 KRE (進貢到武士刀專案從何而來是個謎嗎?K 為瘋狂 Kool 嗎?),KRE 提供一切您需要承載並運行您的應用程式。

新的 HTTP 管道ASP.NET5 介紹了一種新的模組化 HTTP 要求管道,可以在您所選擇的伺服器上承載。你可以承載ASP.NET5 應用程式在 IIS 上.NET 浩然基於伺服器或您自己的進程中任何打開的 Web 介面上。因為你要挑出到底什麼中介軟體運行在您的應用程式的管道中,你可以用你需要以及利用裸金屬性能作為很少或盡可能多的功能運行。ASP.NET5 包括用於安全、 請求路由、 診斷程式和自訂中介軟體您自己設計的中介軟體。例如,下面是一個簡單的中介軟體實現來處理 X HTTP 方法重寫標題的:

app.Use((context, next) =>
{
  var value = context.Request.Headers["X-HTTP-Method-Override"];
  if (!string.IsNullOrEmpty(value))
  {
    context.Request.Method = value;
  }
  return next();
});

ASP.NET5 使用 HTTP 管道模型在許多方面類似于浩然模型的介紹與武士刀專案,但有幾個顯著的改善。像武士刀,ASP.NET5 支援浩然,但通過包括一個 HttpCoNtext 抽象,重量輕,使用方便,簡化了開發。

還有一個套裝程式的套裝軟體管理器已經改變了開發者認為有關安裝、 更新和管理依賴關係的方式。在ASP.NET中 5,你所有的依賴關係表示為包。NuGet 套裝程式是引用的單元。ASP.NET5 就容易以建造、 安裝和使用包從包飼料,工作與社區套裝程式套裝程式管理器節點 (NPM) 和涼亭。ASP.NET5 介紹了簡單 JSON 格式 (project.json) 管理 NuGet 包的依賴項並提供跨平臺的搭建基礎設施。Project.json 檔的示例所示圖 1 (更詳細的解釋,每個受支援的屬性,可以發現在 GitHub 上 bit.ly/1AIOhK3)。

圖 1 的示例 project.json 檔

{
  "webroot": "wwwroot",
  "version": "1.0.0-*",
  "exclude": [
    "wwwroot"
  ],
  "packExclude": [
    "**.kproj",
    "**.user",
    "**.vspscc"
  ],
  "dependencies": {
    "Microsoft.AspNet.Server.IIS": "1.0.0-beta1",
    "Microsoft.AspNet.Diagnostics": "1.0.0-beta1"
  },
  "frameworks" : {
    "aspnet50" : { },
    "aspnetcore50" : { }
  }
}

最好的 C# ASP.NET5 應用程式的設計時和運行時編譯處理使用託管的.NET 編譯器平臺 (代號為"羅斯林")。這意味著你將能夠利用最新的 C# 語言功能的同時還利用了記憶體中彙編,以避免不必要的磁片 I/O。 ASP.NET5 個專案都基於一個新的專案系統,動態編譯你的應用上--飛為您要用於編碼這樣就可以避免特定的生成步驟的中斷。這能給你提供.NET 和 C# 的力量的敏捷性和感覺的一種解釋語言。

內置的依賴注入所有 5ASP.NET應用程式都可以訪問常見的依賴注入 (DI) 服務,可説明簡化組成和測試。基於ASP.NET5 (MVC,Web API,那麼 SignalR 和身份) 的所有ASP.NET框架都利用這種共同的 DI 事務。時ASP.NET5 帶有一個簡約的控制反轉 (IoC) 容器來引導系統,您可以輕鬆地與您的選擇的容器替換那內置的 IoC 容器。

熟悉 Web 框架ASP.NET5 包括用於構建 Web 應用程式和服務,例如 MVC、 Web API、 Web 頁面 (即將在未來的版本中),那麼 SignalR 和身份的框架。每一種框架已經移植工作上新的 HTTP 要求管道和興建,是為了支援在.NET 框架、.NET 核心或跨平臺上運行。

今天,MVC、 Web API 和 Web 頁的現有實現共用許多概念和重複的抽象,但共用很少實際執行的方式。作為移植到ASP.NET5 這些框架的一部分,微軟決定採取將這些框架合併成一個統一的 Web 堆疊的重新審視。ASP.NETMVC 6 需要最好的 MVC、 Web API 和 Web 頁,並將它組合成一個單一的框架,用於構建 Web 使用者介面和 Web Api。這意味著從一個單一的控制器可以輕鬆地將視圖呈現為返回帶格式的資料,基於內容的談判。

除了統一,ASP.NETMVC 6 引入了一系列的新功能:

  • DI 的內置支援
  • 能夠從任何類創建控制器 — — 沒有所需的基類
  • 基於行動的請求調度
  • 查看元件 — — 一個簡單的替換,對孩子的行為
  • 路由的改進,包括簡化屬性路由
  • 非同步刷新點意見
  • 使用 @inject 視圖中注入伺服器和傭工的能力
  • ViewStart 繼承
  • 標記傭工

你可以找到更多的資訊和樣品在 github.com/aspnet/mvc

Web 表單上ASP.NET5,不可用,但仍然完全支援在.NET 框架上。那裡有很多重要的新功能,即將到 Web 表單在即將發佈的版本的.NET Framework 中,包括支援 HTTP 2.0、 非同步模型綁定和基於羅斯林的 CodeDom 提供程式。我們也正在等標記傭工使人想起在 MVC 6 中,Web 表單的各種功能和剃刀的其他改進。

Entity Framework

資料是許多應用程式的關鍵區段,而Entity Framework(EF) 是ASP.NET開發人員常用資料訪問選擇。雖然 EF7 並不特定于ASP.NET,這個新版本的 EFASP.NET5 中扮演不可或缺的作用。

EF7 使新的平臺 EF 廣泛應用於完整的.NET 框架為目標的用戶端和伺服器的應用程式。EF7 的一個主要重點是使 EF,在那裡.NET 開發常見的情況下在剩餘的平臺上使用。這些包括ASP.NET5、 Windows 應用商店和 Windows Phone 的應用程式,以及。基於網路的 Mac 和 Linux 應用程式。

對於 Windows Phone 和 Windows 應用商店應用程式,最初的目標是提供使用 EF 的本地資料訪問。SQLite 是最常見的資料庫的設備上的選擇,將主為 EF7 的設備上的本地資料存儲區。充分提供程式模型可用,雖然,所以可以也支援其他資料存儲區。

EF7 使新資料存儲 EF 部分明確掛鉤關聯式資料存儲,而很多 EF 提供的功能也是適用于很多非關聯式資料存儲。這種功能的示例包括更改跟蹤,LINQ和工作單元。EF7 將使目標非關聯式資料存儲,如微軟 Azure 表存儲的供應商。

我們沒有顯式試圖建立一個抽象層,隱藏你的目標的資料存儲區的類型。將由核心框架處理共同的模式/元件,適用于大多數的資料存儲。于特定類型的資料存儲區中特有的東西都可用作特定于提供程式的擴展。例如,允許您配置您的模型的模型產生器的概念將核心框架的一部分。然而,能力來配置一些設置,如串聯刪除外鍵約束將列為中關聯式資料庫提供程式的擴展。

EF7 是羽量級和可擴展 EF7 將會是一個羽量級,可擴展版本拉普遍提出了一些常用功能。此外,我們將能夠包含一些常用的請求的功能,那會很難實施 EF6 代碼庫,但可包括從 EF7 開始。

團隊將保持同樣的模式和概念你習慣于在 EF,除非有一個令人信服的理由,做些改變。你會看到相同的 DbCoNtext DbSet 為基礎的 API,但它將建在很容易就可以替代或擴展所需的構建基塊元件 — — 用於一些獨立的元件,在最近的 EF 版本中添加的相同模式。

更多資訊關於 EF7 EF7 的詳細資訊,請訪問"什麼是 EF7 所有關于"GitHub 頁在 aka.ms/AboutEF7。該頁面包含設計資訊,連結到博客文章和試用 EF7 指令。

ASP.NET命令列工具

核心ASP.NET5 原則之一是提供命令列的經驗之前我們建立模具經驗。這意味著幾乎所有的任務,你需要做一個 5ASP.NET應用程式可以從命令列。主要的理由是確保為那些利用 Mac 或 Linux 機器使用ASP.NET5Visual Studio沒有一個可行的選擇。

KVM 的第一個工具,您需要得到完整的命令列的經驗,ASP.NET5 為 K 版本管理器 (KVM)。KVM 命令列工具可以下載新版本的 KRE,讓您在它們之間切換。KRE 包含其他您可能需要使用的命令列工具。KVM 如何實現的以及如何得到它,取決於作業系統。你可以下載並通過運行中的相應命令來為您的平臺安裝 KVM github.com/aspnet/Home

一旦你有了 KVM,你應該能夠打開一個命令提示符並運行 kvm 命令。如果您運行"kvm 名單",如中所示,你會在你機器上,看到所有的 KRE 版本的清單圖 2

在要你的機器上獲取清單 KRE 版本的命令列運行"kvm 名單"
圖 2 在要你的機器上獲取清單 KRE 版本的命令列運行"kvm 名單"

如果您的清單中沒有條目,沒有版本的 KRE 在您的使用者設定檔。要解決此問題,您可以運行命令"kvm 升級"。此命令將確定可用的 KRE 最新版本,下載它並修改您的 PATH 環境變數,因此您可以使用其他命令列工具在 KRE 本身。

可以使用"kvm 安裝 <版本最新>"要安裝的特定版本而不使其預設值。使用-r 開關指示是否你想要的.NET 核心或.NET Framework 的版本,KRE 和-x 86 和 — — amd64 交換器下載 KRE 的 32 位或 64 位味道。可以提供的運行時和位數的開關,安裝或升級。

一旦你已經叫"kvm 升級",你會能夠使用 K 和 KPM 命令。K 可以用於運行應用程式,而 KPM 用來管理套裝軟體。

KVM 是如何工作的?在它的心臟,KVM 是捷徑來操縱你的道路。當您使用"KVM 使用 <版本>"時,它所做的全部就是你到你指定的 KRE 版本的 bin 資料夾的路徑是你的路徑的變化。KRE 由複製和提取 KRE.ZIP 檔案到 %userprofile%\.kre\packages 安裝的預設情況下,所以當您鍵入"KVM 使用 1.0.0-Beta1,"KVM 將確保該 %USERPROFILE%\.kre\packages\KRE-CLR-x86.1.0.0-Beta1\bin 是在您的路徑上。

KPM 下一個要使用的工具是 KRE封裝管理員(KPM)。KPM 執行兩項主要功能,與幾個較小的功能:

  1. 你可以運行"kpm 恢復"資料夾中要下載的所有包的 project.json 檔與您的應用程式需要。
  2. 它提供的 pack 命令、"kpm 包,"這將採取您的應用程式,並生成一個自包含的、 可運行的圖像,您的應用程式。在這裡,圖像意味著一個資料夾結構,設計了要複製到的伺服器和運行。它將包括您的應用程式的需要,以及 (可選) 要運行該應用程式的 KRE 的所有套裝軟體。

還原命令可以運行包含 project.json 檔的資料夾中。它將檢查檔,使用 NuGet.config,您的應用程式將連接到 NuGet 飼料和嘗試下載所有套裝軟體需要。預設情況下,它將在 %USERPROFILE%\.kpm\packages 所以只有一個任何的副本給定的包需要在開發電腦上安裝這些套裝軟體即使在多個專案中使用。

包裝您的應用程式 — — 通過運行"kpm 包"— — 將生成一個資料夾包含您的應用程式需要運行,所有東西,包括包、 原始檔案和您 Web 根目錄。您甚至可以選擇可以包括 KRE,儘管在預設情況下它假定 KRE 已在伺服器上。

K 命令 K 命令實際上從命令列運行ASP.NET5 應用程式。K 命令包含在 KRE,KPM,相同並運行在 KRE 上的應用程式的進入點。

使用 K 命令的主要方法是運行命令之一在您的 project.json 檔內。在命令屬性下的 project.json 檔中按名稱指定命令。預設情況下,ASP.NET5 起動機 Web 範本包括"web"命令在 project.json 承載您的應用程式,並在埠 5000 上偵聽。 若要運行此命令,只需運行"k 網"。

Visual Studio更新ASP.NET5

ASP.NET5 的最初目標之一就是要有偉大的實驗­為團隊中的成員使用不同的工具。例如,你可以讓團隊成員使用視窗和Visual Studio與他人合作在 Mac 使用了崇高的文本 (請參閱在跨平臺.NET 開發者工具選項 omnisharp.net)。為了實現這一目標,我們不得不退後一步,重新考慮Visual Studio的支援。在以前版本的Visual Studio,專案系統假設大多數的開發進行中Visual Studio。Visual Studio不順利時涉及其他工具來創建檔或修改專案。例如,在.csproj 檔中,Visual Studio保持組成專案的檔的清單。如果您使用一種工具來為您的專案創建一個新檔,然後會為它要包括.csproj 檔進行編輯。

在Visual Studio到 2015 年,當您創建一個新的ASP.NET5 專案,你得到一個新的經歷。仍然可以開發、 調試和運行您的專案,像往常一樣,但除了你已經知道ASP.NET專案中的標準功能,一些新的特徵是獨有的ASP.NET5。 現在可以自由地發展使用平臺和您所選擇的工具。我將討論其中的部分功能。

對資料夾中的所有檔的支援ASP.NET5,在專案目錄下的所有檔自動都包含在專案。你可以從編譯中排除檔或發佈在 project.json 檔中。有關如何排除在 project.json 中的檔的更多資訊,請參見在 GitHub 頁 bit.ly/1AIOhK3。載入該專案後,Visual Studio開始檔檢視器,並更新解決方案資源管理器,以反映所做的更改。解決方案資源管理器總是看專案目錄下的檔,因為我們已經改變了存儲生成的檔的位置。而不是存儲生成的檔 (bin\ 和 obj\) 的專案下,我們現在的地方生成檔預設情況下,在一個資料夾命名為工件的解決方案檔的旁邊。

只是編輯、 保存並刷新瀏覽器在現有ASP.NET應用程式中,當您更改伺服器端邏輯 (例如 MVC 控制器代碼或篩選器),那麼你需要重建和重新部署應用程式以查看所做的更改反映在瀏覽器中。微軟想讓 Web 開發者工作流程,感覺一樣輕巧敏捷作為處理解釋平臺 (例如基於 Node.js 或紅寶石),但仍允許您利用.NET 的功能時。在ASP.NET5 專案中,當您編輯並保存您的 C# 代碼檔檢視器檢測的變化,並重新啟動應用程式。應用程式重新生成在記憶體中,所以你可以看到附近即時瀏覽器中更改的結果。請注意此工作流只支援你並不調試,以免打擾您的調試會話時。

更新支援 NuGet 套裝程式ASP.NET5 你的依賴關係是 NuGet 套裝程式。在 project.json 中列出你包的依賴項和直接引用僅列出。運行時將解析的包為您和您的依賴項可以查看和搜索通過整個套裝程式依賴項在解決方案資源管理器中的關係圖。

要安裝一個 NuGet 套裝程式,你只需將其添加到您的 project.json 檔。您保存的 project.json 檔,發起了一個包還原命令,任何對你的依賴關係的更改將反映在解決方案資源管理器中的引用節點。您可以看到的包還原結果和可能發生的套裝軟體管理器中的任何錯誤日誌在輸出視窗中。甚至你,IntelliSenseVisual Studio在機器上本地安裝的套裝軟體和公共 NuGet 可用的包飼料,如中所示圖 3

IntelliSense為 project.json NuGet 包的依賴項
圖 3 IntelliSense為 project.json NuGet 包的依賴項

在現有的ASP.NET專案中,當你把 NuGet 包安裝到一個專案,NuGet 套裝程式 (和其所有依賴項) 副本獲取放置在附近的解包資料夾。在ASP.NET中 5,所以 NuGet 套裝程式專案為每個使用者之間共用使用的緩存。在ASP.NET5 包還原時,已經安裝到緩存中的任何包都簡單地重用。您可以查看和修改包緩存在使用者設定檔的.kpm 資料夾下。

預設情況下,ASP.NET5 專案由運行時生成記憶體中並沒有文物保存到磁片。然而,您可以方便地啟用建設 NuGet 套裝程式為您ASP.NET5 類庫通過選擇該專案的屬性頁的生成選項卡上的"生產上生成的所有輸出"核取方塊。一旦選擇了此選項,可以在專案資料夾下找到建的 NuGet 包,為解決方案。

生成和得到聯合IntelliSense的多個目標框架ASP.NET5,在你列出你在 project.json 的目標框架。 您的專案是針對每個列出的目標框架生成的。這使得發現問題快得多,因為你不必明確地切換到該目標的框架,您可以進行交叉編譯為單個專案的多個目標框架。

我們也已經與聯合IntelliSense一起更新ASP.NET5 專案的IntelliSense體驗。與相結合的智慧感知,當一個或多個目標框架,不同的IntelliSense為給定的完成時你會看到擴展的工具提示,以顯示你的差異。你可以看到這在圖 4 StringComparison 類。

工具提示顯示為多個目標框架結合IntelliSense
圖 4 工具提示顯示為多個目標框架結合IntelliSense

圖 4,你可以看到 InvariantCulture 值為 StringComparison 枚舉不可,使用ASP.NET核心 5.0 時。

Web 發佈Visual Studio2015年,開發人員正在研究一種新的微軟發佈ASP.NET5 專案的過程。在預覽版本中,ASP.NET5 發佈支援發佈到 Azure 的網站和檔案系統 (例如,本地或網路資料夾)。發佈到 Azure 網站時,您可以選擇所需的組建組態和 KRE 版本。以後的版本將擴大此包以支援一整套更廣泛的目標。

遷移到ASP.NET5

移動到ASP.NET5 的現有 Web 應用程式涉及到創建一個新的ASP.NET5 專案為您現有的應用程式,然後遷移您的代碼和依賴關係,在新的框架上運行。創建一個新的ASP.NET5 專案為您的應用程式也相對簡單。首先,添加一個 project.json 檔,在您的專案資料夾中。最初,project.json 檔只需要包含一個空的 JSON 物件 (例如,{})。接下來,使用檔 |打開專案以在Visual Studio2015年預覽中打開 project.json 檔。之後打開 project.json 檔,Visual Studio將ASP.NET5 專案創建的.kproj 檔和自動包含在專案中的所有檔和目錄找到 project.json 檔的旁邊。您應該在您的新ASP.NET5 專案在解決方案資源管理器中看到您的專案檔案。您現在已經為您現有的 Web 應用程式創建一個ASP.NET5 專案 !

遷移您的代碼和依賴關係,所以您的新ASP.NET5 專案生成並正確運行是一個更多地參與的過程。你需要用你的頂層的包的依賴關係、 框架程式集引用和專案引用更新您的 project.json。您需要遷移您的代碼以使用新的 HTTP 抽象、 新的中介軟體模型和ASP.NETWeb 框架的新版本。你需要移動到新的基礎結構用於處理配置、 日誌記錄和 DI 的關注。移植在.NET 核心上運行您的應用程式需要處理其他平臺的變化和局限性。這是比可以覆蓋在這篇文章,但我們正在努力提供遷移完成指導將來的文章中。雖然投資移動到ASP.NET5 可能是重大的微軟認為,提供一個開放源碼的社區驅動的、 跨平臺的好處和雲就緒框架是值得花費額外的工作。

從這裡去哪兒?

在這篇文章,我已經向低級元件從高級概念探討ASP.NET5。還有很多需要學習 !幸運的是,有很多的資源,以説明。

ASP.NET網站有一個專用的內容區域,在 asp.net/vnext。功能釋放消息、 文檔、 教程和社區資源,不斷更新此頁面。

ASP.NETvNext 社區站立是ASP.NET團隊開放每週會議。它是舉行每星期二早上和太平洋時間下午之間交替,所以世界各地的開發人員可以參加。快來加入我們來聽下一個什麼,問問題,給您的回饋意見。

你可以從其他開發人員和ASP.NET團隊成員得到説明在專用ASP.NETvNext 論壇在 bit.ly/1xOuQx9。JabbR.net 專注于ASP.NET5/vNext 發展也是一個聊天室 bit.ly/1HDAGFX

因為ASP.NET5 正在開發作為一個開源專案,你可以參與發展進程。來源資料庫下的 github.com/aspnet 是反對,不是鏡子的內部存儲庫團隊開發的實際,活資料庫。這意味著你可以看到在提交他們發生並隨時抓住代碼快照。存儲庫以及功能測試和樣例專案包括框架 (例如,KRuntime,剃刀和 MVC) 的原始程式碼。我們鼓勵您留下的回饋資訊 — — bug 和功能建議 — — 通過打開或 GitHub 的存儲庫中的問題發表意見。

它是為 Web 開發 Microsoft Web 平臺上一個激動人心的時刻 !我們鼓勵您早,介入,所以你應該準備好要充分利用新功能,並使您可以在開發過程中提供回饋。

最後,我想感謝葛籣 · 康得倫、 喬恩 · 加洛韋、 賽義德 · 易卜拉欣 · 雜湊米、Scott亨特和羅文Miller超越常規技術覆核職責的召喚和實際貢獻的這篇文章的重要部分。


Daniel Roth 是ASP.NET團隊目前正致力於ASP.NET5 高級專案經理。 他的愛好包括.NET 開發和取悅客戶製作框架,簡單和容易使用。

感謝以下的微軟技術專家對本文的審閱:葛籣 · 康得倫、David福勒、 喬恩 · 加洛韋、 賽義德 · 易卜拉欣 · 雜湊米、Scott亨特、 羅文Miller和 Praburaj Thiagaraj