Logo th.boatexistence.com

Httpclient ควรเป็นแบบชั่วคราวหรือแบบซิงเกิลตัน

สารบัญ:

Httpclient ควรเป็นแบบชั่วคราวหรือแบบซิงเกิลตัน
Httpclient ควรเป็นแบบชั่วคราวหรือแบบซิงเกิลตัน
Anonim

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

เราควรสร้าง HttpClient อินสแตนซ์เดียวใหม่สำหรับคำขอทั้งหมดหรือไม่

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

คุณควรใช้ HttpClient ซ้ำหรือไม่

HttpClient คือ ตั้งใจจะสร้างอินสแตนซ์ครั้งเดียว และนำกลับมาใช้ใหม่ตลอดอายุของแอปพลิเคชัน การสร้างอินสแตนซ์คลาส HttpClient สำหรับทุกคำขอจะทำให้จำนวนซ็อกเก็ตพร้อมใช้งานภายใต้ภาระงานจำนวนมากจนหมด ซึ่งจะส่งผลให้เกิดข้อผิดพลาด SocketException

HttpClient ไม่มีการจัดการหรือไม่

แม้ว่า HttpClient จะใช้อินเทอร์เฟซ IDisposable ทางอ้อม การใช้งานมาตรฐานของ HttpClient จะไม่ทิ้งหลังจากทุกคำขอ ออบเจ็กต์ HttpClient มีไว้เพื่อให้ใช้งานได้ตราบเท่าที่แอปพลิเคชันของคุณต้องส่งคำขอ

HttpClient เธรดปลอดภัยหรือไม่

HttpClient ปลอดภัยต่อเธรดอย่างสมบูรณ์เมื่อ ใช้กับตัวจัดการการเชื่อมต่อที่ปลอดภัยสำหรับเธรด เช่น MultiThreadedHttpConnectionManager … ในขณะเดียวกัน ควรแชร์อินสแตนซ์ HttpClient และตัวจัดการการเชื่อมต่อระหว่างเธรดทั้งหมดเพื่อประสิทธิภาพสูงสุด