คลาส HttpClient คือ เหมาะสำหรับเป็นซิงเกิลตันมากกว่าสำหรับ โดเมนแอปเดียว ซึ่งหมายความว่าควรแชร์ซิงเกิลตันข้ามคลาสคอนเทนเนอร์หลายคลาส ด้วยกลยุทธ์นี้ คุณจะได้ซิงเกิลตัน แต่สิ่งนี้ทำให้ยากต่อการแบ่งปัน คลาส HttpClient ใช้อินเทอร์เฟซ IDisposable
เราควรสร้าง HttpClient อินสแตนซ์เดียวใหม่สำหรับคำขอทั้งหมดหรือไม่
แม้ว่ามันจะใช้อินเทอร์เฟซ IDisposable แต่จริง ๆ แล้วเป็นวัตถุที่ใช้ร่วมกัน ซึ่งหมายความว่าภายใต้ฝาครอบจะกลับเข้าที่และเธรดได้อย่างปลอดภัย แทนที่จะสร้างอินสแตนซ์ใหม่ของ HttpClient สำหรับแต่ละการดำเนินการ คุณ ควรแชร์อินสแตนซ์เดียว ของ HttpClient ตลอดอายุของแอปพลิเคชัน
คุณควรใช้ HttpClient ซ้ำหรือไม่
HttpClient คือ ตั้งใจจะสร้างอินสแตนซ์ครั้งเดียว และนำกลับมาใช้ใหม่ตลอดอายุของแอปพลิเคชัน การสร้างอินสแตนซ์คลาส HttpClient สำหรับทุกคำขอจะทำให้จำนวนซ็อกเก็ตพร้อมใช้งานภายใต้ภาระงานจำนวนมากจนหมด ซึ่งจะส่งผลให้เกิดข้อผิดพลาด SocketException
HttpClient ไม่มีการจัดการหรือไม่
แม้ว่า HttpClient จะใช้อินเทอร์เฟซ IDisposable ทางอ้อม การใช้งานมาตรฐานของ HttpClient จะไม่ทิ้งหลังจากทุกคำขอ ออบเจ็กต์ HttpClient มีไว้เพื่อให้ใช้งานได้ตราบเท่าที่แอปพลิเคชันของคุณต้องส่งคำขอ
HttpClient เธรดปลอดภัยหรือไม่
HttpClient ปลอดภัยต่อเธรดอย่างสมบูรณ์เมื่อ ใช้กับตัวจัดการการเชื่อมต่อที่ปลอดภัยสำหรับเธรด เช่น MultiThreadedHttpConnectionManager … ในขณะเดียวกัน ควรแชร์อินสแตนซ์ HttpClient และตัวจัดการการเชื่อมต่อระหว่างเธรดทั้งหมดเพื่อประสิทธิภาพสูงสุด