6

मैं अपने डीएएल के लिए लिंक से एसक्यूएल का उपयोग कर रहा हूं और वेब अनुप्रयोग (थ्रेडिंग/समवर्ती मुद्दों के संबंध में) में स्थिर तरीकों का उपयोग करने के बारे में विभिन्न चीजें सुनाई है। फिलहाल, मैंने एक परीक्षण डीएएल बनाया, जो ठीक काम कर रहा है। हालांकि, क्या मैंने इसे बनाया है, इस तरह से कोई समस्या है, क्योंकि यह स्थिर है?लिंक से SQL DAL के लिए उपयुक्त स्थिर विधियां हैं?

public static class TestDAL 
    { 


     public static bool GetUserAddress(string username) 
     { 
      testDBDataContext dbContext = new testDBDataContext(); 
      //Linq code goes here 

     } 


     public static void InsertUserNumber(int userID) 
     { 
      testDBDataContext dbContext = new testDBDataContext(); 
      //... 
      dbContext.UserDetails.InsertOnSubmit(nUser); 
      dbContext.SubmitChanges(); 

     } 

     //etc... All the methods are created in the same way 


    } 

क्या यह विधि किसी वेब एप्लिकेशन के लिए ठीक है, या उत्पादन वातावरण में समस्याएं होंगी?

धन्यवाद।

+0

आपने थ्रेडिंग/समरूपता के बारे में क्या बातें सुनी हैं? – ScottE

+0

@ स्कॉट: मैंने कभी भी किसी भी महान विवरण में कुछ भी नहीं सुना है (आंशिक रूप से मैंने यहां पूछने का फैसला क्यों किया), लेकिन मुझे यह कहते हुए एक पोस्ट देखने का याद है कि ऐसे मुद्दे हो सकते हैं जहां एक उपयोगकर्ता का डेटा किसी अन्य के साथ मिश्रित हो, क्योंकि उन्होंने एक्सेस किया है एक ही समय में डीएएल विधियों। – Skoder

उत्तर

5

जब तक आपकी स्थिर विधियां किसी भी साझा स्थिति (वर्ग-स्तरीय राज्य या अन्य वैश्विक स्थिति) का उपयोग नहीं करती हैं, तो वे खुद को बहुसंख्यक वातावरण में चलने वाली कोई समस्या नहीं पैदा करेंगे। प्रत्येक स्थैतिक विधि आमंत्रण अपने स्थानीय चर की प्रतियां बनायेगा।

+0

@ जेफ: उत्तर के लिए धन्यवाद। नहीं, इस संबंध में विधियां बहुत अधिक आत्मनिर्भर हैं। मुझे बस कुछ एल 2 एस लेख देखने को याद है, और उनके पास एक गैर-स्थैतिक वर्ग था जिसमें केवल एक डेटा कॉन्टेक्स्ट उदाहरण था (जिसे अन्य तरीकों से उपयोग किया जाता है)। मैं सिर्फ यह सुनिश्चित करना चाहता था कि मेरे पास जिस विधि का तरीका है, प्रति विधि नए डेटाकॉन्टेक्स बनाए जा रहे हैं, समस्याग्रस्त नहीं होंगे। – Skoder

+0

क्षमा करें, पूछने के लिए भूल गए। यदि एक विधि किसी अन्य विधि को आमंत्रित करती है, तो क्या वह चर के रूप में गिना जाएगा (जहां या तो विधि को व्यक्तिगत रूप से भी कहा जा सकता है)? या फिर भी प्रत्येक विधि फिर भी अपना खुद का स्थानीय चर बनायेगी? – Skoder

+1

स्टेटिक विधियां थ्रेडिंग समस्याओं के कारण एक दूसरे को बुला सकती हैं, जब तक कि दोनों विधियां केवल स्थानीय चर (और विधि पैरामीटर) का उपयोग न करें। मल्टीथ्रेड किए गए वातावरण (जैसे एक वेब ऐप) में चलते समय क्या हिस्सेदारी है, और क्या गलत हो सकता है, इसके बारे में जानने के लिए, मैं यूसुफ अल्बाहारी की सिफारिश की गई "सी # में थ्रेडिंग" (http: //www.albahari पर) की सिफारिश करने की सलाह देता हूं। कॉम/थ्रेडिंग /) और जॉन स्कीट की "बहु-थ्रेडिंग .NET" (http://www.yoda.arachsys.com/csharp/threads/)। –

3

व्यक्तिगत रूप से मैं स्थैतिक तरीकों से बचूंगा क्योंकि यह इस कोड को परीक्षण करने के लिए बहुत कठिन बना देगा। जब आप इसका उपयोग करने वाले कोड का परीक्षण करते हैं तो आप आसानी से डीएएल को नकल करने में सक्षम नहीं होंगे। ध्यान दें कि यह LINQ या डेटा एक्सेस परतों के लिए अद्वितीय नहीं है, यह एक उदाहरण विधि के बजाय कोड विधि का एक कार्य है।

+0

@tvanfosson: सलाह के लिए धन्यवाद। यह वर्तमान परियोजना काफी छोटी है, इसलिए परीक्षण एक निर्णायक कारक नहीं है। हालांकि, एक बड़ी परियोजना पर काम करते समय, मैं निश्चित रूप से उदाहरण के तरीकों को ध्यान में रखूंगा। – Skoder

2

आपके द्वारा प्रदान किए गए स्निपेट से यह बहुत स्पष्ट नहीं है कि विभिन्न विधियां क्या करती हैं। जिस तरह से मैं इसे देखता हूं, जब तक आप स्थानीय चर का उपयोग कर रहे हैं, यह सुरक्षित है।

+0

@ डारिन: उत्तर के लिए धन्यवाद। अन्य विधियां बहुत सामान्य हैं, लेकिन उनमें से कोई भी वैश्विक चर साझा नहीं करता है। – Skoder

संबंधित मुद्दे