Cześć,
robię prostą aplikacje (winforms) której głównym zadaniem będzie wysłanie dużych ilości zapytań do serwerów. Do tej pory jak potrzebowałem coś pobrać, to korzystałem z webclienta ewentualnie webrequest jak chciałem coś wysłać. Teraz chciałbym wykorzystać httpclient. Z tego co wyczytałem, to powinno się utworzyć jednego klienta, zamiast używać using. Z tym, że nie bardzo wiem jak do tego podejść. Czy dobrym rozwiązaniem będzie stworzenie instancji np w form1 i odwoływanie się do niej np. tak; method(httpclient client) (tutaj chodzi mi o metody w innych klasach)? I czy z HttpClientHandler, też należy tak postępować (tzn. tworzyć tylko jedną instancję) ? A jeśli tak, to jak wtedy obsłużyć proxy/cookies które dla każdego serwera będą inne? Tak jak pisałem, nie za bardzo wiem jak się za to zabrać i nie mam też dużego doświadczenia w 'requestach', także sorry jak piszę jakieś totalne pierdoły ;d
jezeli mozesz to uzyj.
https://github.com/aspnet/HttpClientFactory
jest to dobre rozwiazanie jezeli potrzebujesz klika httpclientow.
Nie jest problemem posiadanie kilku Httpclientow, ale problemem jest, ze HttpClient tworzy i otwiera socket. Przez co jak tworzysz nowe instacje to moze Ci zabraknac socketow. HttpClientFactory rozwiazuje ten problem
A jeśli to jakieś serwisy testowe, to użyj RestSharpa.
somekind napisał(a):
A jeśli to jakieś serwisy testowe, to użyj RestSharpa.
O, ten restsharp wydaje się super. A w nim też unikać tworzenia kilku klientów, czy nie występuje taki problem jak z;
fasadin napisał(a):
Nie jest problemem posiadanie kilku Httpclientow, ale problemem jest, ze HttpClient tworzy i otwiera socket. Przez co jak tworzysz nowe instacje to moze Ci zabraknac socketow. HttpClientFactory rozwiazuje ten problem
? Bo z tego co widzę, to nawet nie da się zamknąć tego połączenia, jak w przypadku httpclienta.
RestSharp zajmuje się połączeniami za Ciebie, Ty tylko tworzysz sobie RestClient
tam gdzie chcesz i ile razy chcesz.