私はさまざまなプロジェクトに取り組んでいますが、どうやら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と互換性がない可能性があることを心配しています。
(この回答は、新しい.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号館から!」))
System.Web.Http
)とあまり共有しない独自のクラスライブラリ(System.Web.Mvc
)がありました。同じプロジェクトでASP.NET Web APIサービスをASP.NET MVC Webアプリケーションと組み合わせようとすると、苦労します。System.Web.dll
または(現在のレガシー)IIS依存関係に依存しません。 (たとえば、古い要求パイプライン、IHttpHandler
およびIHttpModule
はもう存在しません)。Microsoft.AspNet
ではなくSystem.Web
になっていることに注意してください。これは私にとって混乱の原因でした。これは、コントローラーとミドルウェアの基本アーキテクチャが同じであるにもかかわらず、プロジェクトをASP.NET MVCおよびASP.NET WebAPIからASP.NET Coreにアップグレードすることは簡単ではないことを意味します。 。「コア」は、.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はおそらくそれまでにリリースされるでしょう)
System.Web.dll
の.NET 4.xバージョン)の上で実行されました。プラットフォームASP.NET MVCは廃止されました。System.Web.dll
。System.Web.dll
。System.Web.Mvc.dll
。System.Web.dll
。System.Web.Mvc.dll
。System.Web.Http.dll
。System.Web.dll
なしで独立して実行することもできます。(これを作ることに夢中になった...)
この回答では、ASP.NET MVC 5のみに焦点を当て、できるだけ少ないASP.NET Coreに焦点を当てます。
製品ライフサイクル
マイクロソフトはこれを引き続きサポートしており、サポート終了はまだ発表されていませんが、
フレームワーク/製品の廃止
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パッケージを監視する場合、最近でもMicrosoftがそれらを更新してセキュリティの脆弱性などを修正していることに注意してください。
実際、Microsoft Docsからの通知は、「このコンテンツを定期的に更新していません」という最初の文を強調しています。 ASP.NET MVC 5は堅実なので、新しいマテリアルが追加されることを期待しないでください。
「そのプロジェクトを作成してから、MVCとEntity Frameworkの両方でバグのように見えるものを見つけましたが、Webでそれらについて言及しているのはCoreのみであり、修正されていると考えられている唯一の場所です」
まあ、それは本当にあなたが話している「バグ」に依存します。前述したように、セキュリティ関連の問題はまだ修正されていますが、回避策や機能制限のあるバグは修正される可能性はほとんどありません。これはオープンソースプロジェクトですので、本当に必要な場合は、最後の手段として、自分で問題を修正できます。
新機能については、Microsoftは依存性注入、新しい構成システムなど、ASP.NET Coreの一部の機能をバックポートして、ある程度の移行を簡素化します。しかし、あまり期待しないでください。
移行
可能な場合は、ASP.NET Coreへの移行を検討してください。