मेरे पास अपने बिजनेस-लॉजिक को स्टैटिक विधियों के साथ सरल स्टेटिक कक्षाओं में लागू किया गया है। इनमें से प्रत्येक विधि खोलने पर SQL कनेक्शन खुलता है / बंद होता है:
public static void DoSomething(string something)
{
using (SqlConnection connection = new SqlConnection("..."))
{
connection.Open();
// ...
connection.Close();
}
}
लेकिन मुझे लगता है कि कनेक्शन खोलने और बंद करने से बचें प्रदर्शन को बचाता है । मैंने OleDbConnection class (SqlConnection के बारे में निश्चित नहीं) के साथ कुछ समय पहले loooong परीक्षण किया था , और यह निश्चित रूप से इस तरह काम करने में मदद की (जहाँ तक मुझे याद है):
//pass the connection object into the method
public static void DoSomething(string something, SqlConnection connection)
{
bool openConn = (connection.State == ConnectionState.Open);
if (!openConn)
{
connection.Open();
}
// ....
if (openConn)
{
connection.Close();
}
}
तो प्रश्न है - क्या मुझे विधि (ए) या विधि (बी) चुननी चाहिए? मैं एक और स्टैकओवरफ़्लो प्रश्न पर पढ़ता हूं कि कनेक्शन पूलिंग ने मेरे लिए प्रदर्शन को बचाया, मुझे बिल्कुल परेशान नहीं होना पड़ेगा ...
पुनश्च। यह एक ASP.NET ऐप है - कनेक्शन केवल एक वेब-अनुरोध के दौरान मौजूद है। जीत-ऐप या सेवा नहीं।
DbConnection.StateChange
कनेक्शन की जांच करने के बजाय कनेक्शन के राज्य परिवर्तन (और स्थानीय रूप से स्टोर किया जा सकता है) में परिवर्तनों की निगरानी के लिए घटना का उपयोग करेंDbConnection.State
। यह आपको प्रदर्शन लागत बचाएगा।