2016-08-18 34 views
29

Jestem zdezorientowany z opakowaniem HttpClient. Wcześniej był dystrybuowany jako część pakietu NuGet Microsoft.Http.Net, podczas gdy System.Net.Http został uznany za starszą. Wygląda na to, że jest odwrotnie: na wszystkich platformach jest świeży pakiet System.Net.Http, a wersja Microsoft.Net.Http nie była od jakiegoś czasu aktualizowana i według osób z zespołu programistów firmy Microsoft będzie przestarzała.Obecny status System.Net.Http vs. Microsoft.Net.Http

pytań to:

  • możemy zastąpić zależności na Microsoft.Net.Http pakietu Nuget z (najnowszej) System.Net.Http?
  • Czy starsza platforma .NET 4.0 nadal powinna używać Microsoft.Net.Http? Co z platformami innymi niż Windows (iOS, Android)? Nowy System.Net.Http obsługuje je, ale pamiętam z Microsoft.Net.Http musiałem zainstalować dodatkowo Microsoft.Bcl.Build i Microsoft.Bcl, aby uzyskać wiele platform do pracy. System.Net.Http nie jest od nich zależny. Czy pakiety Bcl można pominąć?
  • System.Net.Http brakuje niektórych metod rozszerzenia HTTP, takich jak SupportsPreAuthenticate, a próba wywołania tych metod powoduje błędy w czasie wykonywania (brakująca metoda). Jak powinniśmy sobie z tym poradzić?
+1

Prawdopodobny duplikat [System.Net.Http kontra Microsoft.Net.Http] (http://stackoverflow.com/questions/31053243/system-net-http-vs-microsoft-net-http) – DonO

+1

Tylko dać możliwy powód zmiany: Funkcje stosu sieciowego różnią się nieco między platformą Windows i innymi systemami operacyjnymi. Miałem problemy z używaniem aplikacji .NET napisanej dla Windows w środowisku Mono na przykład. Zmiana może wskazywać, że ostatecznie możliwe będzie naprawdę niezależne od platformy, dlatego może przenieść obiekty do przestrzeni nazw System. Szukaj referencji do tego pakietu Http z .NET Core, który może odpowiedzieć na twoje pytanie. – flohack

Odpowiedz

6

To było przez długi czas i nadal jest mylące. Sam widziałem takie wiadomości, ale od tej chwili wydaje się, że jest to właściwy wybór, przynajmniej dla .NET na platformie Windows i nie ma żadnych zewnętrznych zależności.

Dla .NET Core użyłem Microsoft.Net.Http, chociaż wymaga to Microsoft.BCL. Jeśli nie występują problemy, sugeruję pozostawienie dotychczasowych systemów bez zmian, zwłaszcza, że ​​te przestrzenie wydają się być ruchomymi obiektami docelowymi.

Jeśli to nie jest dla ciebie wystarczająco skomplikowane, HttpClient Sample powiązane z System.Net.Http używa Windows.Web.Http! Ta implementacja dotyczy aplikacji Windows Store.

Być może w przyszłym roku wszystko to znowu się zmieni.

+5

OMG .. czy nie możemy uzyskać kanonicznej odpowiedzi od kogoś z autorytetem? :( –