1. ホーム
  2. asp.net

[解決済み] 迷ってます。ASP.NET MVC 5はどうなったのですか?

2022-08-19 09:39:16

質問

いろいろなプロジェクトで頭を悩ませているのですが、どうやらマイクロソフトが大きな変更を忙しく行っているようで、混乱気味です。ASP.NET Core が最初に目についたのは、昨年 Visual Studio 2017 をインストールし、新しいプロジェクトを作成しようとしたら、突然 .NET Framework、.NET Standard、および .NET Core の選択肢があったときでした。そこで少し調べてみたところ、後者の2つはある意味、フルフレームワークの短縮版であることがわかりました。Scott Hanselmanの次の投稿を読みました。 ASP.NET 5 は死んだ - ASP.NET Core 1.0 と .NET Core 1.0 を紹介する。 また、ASP.NET Coreから私を遠ざけるような、こんなものも見つけました。 ASP.NETとASP.NET Coreのどちらを選ぶか? . Core は新しいので、フル フレームワークを使い続けても問題ありません。

そのプロジェクトを作成して以来、私は MVC と Entity Framework の両方でいくつかのバグのように思えるものを見つけましたが、Web 上でそれらについての唯一の言及は Core であるようで、それが修正されると考えられている唯一の場所であることがわかりました。

さて、今日、私は System.Web.Mvc.Controller と System.Web.Mvc.JsonResult に関するドキュメントを調べようとしていますが、Core ドキュメントを除いて、それは消えています。私は最終的にそれを掘り起こした ここで それはもはや維持されていないと書いてあるところ?

私が理解したのは これだけ について理解し、quot;OK, なぜ私が気にしなければならないのでしょうか?でも今は、4.6.2 はもうサポートされていないようなのです。どなたか、何が起こっているのか説明していただけませんか?私のNET 4.6.2/MVC 5.2.3プロジェクトは、私が書き終えていないうちに時代遅れになってしまったのでしょうか?もしそうでないなら、なぜドキュメントは引退し、隠されてしまったのでしょうか?私の依存関係のいくつかは、Core 用に利用できないか、または Core と互換性がないかもしれないと心配しています。

どのように解決するのですか?

( この回答は、新しい.NETの発表があるたびに定期的に更新されており、ASP.NET Core 3.0, .NET 3, .NET 5の詳細について更新されています。 )

Microsoft は、過去に起こった多くの混乱に対して、平手打ちをする必要があります。 3 年 .NET Core / DNX、ASP.NET Core、.NET Standard、.NET 5、およびその他に関する 5 年間にわたる混乱について、Microsoft は大いに非難する必要があります。

(DevDiv.の元FTE SEとして言っているのですが...) <サブ ("16号館からこんにちは!") )

  • ASP.NET とかいう "System.Web" はもう死んだ。WebForms は死んだ (万歳!)
  • ASP.NET MVC は ASP.NET の上に構築されましたが、WebForms のインフラのほとんどをバイパスしています。
    • ASP.NET MVC とは別に、独自のバージョン管理をしています。 ASP.NET ASP.NET Web API (そして ASP.NET Core ). あなたがリンクしたのは ASP.NET MVC 5 のドキュメント - とは別物です。 ASP.NET 5 .
  • ASP.NET Web API は、2012年に発表された ASP.NET MVC の上に構築されている点で ASP.NET の上に構築され、独自のクラスライブラリ ( System.Web.Http ) があり、それは ASP.NET MVC ( System.Web.Mvc ). 同じプロジェクトで ASP.NET Web API サービスと ASP.NET MVC Web アプリケーションを組み合わせようとするのは、苦痛の訓練です。
  • ASP.NET MVC 5 のアップデートとして 2014 年に発表されました。 ASP.NET MVC 4 . とは無関係です。 ASP.NET 5 .
  • ASP.NET MVC 6 はリリースされませんでした。それは ASP.NET 5 に組み込まれ、その後 ASP.NET Core . ASP.NET MVCとASP.NET Web APIを1つのプラットフォームに統合することが目的でした。
  • ASP.NET Core は、ASP.NET MVC 5 の改良型設計として 2016 年に発表されましたが、その際に System.Web.dll への依存や、(今ではレガシーとなった)IIS への依存は一切ありません(たとえば、古いリクエスト パイプライン。 IHttpHandlerIHttpModule はもはや存在しない)。
    • なお ASP.NET Core のクラスライブラリのルート名前空間が Microsoft.AspNet であり System.Web . これは私にとっては混乱の元でした。つまり、プロジェクトを ASP.NET MVC ASP.NET WebAPI の ASP.NET Core への移行は、コントローラとミドルウェアの基本的なアーキテクチャが同じであるにもかかわらず、自明なことではありません。
  • .NET コア は、明示的に移植可能で、Windows、Linux、macOSで動作するCLRとBCLの新しいバージョンです。
    • .NET コア 1.0 .NET Core 2.0 のベースクラスライブラリと比較して貧弱であると考えられていました。 フルファット .NET フレームワーク という、Windows 専用の
    • とは .NET Core 3.0 と WinForms、WPF およびその他の .NET Framework のコンポーネントのオープンソース化により、.NET Core は新しいアプリケーション開発のために Windows の .NET Framework に取って代わるものとして準備されました。
  • .NET 5 の後、.NET Coreの新しい名前になります。 .NET Core 3 がリリースされた後(.NET 5は2020年後半頃を予定)、.NET Coreの新しい名称になります。
    • .NET 5 があります。 全く何もない とは関係ない ASP.NET 5.0 また ASP.NET MVC 5 .
    • はありません。 .NET Core 4 また .NET Framework 5.0 .
  • " .NETにおけるASP.NET Core の最初のリリースの最終的な名称のようです。 ASP.NET Core を特にターゲットとした .NET 5 およびそれ以降をターゲットにしています。

私は、"Core" が Microsoft の ホット ブランドであり、.NET Core で動作する (Windows への依存がなく、ポータブルである) 現世代の .NET プラットフォームを意味します。(Microsoft が 1990 年代に COM や ActiveX を使用するものに "Active" を付けたように、Active Desktop や Active Channels、ActiMates、Active Directory、ActiveSync などです)。

  • さらに エンティティフレームワークコア はまだ Entity Framework 6 の多くの機能を欠いています。これは基本的に書き換えであるためですが、いずれ同等になるでしょう。

現在、多くの .NET ランタイムと BCL が利用可能であるため (.NET Framework、.NET Core、UWP、Xamarin (Mono を使用)、Unity、その他)、Microsoft は以下を導入しました。 .NETスタンダード これは基本的に Portable Class Library のコンセプトのリブートであり、Visual Studio プロジェクトが特定の実装ではなく、一般的な機能の既知のサブセットをターゲットにしています。 (から始めるのではなく、.NET Framework に合わせてバージョン番号を 4 から始めてほしいと思います)。 1.0 について考えさせられたので 2001 をもう一度考えることになったからです)。 - が、重要なのは ASP.NET Core 1 ASP.NET Core 2 は .NET Core ではなく .NET Standard をターゲットにしています。つまり、ASP.NET Core は Windows 上で .NET Framework の上で動作し、さらに .NET Core の上でも動作するのです。

以前のすべての .NET クロスプラットフォーム互換性テクニックは、.NET Compact Framework、XNA、Silverlight、および Windows Phone 7 のサブセットなど、もはや存在しない .NET の他のエディション向けだったため、今では時代遅れ (Compact Framework サブセット、Portable Class Libraries、さらには Visual Studio の "Shared Projects" などをターゲットとする) となっていると私は指摘します。

2019 年 5 月に Microsoftが".NET 5"を発表しました。 . 要するに .NETフレームワーク に置き換わっているのです。 .NET コア に置き換えられ、.NET Core 3.0以降の.NET Coreの次期バージョン名は .NET 5 ). この発表は ASP.NET Core を完全にサポートするという事実以外には、全く関係ありません。 ASP.NET Core 3.0 アプリケーションを完全にサポートすることです。

Covid をテーマにした 2020 年の夏を通して、Microsoft は .NET 5 と ASP.NET Core を最終決定しました。2020 年 10 月現在、ASP.NET Core の NuGet パッケージのバージョンは 3.1.x から 5.0.0 に跳ね上がっており、ASP.NET Core の次のメジャー リリースはバージョン管理されるように思われます。 5.x.x となっていることから、そのリリースは という名前がついています。 ASP.NET Core 5 しかし、最近の Microsoft ブログの記事では、名前は "ASP.NET Core for .NET 5" になるようです。このスレッドが "ASP.NET MVC 5" と "ASP.NET 5" の混乱から作られたことを考えると、名前は "ASP.NET Core 5" または "ASP.NET Core for .NET 5" になることは間違いありませんね。 と名づければ、混乱することはないでしょう。 ということです。

まとめると

  • ASP.NET MVC 5 :
    • ASP.NET MVC 5 の短命な後継でした。 ASP.NET MVC 4 .
    • と同時にリリースされた ASP.NET Web API 2 と共にリリースされました。 と共に 2014 年にリリースされました。
    • の上で実際に実行されました。 ASP.NET 4 (すなわち .NET 4.x 版の System.Web.dll ). なお、全体の ASP.NET MVC ライブラリは廃止されました。
  • ASP.NET 5 は EOL され、次のようにブランド変更されました。 ASP.NET Core となり、"ASP.NET MVC 5"の機能が組み込まれるようになりました。
  • ASP.NET Core 1 ASP.NET Core 2 は、.NET Standard をターゲットにしているため、.NET Core (クロスプラットフォーム) または .NET Framework (Windows) のいずれでも実行できます。
  • ASP.NET Core 3 でしか動作しなくなりました。 .NET Core 3.0でのみ動作します。 .
  • ASP.NET Core 4 は存在しませんし、存在したこともありません。
  • ASP.NET Core 5 は存在しますが(2020年8月現在)、正式名称は "ASP.NET Core for .NET 5" であり、以下の環境でのみ動作するものと思われます。 .NET 5 .

全部(時系列)。

  • ASP.NET 1 - 2001. 含まれる WebForms . .NET Framework 1.0 および 1.1 で動作しました。 System.Web.dll .
  • ASP.NET 2.0 - 2005. 含まれる WebForms . .NET Framework 2.0上で動作。 System.Web.dll .
  • ASP.NET MVC 1 ASP.NET MVC 2 - 2008-2009. ASP.NET 2.0 の上で実行されました。 System.Web.Mvc.dll .
  • ASP.NET 4.0 - 2010. 含まれるもの WebForms . .NET Framework 4.0上で動作します。がありませんでした。 ASP.NET 3.0 . System.Web.dll .
  • ASP.NET MVC 3 ASP.NET MVC 4 - 2010-2013. ASP.NET 4.0 の上で実行されました。 System.Web.Mvc.dll .
  • ASP.NET Web API 1 - 2012. の上で実行されました。 ASP.NET 4.0 . System.Web.Http.dll .
  • ASP.NET MVC 5 - 2013. への単なる更新です。 ASP.NET MVC . の上に実行される ASP.NET 4.0 の上で動作しますが System.Web.dll を使用せずに独立して動作させることもできます。
  • ASP.NET Web API 2 - 2013. 兄弟関係にある ASP.NET MVC 5 . また ASP.NET 4.0 での動作も可能です。
  • ASP.NET MVC 6 - 2014-2015. Release Candidate 状態になったところで中断し、再起動すると ASP.NET Core MVC 1.0として再起動。 のMVCとWeb APIコンポーネントである2016年の ASP.NET Core 1 .
  • ASP.NET 5 - 2014. ASP.NETのメジャーリブート ここに記載されている . 主な変更点は、MVC、Web Pages、Web API を統合したこと、そして WebForms . ASP.NET 5 はリリース候補のステータスに達しましたが、その後 ASP.NET Core . これまで ASP.NET 6 .
  • ASP.NET Core 1 - 2016. のどちらかで動作します。 .NET Framework 4.5 または .NET コア 1.0 .
  • .NET コア - 2016. ポータブルで最小限の.NETランタイムとクラスライブラリ。
  • .NET標準 - 2017. すべての .NET 実装(.NET Framework 4.5 以降、.NET Core 2.0 以降、Xamarin など)に存在する共通の機能セットを対象とするプログラムのための方法です。
  • ASP.NET Core 2 - 2017年~2018年:現在の状況 どちらかで実行される .NET フレームワーク 4.6.1 または .NET コア 2.0 . (2018年末現在ではASP.NET Core 2.1があります)。
  • ASP.NET Core 3(エーエスピー ドット コア スリー - 2018年10月下旬、MicrosoftはASP.NET Core 3.0が次期.NET Core 3.0上でのみ動作することを発表しました。 と発表しました (したがって、もはや .NET Framework 4.7.x 上では実行されません)。これは、.NET Framework 4.7.x上で動作するアプリケーションに対して、.NET Coreをまだサポートしていない依存関係のためにASP.NET Core 2.xからASP.NET Core 3.xへのアップグレードパスが存在しないことになるので議論を呼んでおり、.NET Standard 3.0は存在しない可能性が高いと言えるでしょう。
  • .NET 5 - 2019年5月:マイクロソフトが.NET Coreの次のバージョンを発表した後 .NET Core 3.1 は ".NET Core 4.0" や ".NET Core 5.0" とは呼ばれず、バージョン番号 5.0 にジャンプして "Core" というブランディングを捨て、そのため " になるとしました。 .NET 5.0 となります。
  • .NET 5 上の ASP.NET Core 3.0 - 2019年5月の発表で .NET 5 で、Microsoft は ASP.NET Core 3.0 アプリケーションが .NET 5 上で実行されることも明言しています。ASP.NET Core 2.xアプリケーションが.NET 5上で修正されずに実行できるかどうかは、現在のところ明らかではありません。
  • ASP.NET Core vNext は .NET 5 上で動作します。 - 2020年8月の のリリースが迫っているため .NET 5 , Microsoft は、ASP.NET Core 用 NuGet パッケージのバージョン番号を 5.0.0 . Microsoft はまだこの ASP.NET Core の新しいリリースを "ASP.NET Core 5" と正式/非公式に呼んでいませんが、私はそれを当然の結論と見ています。
  • .NET 5 のための ASP.NET Core 2020年9月のより新しいブログ記事によると、MicrosoftはASP.NET Coreの次のバージョンを"と呼んでいるようです。 ASP.NET Core for .NET 5(ASP.NETコア フォー .NET 5 "(そうです、それは口語です - 少なくとも以前の名前ほど曖昧ではありません)。

タイムラインとブロック図

(夢中で作ってしまいました...)