web-dev-qa-db-ja.com

道に迷いました。 ASP.NET MVC 5はどうなりましたか?

私はさまざまなプロジェクトに取り組んでいますが、どうやらMicrosoftは大きな変更を行うのに忙しく、明らかに私を混乱させています。 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のどちらかを選択 。私の要点は、「コアは新しく、フレームワーク全体を使用し続けることができます」でした。そこで、.NET Framework 4.6.2とMicrosoft.AspNet.Mvc 5.2.3を使用して、新しいASP.NET MVCサイトを作成しました。

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

さて、今日、私はSystem.Web.Mvc.ControllerおよびSystem.Web.Mvc.JsonResultのドキュメントを検索しようとしていますが、Coreドキュメントの下を除いてなくなっています。私は最終的にそれを掘り下げました ここ それはもはや維持されていないと言いますか?

Coreについて this much を理解し、「わかりました。なぜ気にする必要があるのでしょうか。私は今やっていることをやり続け、それが終わったらそれを確認します。」しかし、今では4.6.2はもうサポートされていないようです。誰かが何が起こっているのか説明できますか? NET 4.6.2/MVC 5.2.3プロジェクトは、書き終える前に廃止されましたか?そうでない場合、なぜドキュメントは廃止され、隠されているのですか?依存関係の一部がCoreで使用できないか、Coreと互換性がない可能性があることを心配しています。

31
xr280xr

この回答は、新しい.NETアナウンスが行われるたびに定期的に更新され、ASP.NET Core 3.0、.NET 3、および.NET 5の詳細で更新されています

マイクロソフトは、.NET Core/DNX、ASP.NET Core、.NET Standard、.NET 5、およびその他についての過去3年間の混乱を十分に把握する必要があります。

(そして、DevDivの元FTE SEとして... (「こんにちは、16号館から!」)

  • ASP.NET別名「System.Web」は廃止されました。 WebFormsが死んだ(hurrah!)
  • ASP.NET MVC 2008年にリリースされたのは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の上に構築されている、しかし、ASP.NET MVCSystem.Web.Http)とあまり共有しない独自のクラスライブラリ(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を単一の単一プラットフォームに結合することでした。
  • ASP.NET Coreは、ASP.NET MVC 5の改善された設計として2016年に発売されましたが、System.Web.dllまたは(現在のレガシー)IIS依存関係に依存しません。 (たとえば、古い要求パイプライン、IHttpHandlerおよびIHttpModuleはもう存在しません)。
    • ASP.NET Coreのクラスライブラリのルート名前空間がMicrosoft.AspNetではなくSystem.Webになっていることに注意してください。これは私にとって混乱の原因でした。これは、コントローラーとミドルウェアの基本アーキテクチャが同じであるにもかかわらず、プロジェクトをASP.NET MVCおよびASP.NET WebAPIからASP.NET Coreにアップグレードすることは簡単ではないことを意味します。 。
  • 。NET Coreは、CLRおよびBCLの新しいバージョンであり、Windows、Linux、およびmacOSで明示的にポータブルで実行されます。
    • 。NET Core 1.および。NET Core 2.の基本クラスライブラリは、full-fatと比較して貧弱と見なされました- 。NET FrameworkこれはWindows専用です。
    • 。NET Core 3.とWinForms、WPF、および.NET Frameworkのその他のコンポーネントのオープンソーシングにより、.NET Coreは、新しいアプリケーション開発のためのWindowsの.NET Frameworkの代替として準備されました。
  • 。NET 5は、。NET Coreがリリースされた後の.NET Coreの新しい名前になります(.NET 5は2020年後半に予定されています)。
    • 。NET 5は、絶対に何もありませんASP.NET 5.またはASP.NET MVC 5
    • 。NET Core 4。NET Framework 5.もありません。

「コア」は、.NET Coreで動作する.NETプラットフォームの現在の世代(つまり、Windowsに依存せず、ポータブルである)のMicrosofthotブランドです。 (Microsoftが1990年代にCOMやActiveX、たとえばActive Desktop、Active Channels、ActiMates、Active Directory、ActiveSyncなどを使用した場合に「Active」を固定したように)。 - さらに、Entity Framework CoreはまだEntity Framework 6の多くの機能を欠いています。これは基本的に書き直しだからです-しかし、最終的には同等になります。

現在、多くの.NETランタイムとBCLが利用可能であるため(.NET Framework、.NET Core、UWP、Xamarin(Monoを使用)、Unityなど)、Microsoftは導入しました。NET Standardこれは基本的に再起動ですポータブルクラスライブラリの概念:Visual Studioプロジェクトは、特定の実装ではなく、共通機能の既知のサブセットを対象としています。 1.0で開始するのではなく、.NET Frameworkに一致するように4からバージョン番号を開始することを望みます。これは 2001 について考え直したためです。) -しかし、重要な部分は、ASP.NET Core 1およびASP.NET Core 2 .NET Coreではなく.NET Standardをターゲットとすることです。つまり、ASP.NET Coreが実行されます.NET Core上での実行に加えて、Windows上の.NET Frameworkの上でも実行できます。

以前のすべての.NETクロスプラットフォーム互換性技術は現在廃止されていることに注意してください(コンパクトフレームワークサブセット、ポータブルクラスライブラリ、およびVisual Studioの "共有プロジェクト"を含む)。 .NET Compact Framework、XNA、Silverlight、Windows Phone 7のサブセットなど、より長く存在します。

2019年5月、 Microsoftは「.NET 5」を発表しました 。つまり、。NET Framework。NET Coreに置き換えられています(具体的には、.NET Core 3.0以降の.NET Coreの次のバージョンは.NET 5)。この発表は、ASP.NET Coreには関係ありません。ただし、.NET 5がASP.NET Core 3.で実行されるアプリケーションを完全にサポートするという事実を除きます。 (ASP.NET Core 4はおそらくそれまでにリリースされるでしょう)

要約すれば:

  • ASP.NET MVC 5は短期間存続したASP.NET MVC 4であり、ASP.NET Web API 2と一緒にリリースされました。実際にはASP.NET 4(つまり、System.Web.dllの.NET 4.xバージョン)の上で実行されました。プラットフォーム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は、。NET Core 3.でのみ実行されるようになりました。

それらすべて(時系列):

  • ASP.NET 1-2001。含まれていますWebForms。 .NET Framework 1.0および1.1で実行しました。 System.Web.dll
  • ASP.NET 2.-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.-2010。含まれていますWebForms。 .NET Framework 4.0で実行しました。 ASP.NET 3.はありませんでした。 System.Web.dll
  • ASP.NET MVCおよびASP.NET MVC 4-2010-2013。 ASP.NET 4.0の上で走りました。 System.Web.Mvc.dll
  • ASP.NET Web Api 1-2012。ASP.NET 4.の上に乗った。 System.Web.Http.dll
  • ASP.NET MVC 5-2013。ASP.NET MVCの更新。 ASP.NET 4.の上で実行されましたが、OWINの下でSystem.Web.dllなしで独立して実行することもできます。
  • ASP.NET Web API 2-2013。兄弟ASP.NET MVC 5。 OWINの下でASP.NET 4.なしでも実行できます。
  • ASP.NET MVC 6-2014-2015。 Release Candidateステータスに達した後、2016年にASP.NET Core 1のMVCおよびWeb APIコンポーネントであるASP.NET Core MVC 1.として再起動しました。
  • ASP.NET 5-2014。ASP.NETのメジャーリブート ここで説明 。主な変更点は、MVC、Webページ、Web APIの統合、およびWebFormsの削除です。 ASP.NET 5はRelease Candidateステータスに達しましたが、ASP.NET Coreにブランド変更されました。 ASP.NET 6はありませんでした。
  • ASP.NET Core 1-2016。。NET Framework 4.5または。NET Core 1.のいずれかで実行されます。
  • 。NET Core-2016。ポータブルで最小限の.NETランタイムおよびクラスライブラリ。
  • 。NET Standard-2017.すべての.NET実装(.NET Framework 4.5以降、.NET Core 2.0以降、Xamarin、等)。
  • ASP.NET Core 2-2017-2018:私たちは今日です。 。NET Framework 4.6.1または。NET Core 2.のいずれかで実行されます。 (2018年後半には、ASP.NET Core 2.1があります)。
  • ASP.NET Core- 2018年10月下旬に、MicrosoftはASP.NET Core 3.0が今後の.NET Core 3.0でのみ実行されることを発表しました (したがって、実行されなくなります.NET Framework 4.7.xで)。これは物議を醸す動きです。これは、サポートされていない依存関係のため、.NET Framework 4.7.xで実行されるアプリケーションのASP.NET Core 2.xからASP.NET Core 3.xへのアップグレードパスがないことを意味するためです.NET Coreはまだありません。つまり、.NET Standard 3.0はおそらくないでしょう。
  • 。NET 5上のASP.NET Core 3.-2019年5月の。NET 5の発表で、MicrosoftはASP.NET Core 3.0アプリケーションが.NET 5で実行されると述べました。 ASP.NET Core 2.xアプリケーションが変更されずに.NET 5で実行できるかどうかは現在不明です。

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

(これを作ることに夢中になった...)

Diagram with a timeline of ASP.NET and a block diagram showing how the components of .NET Framework, ASP.NET and ASP.NET MVC come together

91
Dai

この回答では、ASP.NET MVC 5のみに焦点を当て、できるだけ少ないASP.NET Coreに焦点を当てます。

製品ライフサイクル

マイクロソフトはこれを引き続きサポートしており、サポート終了はまだ発表されていませんが、

https://www.asp.net/support

フレームワーク/製品の廃止

ASP.NET MVC 4 2019年7月1日

ASP.NET MVC 5

あなたが好きなら、それを使い続けてください。 VB6および従来のASPユーザーは引き続きMicrosoftによってサポートされていることに注意してください。

.NET Framework 4.5.2以降は、製品のライフサイクルでMicrosoftのドキュメントを確認した場合でも引き続きサポートされます。

メンテナンス

ただし、開発リソースのほとんどは現在ASP.NET Core上にあるため、ASP.NET MVC 5がメンテナンスモードになっていることに注意する必要があります。

あなたは得る、

  • NuGet.orgからの予測不可能なパッチリリース。

関連するNuGetパッケージを監視する場合、最近でもMicrosoftがそれらを更新してセキュリティの脆弱性などを修正していることに注意してください。

  • ロックダウンされたドキュメント。

実際、Microsoft Docsからの通知は、「このコンテンツを定期的に更新していません」という最初の文を強調しています。 ASP.NET MVC 5は堅実なので、新しいマテリアルが追加されることを期待しないでください。

  • 非常に限られたバグ修正と新機能。

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

まあ、それは本当にあなたが話している「バグ」に依存します。前述したように、セキュリティ関連の問題はまだ修正されていますが、回避策や機能制限のあるバグは修正される可能性はほとんどありません。これはオープンソースプロジェクトですので、本当に必要な場合は、最後の手段として、自分で問題を修正できます。

新機能については、Microsoftは依存性注入、新しい構成システムなど、ASP.NET Coreの一部の機能をバックポートして、ある程度の移行を簡素化します。しかし、あまり期待しないでください。

移行

可能な場合は、ASP.NET Coreへの移行を検討してください。

7
Lex Li