Sto creando una libreria per altri sviluppatori da utilizzare ed è per comunicare con un servizio web di terze parti. Ho letto il problema relativo a HttpClient
e vorrei gestirlo correttamente, in modo che la libreria non diventi un peso.
Ho pensato di creare una base ServiceClient
che avrebbe 3 modi per costruirlo.
Il primo istanzia il HttpClient
stesso usando un static Lazy<HttpClient>
per mantenere una singola istanza nella lib. Se questo costruttore non viene mai utilizzato, l'oggetto interno non viene mai istanziato.
Il secondo costruttore accetta un HttpMessageHandler
e crea un'istanza di HttpClient
con esso ogni volta. Sarebbe una specie di costruttore di mocking test-friendly che altrimenti non avrebbe molto senso.
Il terzo costruttore accetta un'istanza HttpClient
, rendendo lo sviluppatore responsabile per la durata dell'oggetto, se questo è il loro desiderio.
Il mio pensiero iniziale era che uno sviluppatore potesse già utilizzare un HttpClient
nel codice e che potesse passare la stessa istanza alla lib e impedire di avere più di un'istanza. Ma poi ho pensato che il client e la lib sarebbero stati in grado di comunicare con endpoint totalmente diversi e la configurazione della lib (base, intestazioni, ecc.) Sarebbe in conflitto con il codice chiamante, che non è utile a nessuno.
Quindi ora mi sto proponendo di abbandonare il terzo costruttore, perché non sono sicuro che porti qualcosa al tavolo.
Qualcuno ha esperienza con questo?