web-dev-qa-db-ja.com

System.Net.HttpとMicrosoft.Net.Httpの現在のステータス

HttpClientのパッケージ化と混同しています。以前はMicrosoft.Http.Netはレガシーと見なされていましたが、System.Net.Http NuGetパッケージの一部として配布されました。今は逆のように見えます:すべてのプラットフォーム用の新しいSystem.Net.Httpパッケージがあり、Microsoft.Net.Httpはしばらく更新されておらず、Microsoft開発チームの人々は非推奨になるとのことです。

次に質問:

  • Microsoft.Net.Http NuGetパッケージへの依存関係を(最新の)System.Net.Httpに置き換えることはできますか?
  • レガシー.NET 4.0プラットフォームは引き続きMicrosoft.Net.Httpを使用する必要がありますか? Windows以外のプラットフォーム(iOS、Android)についてはどうですか?新しいSystem.Net.Httpはそれらをサポートしますが、私はMicrosoft.Net.Httpで覚えています。クロスプラットフォームのものを機能させるには、Microsoft.Bcl.BuildMicrosoft.Bclを追加でインストールする必要がありました。 System.Net.Httpはそれらに依存しません。 Bclパッケージをスキップできますか?
  • System.Net.HttpにはSupportsPreAuthenticateなどの一部のHttp拡張メソッドがなく、これらのメソッドを呼び出そうとするとランタイムエラーが発生します(メソッドがありません)。これにどのように対処する必要がありますか?
36
Vagif Abilov

これは長い間続いており、混乱し続けています。私はそのようなメッセージを自分で見ましたが、現時点では System.Net.Http が正しい選択であるように見えます。少なくともWindowsプラットフォームの.NETの場合、外部依存関係はありません。

.NET Coreでは Microsoft.Net.Http を使用しましたが、 Microsoft.BCL が必要です。問題が発生していない限り、特にこれらの名前空間はターゲットを移動しているように見えるため、レガシーシステムをそのままにすることをお勧めします。

それでも十分にわかりにくい場合は、System.Net.Httpからリンクされている HttpClient Sample が使用する Windows.Web.Http !この実装はWindowsストアアプリ用です。

おそらく来年はこれが再び変わるでしょう。

10
Chris Idzerda