下一代的 .NET - ASP.NET vNext

jopen 10年前發布 | 33K 次閱讀 ASP.NET

在今天舉行的微軟北美技術大會(TechEd North America)上,我們對外宣布了一些將會應用到下一代.NET上的技術創新點。這其中最重要的就是ASP.NET vNext——針對云開發環境優化過的ASP.NET。我們一直在對.NET的一些核心技術進行優化,尤其是在上個月舉行的Build大會上發布的 .NET Native 預編譯器和 .NET Next Generation JIT (“RyuJIT”)。都有新的發布版本供你試用。我們還有一些小的宣布要與大家分享。

在上個月的Build大會上,我們宣布了 .NET 基金會。現在,我們正和超過25家基于社區的.NET項目和組織溝通,邀請他們加入該基金會。大家對基金會的興趣遠超我們的預期,這是一個不錯的開始。

同樣在Build大會上發布的還有 .NET Compiler Platform ("Roslyn") 。它包括一個全新的C#和VB的編譯器以及一些將要添加到C# 6中的新特性。該項目是一個托管在 codeplex上的開源項目,并且已經接受了一個來自社區的pull request。

Visual Studio 2013 Update 2 現在已經提供下載了,這次更新給使用Visual Studio的開發者帶來了多個意義非凡的新特,包括針對Window Phone 8.1 和通用的Window程序的工具

在我們向前發展的同時,也要關注一下.NET當前的優勢。目前,.NET大約有18億個有效安裝。無論從哪方面來說,這都是一個非常大的數字,同時這也為你的程序提供了一個廣闊的運行平臺。

TechEd中.NET的公告

下面是我們在TechEd中分享的一些關于.NET的公告。

  • .NET vNext

    </li>

  • ASP.NET vNext (MVC, Web API and Web Pages 6; EF 7; SignalR 3)

    </li>

  • .NET Framework 4.5.2

    </li>

  • .NET Native Developer preview 2 – x86 support

    </li>

  • .NET Next Generation JIT CTP 4 – supported on Windows 7

    </li>

  • Better support for Xamarin in .NET PCL NuGet Packages

    </li>

  • ApiPort API Portablity Analyzer

    </li>

  • Client Libraries for Office 365 REST APIs

    </li> </ul>

    .NET vNext

    .NET vNext 作為.NET Framework的下一個重要的發布版本,第一次被我們在 TechEd 上提及。我們在TechEd和Build大會上分享了下一個發布版本中的多個新特性和組件。 你可以使用 Roslyn compilers 來編譯 C# 6 和 VB,將 ASP.NET vNext 程序部署在服務器或者云端,使用 .NET Native 預編譯器來編譯你 Windows Store 上程序,并且可以享受由 Next Generation JIT 帶來的更快的服務端或桌面程序。

    針對現在比較常見的服務端優先和移動端優先的開發需求,我們對.NET做了專門的優化。用戶對移動端和云端app有更高的性能需求,并且這些程序都運行在專門的硬件或虛擬環境下。我們為 Windows Store 程序提供了.NET Native 預編譯器,為云端程序開發了一個云端優化模式。

    .NET vNext 有一個專門為云端環境優化過的模式,該模式允許你在部署程序的時候連同他們所用到的.NET Framework的相關庫一同部署(譯者注:沒有用到的庫不會添加到里面)。由于.NET的運行時和框架中的庫部署在了程序基礎(app-basis)上,所以在同一臺機器上,每一個程序可以運行不同版本的.NET vNext,并且可以單獨升級,互不影響。這些庫已經被顯著的優化、精簡以便減少框架占用的空間,并且將會使用NuGet來發布。在這種模式下,和WPF以及Window Forms相關的一些庫已經被移除了。

    我們始終以跨平臺的思想來開發這個模式,在開發過程中我們和Xamarin積極合作,以確保經過云端優化過的.NET程序可以運行在裝有 Mono 運行時的Mac和Linux上。.NET和ASP.NET的巨大生產力可以提供給那些使用混合開發環境的團隊。

    ASP.NET vNext

    ASP.NET  vNext 是我們在 TechEd 上的一個重大發布。我們已經更新了ASP.NET的諸多方面,使ASP.NET的程序更容易構建并且在性能方面表現的更好。對于這些網站和服務,我們分別考慮了訪問量少的情況和訪問量超多的情況。我們開辟了新的場景,這些場景之前是不會在ASP.NET中發生的。

    我們設計ASP.NET的時候考慮了一些關鍵性的設計原則,如下所示:

    • 為云環境量身打造

      </li>

    • 對網站和服務使用單一的編程模型

      </li>

    • 低延時的開發者體驗

      </li>

    • 提供高性能、高效的API和模式——使得他們既可以單獨使用,又可以在一個應用中組合使用

      </li>

    • 可通過命令行工具和標準格式的文件進行細粒度控制

      </li>

    • 使用NuGet交付

      </li>

    • 通過 .NET Foundation 開源發布

      </li>

    • 可以運行在 Mono,Mac 和Linux上

      </li> </ul>

      ASP.NET  vNext 包括MVC,Web API,Web Pages,SignalR 以及 EF 的更新版本。對這些框架所做的主要改進在于MVC, Web API 和Web Pages已經被合并成了單一的編程模型。例如,現在控制器和路由的概念已經統一在了一起。對于同一個HTTP請求,你現在可以使用一個控制器來返回MVC視圖和格式化過的Web API響應。

      ASP.NET  vNext 程序是為云環境設計的。像會話狀態和緩存這些服務,會根據程序的運行環境(云環境或普通的主機環境)來調整它們的行為,但是他們是以統一的API提供給開發者的。我們在底層使用了依賴注入的方法來讓你的程序去適應不同的環境。由于我們修改了底層實現的代碼,所以你可以在不修改代碼的情況下很容易的將你的程序從內部部署移植到云環境中。

      當你修改了web應用程序的代碼之后,不用再去執行編譯的步驟,直接刷新瀏覽器頁面就能查看到修改后的效果。這項對提升生產力很有意義的改進得益于我們對底層CLR加載時間的優化以及新的 .NET編譯器平臺("Roslyn")。

      你可以在下面的圖片中看到 ASP.NET vNext 實際工作時的情況。第一張圖展示了一個托管在命令行中的ASP.NET vNext 示例程序,你可以在瀏覽器中瀏覽。在Visual Studio中做的任何修改都會被自動編譯,并且在下一次刷新瀏覽器的時候執行。該程序使用的就是.NET vNext的云端優化過的模式。

      下一代的 .NET —— ASP.NET vNext

      你也可以像之前使用Visual Studio那樣,按F5鍵,Visual Studio 會自動打開一個web 服務器和瀏覽器窗口。下面這張圖就使用的這種方法,但它的代碼和上面的一樣。

      下一代的 .NET —— ASP.NET vNext

      下面這張圖中的程序已經為.NET vNext 框架重新配置過,并沒有使用云端優化過的模式。你只需要設置一下項目的屬性,這個程序就可以使用.NET框架提供的所有的API了。同樣,你只需要刷新一下瀏覽器就可以看到配置后的結果了。

      下一代的 .NET —— ASP.NET vNext

      下面這個表格列出了一些我們已經構建了的場景以及這些場景可以使用的地方。

      Feature

      </td>

      .NET vNext

      </td>

      .NET vNext (Cloud Optimized)

      </td> </tr>

      Cloud Ready

      </td>

      *

      </td>

      *

      </td> </tr>

      Modular Design

      </td>

      *

      </td>

      *

      </td> </tr>

      Dependency Injection

      </td>

      *

      </td>

      *

      </td> </tr>

      Consistent Tracing / Debugging

      </td>

      *

      </td>

      *

      </td> </tr>

      Faster Development (browser refresh)

      </td>

      *

      </td>

      *

      </td> </tr>

      Open Source

      </td>

      *

      </td>

      *

      </td> </tr>

      Full Side by Side (runtime and framework                
      deployed with application)

      </td>


      *

      </td> </tr>

      Faster startup, Lower memory / Higher throughput (best of class)

      </td>


      *

      </td> </tr>

      Uses a smaller set of framework libraries

      </td>


      *

      </td> </tr>

      Enabled on Mono, on Mac and Linux

      </td>


      *

      </td> </tr> </tbody> </table>

      ASP.NET vNext 將會以開源的形式貢獻給 .NET基金會(.NET Foundation)。大家不用為此感到意外,因為我們早已經把 ASP.NET Web stack 開源了。以后,所有和ASP.NET vNext 相關的東西將會通過 NuGet 發布,保持開源,并歡迎大家貢獻代碼。

      我們在TechEd上對.NET vNext 和 ASP.NET vNext 所做的介紹只是一個開始,在我們發布最終版之前的這幾個月里,我們會和大家分享更多相關內容。我們計劃發布一個pre-release版本,以便收集大家的反饋。

      .NET Framework 其他的一些升級和改進

      最近,我們發布了 .NET Framework 4.5.2。 這包括對ASP.NET,Windows Form以及其他一些產品的做的顯著改進。你現在可以在你的代碼中使用4.5.2中的一些新特性了。

      同時,我們還給 .NET Native 和 Next Generation JIT 添加了新的功能和使用場景。.NET Native 現在除了支持 ARM 和 x64的程序之外,還支持32位的程序。Next  Generation JIT 現在支持Windows 7 及以上的x64應用程序。 這些技術都是.NET vNext 發展道路上的關鍵部分。期待在未來的幾個月中聽到更多關于它們的消息。

      • 下載 .NET Native Developer Preview 2

        </li>

      • 下載 Next Generation JIT (“RyuJit”) CTP 4

        </li> </ul>

        針對多個平臺

        為了使程序和庫的代碼可以更容易的運行在多個平臺上,我們已經花了多年的時間在這上面。一開始,我們使 Xamarin 可以使用我們的PCL程序集,Xamarin隨之也作出了改變,并將這件事向前推動了一大步。最近一段時間,我們一直與Xamarin緊密合作,來使我們的.NET NuGet包可以更好和Xamarin的工具協作,以便可以更容易的把.NET程序運行在iOS和Android上。這還有很長的路要走,但是,我們已經取得了很多經驗,并且會繼續改進它。

        在 TechEd,我們發布了一個新的可移植的統計分析工具——ApiPort。它為你提供了兩項主要的數據:你代碼可以運行的平臺以及阻止你代碼運行在其他平臺上的相關依賴。 

        命令行工具為程序可移植性的統計分析結果生成了一個Excel格式的報告,該報告提供了兩種視圖方便你的查看。它為指定的平臺提供了一個高級的、以顏色區分開來的視圖,同時它還提供了一個詳細的列表,列出了你的代碼中所有類型的成員在各平臺中的支持情況。考慮到報告是一個Excel文件,你可以很容易的過濾這個列表,構建數據透視表以及做進一步的分析。

        下面的圖片展示了可移植性分析結果的高級視圖。只顯示了一個程序集,但實際上是有多個的。你可以下載 可移植性分析樣例 來看一下它的原始數據。

        下一代的 .NET —— ASP.NET vNext

        該工具還有另一個功能,所有和依賴相關的數據(不包括程序集)會被上傳到一個由.NET團隊維護的 Azure 服務上。該工具上傳的數據只是你代碼所依賴的程序集和API的列表。我們不會記錄數據的來源和使用者的信息,也不會上傳你的代碼和二進制文件。我們只是想要知道我們還需要為不同的平臺提供些什么功能,以便使代碼可以更容易的跨平臺。

        如果你發現很難轉換至一個特定的平臺,請投票選出你想要為運行你的 app 和libraries的特定平臺上的工具集所附加的APIs。在整個目錄運行工具集是一件很容易的事。

        首次釋出的版本可能缺乏一些特性,目前我們正努力為它添加支持 。Xamarin/Mono 平臺目前還缺乏一些工具集。還沒有考慮引入NuGet packages ,它可以使其它平臺同樣可以利用.NET Framework APIs,可以把它們統計為缺失的APIs。