++C++; // 未確認飛行 C ブログ

http://ufcpp.net/

.NET vNext

leave a comment »

ようやくTechEd NA 2014関連の話を見れているところ。

TechEdなのでやっぱり話題の中心はAzureとかASP.NETなわけですが、その辺りはまあ、

やっぱ、しばやん雑記とかブチザッキですわね。

で、自分が気になるのは.NET vNextの方。

.NET vNext

まず、.NET Frameworkの次期バージョンといえば、先月の//build/とかで出てた内容:

そして今回、ASP.NET vNextに伴って出てきた話題:

  • ASP.NET vNext: the future of .NET on the Server
    • (.NET自体に関係するところだけまとめると)
    • side-by-sideな(同一サーバー内で、アプリごとに別バージョンを使える).NET Framework実行
    • NuGetパッケージを使った自動依存解決(BCLすらNuGet配布)
    • Roslynを使った動的な実行(ソースコードを置いておくだけでOK。コードを書き換えて、ブラウザーの更新をするだけで変更が反映される)
    • 適切な粒度でのフレームワークの分割

いろんな実行方法

.NET vNextには、大まかにいうと3系統の成果があります。

  • (これまで通りの)JIT
    • デスクトップ環境だとこれまで通りで大丈夫
    • これまで通りの部分も引き続き投資されていて、性能改善などがある
  • .NET Native
    • モバイル端末向け
    • 事前に(サーバー上で)アプリをネイティブ化してから、モバイル端末に配布
  • .NET on the Server
    • サーバー、特にクラウド向け
    • アプリ単位でランタイムを切り替えれる
    • サーバー上にC#(など)のソースコードを配置するだけでWebアプリが稼働

.NETが世に出た当時と比べて、いろんな環境が出てきたので、それに合わせて最適な実行方法も多様化しています。.NET vNextでは、その多様性に対応していこうということみたいです。

アプリの配布方法

  • JIT
    • これまで通り、IL(中間言語)での配布
    • 参照しているライブラリの依存解決とかもJIT時に行う
  • .NET Native
    • Windows Storeのサーバー上でクラウド コンパイル(compile in the cloud)
    • 参照しているライブラリの依存解決とかはすべてサーバー上で行う
    • モバイル端末にはネイティブ化した状態で配布
  • .NET on the Server
    • C#などの高級言語で書かれたソースコードをサーバーにアップロードするだけ(Roslynを使った動的な実行)
    • ソースコードを書き替えるだけでアプリの挙動が更新される

.NETランタイム

  • JIT
    • OSに.NET Frameworkがインストールされている必要あり
    • Windows 7/8/8.1にはそれぞれ.NET 4/4.5/4.5.1が標準で入ってるものの…
      • Windows前提
      • 新機能の利用にはアップデートが必要
  • .NET Native
    • モバイル端末側に.NET Frameworkがインストールされていなくてもいい
    • クラウド コンパイル時に、(.NETの標準ライブラリ中の機能も含めて)必要なものはすべて静的にリンクして、アプリに同梱
  • .NET on the Server
    • サーバーOS自体に.NET Frameworkがインストールされていなくてもいい
    • バージョン マネージャーを介して必要なバージョンのランタイムをダウンロードしてくる
      • アプリ単位で別バージョンを利用可能
    • 依存しているライブラリも、すべてバージョン マネージャーが管理・必要な分をダウンロード

実行性能

  • JIT
    • 次世代のJIT(コードネーム RyuJIT)でいろいろ性能改善
      • 起動時間短縮
      • SIMD命令対応
  • .NET Native
    • クラウド コンパイルなのでコンパイル時にしっかりと最適化(C++コンパイラーと最適化コードを共有)
  • .NET on the Server
    • 実行自体はJITだと思うので、RyuJITの成果次第

適切な粒度に分割

あと、.NET vNextとかASP.NET vNextとかでは、一枚岩なシステムだった.NETを適切な粒度に分割しているのも大きなポイント。

そういう動き自体は.NET 4.5の頃からあったんですが、引き続き.NETの整理が進みそうです。この辺りは、

  • .NET 4.5の時の成果
    • BCLのアセンブリ整理
    • Auto-Ngen
  • NuGetパッケージ
    • myget.org
  • 今回出た話題
    • コードネーム “Project K”とか“K Runtime”なんて呼ばれてるもの

なんかも絡んでくるので一度整理してブログ化してみたい(ものの、いつやるか)。

Written by ufcpp

2014年5月20日 @ 02:00

カテゴリー: .NET

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。