โปรดจำไว้ว่าทั้งหมดนี้อยู่ในบริบทของระบบนิเวศ. Net
นักพัฒนาบางครั้งต้องการ "เพิ่มประสิทธิภาพ" รหัสเพื่อใช้วัตถุการเชื่อมต่อของพวกเขาอีกครั้ง เมื่อพิจารณาถึงบริบทของคำถามนี้นี่เป็นความผิดพลาดเกือบทุกครั้ง
ADO.Net มีคุณสมบัติที่เรียกว่าเชื่อมต่อร่วมกัน เมื่อคุณสร้างและเปิดวัตถุเชื่อมต่อใหม่สิ่งที่คุณกำลังทำจริง ๆ คือร้องขอการเชื่อมต่อจากกลุ่ม เมื่อคุณปิดการเชื่อมต่อคุณจะกลับสู่สระ
มันเป็นสิ่งสำคัญที่จะเข้าใจวัตถุที่เราใช้โดยตรงในรหัส: SqlConnection, MySqlConnection, OleDbConnectio ฯลฯ มีทั้งหมดเพียงแค่ห่อรอบเชื่อมต่อพื้นฐานจริงจัดการโดย ADO.Net และการเชื่อมต่อจริง ADO.Net มีมาก "หนัก" และมีราคาแพงมากขึ้น จากมุมมองประสิทธิภาพ มันคือวัตถุพื้นฐานที่มีความกังวลเช่นการรับรองความถูกต้องการส่งผ่านเครือข่ายการเข้ารหัสและสิ่งเหล่านั้นมีมากกว่าหน่วยความจำในวัตถุที่คุณเห็นในรหัสของคุณ
เมื่อคุณพยายามที่จะใช้วัตถุการเชื่อมต่อของคุณใหม่คุณทำลายความสามารถในการ ADO.Net เพื่อจัดการการเชื่อมต่อพื้นฐานที่สำคัญได้อย่างมีประสิทธิภาพ คุณได้รับประสิทธิภาพในสิ่งเล็ก ๆ น้อย ๆ ด้วยค่าใช้จ่ายของสิ่งใหญ่
การใช้การเชื่อมต่อข้ามแอปพลิเคชันหรือคำขอ HTTP อีกครั้งยังสามารถบังคับให้คุณทำสิ่งที่เป็นอันดับต่อเนื่องโดยไม่ตั้งใจซึ่งอาจทำให้สามารถทำงานแบบขนานและกลายเป็นปัญหาคอขวดของประสิทธิภาพการทำงาน ฉันเคยเห็นสิ่งนี้เกิดขึ้นในแอปพลิเคชันจริง
ในกรณีตัวอย่างหน้าเว็บที่นี่อย่างน้อยที่สุดคุณเชื่อมต่อเพียงเล็กน้อยในช่วงเวลาของการร้องขอ / ตอบกลับ http เดียวคุณสามารถเพิ่มประสิทธิภาพได้มากขึ้นโดยการประเมินว่าแบบสอบถามใดที่คุณเรียกใช้ในขั้นตอนการร้องขอของคุณ พวกเขาลงไปที่คำขอที่แยกกันไปยังฐานข้อมูลน้อยที่สุดเท่าที่จะทำได้ (คำใบ้: คุณสามารถส่งแบบสอบถามมากกว่าหนึ่งรายการในสตริง SQL เดียวและใช้DataReader.NextResult()
หรือตรวจสอบตารางอื่นในการDataSet
ย้ายระหว่างพวกเขา)
กล่าวอีกนัยหนึ่งแทนที่จะคิดในแง่ของการใช้การเชื่อมต่อหนึ่งครั้งสำหรับแอปพลิเคชันหรือการร้องขอ http เทียบกับการเชื่อมต่อหนึ่งครั้งต่อการค้นหาให้คิดในแง่ของการเชื่อมต่อหนึ่งครั้งในแต่ละครั้งที่คุณโทรออกไปยังฐานข้อมูล ... จากนั้นพยายามลดจำนวนการเชื่อมต่อโดยลดจำนวนการเดินทางเหล่านั้นให้น้อยที่สุด ด้วยวิธีนี้คุณสามารถบรรลุเป้าหมายทั้งสองได้
แต่นั่นเป็นเพียงการเพิ่มประสิทธิภาพอย่างหนึ่ง นอกจากนี้ยังมีการเพิ่มประสิทธิภาพเวลาโปรแกรมเมอร์และการใช้รหัสที่มีประสิทธิภาพอีกครั้ง นักพัฒนาไม่ต้องการที่จะเขียนรหัสต้นแบบเดียวกันซ้ำแล้วซ้ำอีกเพียงเพื่อรับวัตถุการเชื่อมต่อที่เปิดและพร้อมใช้งาน มันไม่เพียง แต่น่าเบื่อเท่านั้น แต่ยังเป็นวิธีการแนะนำข้อบกพร่องในโปรแกรมอีกด้วย
แม้ว่าที่นี่จะดีกว่าหากมีการเชื่อมต่อหนึ่งรายการต่อการสืบค้นหนึ่งรายการ (หรือไปกลับ) มีรูปแบบอื่น ๆ ที่คุณสามารถใช้เพื่อช่วยหลีกเลี่ยงการเขียนรหัสสำเร็จรูปแผ่นเดียวกันอีกครั้ง นี่คือตัวอย่างหนึ่งที่ฉันชอบ แต่ก็มีอีกหลายอย่าง