Blank?=False

ゆるゆる仕事したいフリーランスエンジニアの記事

ASP.netと.NetCoreについて調べてみた。

f:id:stonebeach-dakar:20161230093355p:plain

先日、.NetCoreをCentOSにインストールして動かす、という記事を書きました。

stonebeach-dakar.hatenablog.com


実際にASP.netの学習を始めたのですが、ASP.netはちょっとフレームワークとしてのあり方が複雑だな、と感じたので まとめてみました。

.NetFrameWorkと.NetCoreにおけるASP.netの違い

ASP.netは.Netの中のWeb開発に使う様々なフレームワーク総称、というもので、 内部的には幾つかのフレームワークに別れます。

f:id:stonebeach-dakar:20170118195522p:plain

また、.Netの実装は、Windowsのみで使える.NetFramework, クロスプラットフォームで使える.NetCoreの2種類があります。
.NetCoreは.NetframeworkのWindows上でしか使えない部分を削除し、オープンソースとしたフレームワークです。
殆どの部分は.NetFrameworkと共通化されているらしいですが、別のモノとして考えてください。

この、.NetCoreのWebフレームワークとして搭載されているものはASP.net Core1.0と呼ばれ、.NetFrameworkのASP.net4.6とは別のフレームワークになります。
相違点として、.ASP.Net1.0はWebFormsに対応していません。
これは、IISというWindows用Webサーバに依存しているため、他の環境に移行できない、というのが理由だそうです。
f:id:stonebeach-dakar:20170118202639p:plain



こういったことがあり、.NetFrameworkのASP.netのWebアプリがすべて.NetCoreでも動く、というわけではないのは覚えておく必要があります。
ただし、MVCフレームワークを使ったものはコードレベルで互換性があるため、コードを移植してビルドすればほぼ動く、という話です。


下に相違点をまとめてみました。

名前 .NetFrameWork .NetCore
正式対応OS Windows(WindowsServer含む) MacOSX/Linux/Windows
IISヘの依存 あり なし
WebFoms
MVC/WebPages/WebAPI○(別クラス) ○(統合)
SignalR
オープンソース開発 △(一部オープン)

<参考元>
codezine.jp

.NetCoreの名前に関する混乱

インターネットで情報を調べてみると、クロスプラットフォームで動作するASP.netASP.net 5.0だったり、ASP.net Core1.0だったりと2つの呼び名があり、混乱しました。


これは、一度名前が変わったためです。
最初、ASP.net5.0だったが、ASP.net4.6と互換性がないことや後継と間違われやすかったことから 全く別のもの、とわかりやすいように名前を変えたのことです。

詳しくは、しばやんさんのブログに色々と書いてありますので紹介します。

blog.shibayan.jp



インターネットでは、このASP.net 5という名前だった頃の記事も多くありますのでご注意ください。

ASP.netの今後

Microsoftは現在、Windows専用だった様々なソフトウェアや開発環境を他の環境でも使える用にするクロスプラットフォーム化を進めています。
今回紹介した.NetCoreもその1つで、Windowsで開発してLinuxで動かす、と言ったことも容易に出来る様になってきています。

また、最新のASP.net MVC6は.NetFramewokと.NetCoreで完全に共通になるように再設計されているということで、よりクロスプラットフォームな言語としてRubyOnRails, CakePHPと並んでWeb開発フレームワークの選択肢の1つとして選択できるようになると思います。


この流れの中、Windowsでしか動かないWebFormsはどうなるのでしょう。
私の予想ですが、WebFormsはなくならないのでは、と思います。
なぜかというと、企業内のイントラWebアプリはWebFormsで作成されたものも多く、WebFormsを使っているからIISサーバが使えるWindowsServerを使っている、という会社もあります。
もし、WebFormsがなくなればWindowsServerを使う必要がなく、Linuxサーバへ以降してしまうかもしれません。
そうなると、Microsoftにとっては減益となってしまうため、切っても切れないんじゃないかなと思います。

また、Access程ではありませんがMVCと比べると高度な知識がなくとも容易にWebアプリを開発できるため、 MVCとくらべ開発費がかからないので、そういった意味でWebFormsを好むユーザ企業もいます。


こんなことを書いていてアレですが、こういう予想を平気でMicrosoftは裏切ることがあるので、新規でWebシステムを開発するときは 今後もサポートされ続ける可能性が高いASP.net MVCで開発しておいたほうが、 将来的にMVCへの移行コストやWebForms→MVCへの学習コストなどがかかりません。


個人的にも、MVCRailsCakePHPの技術者という資産を活かしやすく、またリーダブルなコードになりやすく、UIテストの構築も楽だと思います。
今後も使われ続けるWebアプリであれば、初期開発の費用はWebFormsのほうが安くても、10年以上改修を続ければ結果的にMVCのほうが開発費がかからない可能性が高いと思います。