しばやん雑記

Azure とメイドさんが大好きなフリーランスのプログラマーのブログ

Connect(); での発表と ASP.NET の今後について

やっと Connect(); で発表された中身について触れる余裕が出来てきたので、個人的な考えも入れつつまとめておこうと思います。ちょいちょい追記するかも。

まずはキーノートでてんこ盛りのデモをしていた Scott Hanselman が既にブログでいろいろまとめてくれているので、英語が読める人はこっちを参照しておくべきです。

Announcing .NET 2015 - .NET as Open Source, .NET on Mac and Linux, and Visual Studio Community - Scott Hanselman

正直、今回のイベントではあまりにもアップデートや発表が多すぎて、混乱しつつあります。なので、ぶっちゃけこのエントリは自分の整理用です。

何が発表されたのか

何となく .NET Framework がオープンソースになって OS X や Linux でも C# で書いたアプリがすぐに動く!と割と単純に捉えている人が多そうですが、実際にはまだ作業中な部分が多いです。

このあたりを二番煎じでまとめてもどうしようもないので、にぃにのブログを見て理解してください。

.NET for every developers, every devices | ++C++; // 未確認飛行 C ブログ

.NET 2015 全体ではなく ASP.NET 周りだけ見ていくことにします。

今後の製品ライン

ASP.NET はこれまで Web Forms / MVC / Web API / Web Pages / SignalR というフレームワークを持っていましたが、ASP.NET としては .NET Framework のアップデートとほぼ同時にアップデートが行われてきました。現時点での最新バージョンは ASP.NET 4.5 になります。

それが .NET 2015 では ASP.NET 自体 2 つのバージョンに分かれることになります。

  • ASP.NET 4.6
  • ASP.NET 5

ASP.NET 4.6 はバージョンから分かるように、今までの ASP.NET 4.5 を受け継いだアップデートです。ASP.NET 4.6 ではこれまで通り Web Forms などがサポートされますが、KRE が提供する機能などの恩恵は当然ながら受けることが出来ません。

そして ASP.NET 5 はこれまで ASP.NET vNext と呼ばれていたものです。今回のイベントでの発表はこちらがメインで、ASP.NET 5 で開発されたアプリケーションは OS X / Linux での実行がサポートされます。*1

.NET Framework .NET Core
ASP.NET 4.6 ×
ASP.NET 5 ○ (OS X / Linux 含む)

何となく表にしてみるとこんな感じ。

ASP.NET vNext の Cloud-optimize と言うのは .NET Core と ASP.NET 5 の組み合わせのことを指します。

互換性について

当然ながらこれまでの ASP.NET 4.5 で開発してきたアプリケーションは .NET Framework 4.6 上でも問題なく動作します。これは良いですね。そして ASP.NET 4.5 で開発してきたアプリケーションを .NET Core で動かすことは出来ません。System.Web.dll などが削除されているからです。

そこで気になるのが ASP.NET 4.5 で開発してきたアプリケーションを ASP.NET 5 に移行できるかという話です。単刀直入に言うと、これは現実的には難しいです。特に Web Forms は ASP.NET 5 に含まれていないので無理です。*2

しかしながら、ソースコードレベルでは MVC 5 と MVC 6 に関してはある程度の互換性を持っています。Web API 2.2 とは互換性が思ったよりないみたいですが、CompatShim というパッケージが用意されているので、それを入れるとある程度までの互換性は確保できそうです。

OS X / Linux 対応について

ASP.NET vNext では開発初期から OWIN の思想を取り込んだサーバーインターフェースの抽象化が行われていました。この時点で ASP.NET vNext アプリケーションは IIS との依存関係が無くなりましたが、当時はサーバーとして IIS と http.sys しか用意されていなかったため、動作は Windows 上に限られていました。

その後、KRE 自体の Mono 対応が進んだことと、新しく libuv ベースで実装された Kestrel サーバーが登場したことにより、OS X 上での動作が可能となりました。

ASP.NET vNext で用意されている 3 種類のサーバー - しばやん雑記

Kestrel などのサーバーについては以前まとめたので、こっちも参照してください。

今回発表されたのは、これまでの KRE と Kestrel の開発実績と、.NET Core が公開されたことで Mono との互換性がさらに期待できるといったところでしょうか。

Docker 対応について

キーノートで ASP.NET 5 アプリケーションを Linux 上の Docker で動かすというデモが行われていましたが、既に Docker のリポジトリにプレビュー版のイメージが公開されています。

やっている内容としては Mono と KRE のインストール、そしてパスを通すというぐらいで割と単純です。

デプロイとリモートデバッグもデモでは行っていましたが、このあたりはまだ調べ切れていません。もう少し時間と心に余裕が出来れば調べてみたいです。

まとめ

今回の発表で一番オープンかつクロスプラットフォームになったのは ASP.NET でしょう。そして一番ワクワクして楽しみになるのも ASP.NET だと感じました。

ここまで書いておいて言うのもアレですが「絶対に ASP.NET 5 に移行しなくてはいけない」ということは無いってことを強調しておきたいと思います。ASP.NET 5 はまだベータ 1 がリリースされた段階ですし、ランタイムとして重要な役割を果たす .NET Compiler Platform も正式リリースまで時間かかりそうです。

これまでの資産や枯れたフレームワークを求める場面もあるので、適材適所で使っていきましょうという無難な締めで終わりにしたいと思います。

おまけ:Scott Hanselman について

正直なところ、Scott Hanselman の名前が日本ではそこまで浸透していない感があるので、来日してくれることですし改めて紹介をしておきたいです。

Scott Hanselman - Coder, Blogger, Teacher, Speaker, Author

来日が決まっているというのは、来年の GoAzure というイベントのことです。*3

GoAzure 開催決定
Special Guest: Scott Hanselman And more...

「Azure Friday」でおなじみ、軽妙な語り口で Azure を解説する米国マイクロソフト本社の Scott Hanselman がついに来日、合わせてイベントを開催します。お楽しみに!

Japan Azure User Group | JAZUG

ちなみに Azure Friday というのは Scott Hanselman が聞き役になって、各種 Azure サービスの中の人と 10 分程度の長さで解説してくれる、とても面白いオンラインビデオです。

http://friday.azure.com/

対談的な形式でのビデオはとても面白いですね、日本でもやってみたい。*4

*1:.NET Core をランタイムとして選んでいる場合のみ

*2:プロジェクトファイルのフォーマットとかも違うし

*3:2 年前に同じ名前でやったのでググラビリティ低そう

*4:シアトル滞在記 (3) – 帝国兵氏との対談編 ~ みらいをおもふ | ブチザッキ みたいに