वेब पेज से वेब सेवा को धीमा क्यों कर रहा है?

हमारे पास एक डीएलएल है जो हमारी वेबसाइट फ्रंट एंड और बैक एंड टिकटिंग सिस्टम के बीच मध्य परत के रूप में उपयोग किया जाता है। टिकट प्रणाली में सम्मिलन की विधि व्याख्या करने के लिए थोड़ा जटिल है, लेकिन लघु संस्करण यह है कि यह धीमा है। मुझे प्राप्त होने वाला सबसे अच्छा केस परिदृश्य 9 सेकंड का सबमिशन समय है।

वास्तविक समस्या हालांकि, यह है कि मैं केवल उस समय विंडोज ऐप के माध्यम से प्राप्त कर सकता हूं, एएसपी.NET वेबसाइट के माध्यम से नहीं। मैंने परीक्षण के लिए एक विंडोज टेस्ट एप्लिकेशन और एक वेब पेज स्थापित किया है, और भले ही उनके बीच कोड कॉपी किया गया हो, फिर भी वेब पेज 17-20 सेकंड में लगातार सबमिट हो रहा है, जबकि विंडोज ऐप 8-11 सेकंड हो रहा है।

इसका कारण क्या हो सकता है?

संपादित करें: कुछ उत्तरों के जवाब में ...

वेब सेवा के लिए कॉल समय का बड़ा हिस्सा ले रहा है, लेकिन इस वेब सेवा पर मेरा कोई नियंत्रण नहीं है क्योंकि यह टिकट सिस्टम विक्रेता द्वारा प्रदान किया गया है। मुझे यह पता लगाने की ज़रूरत है कि वेब सेवा अलग-अलग समय क्यों ले रही है जब इसे एक अलग तरह का आवेदन कहा जाता है। कोड दोनों मामलों में बिल्कुल वही है, और यह एक लूप चला रहा है फिर रिकॉर्ड किए गए समय की रिपोर्टिंग।

कोड है:

for (int i = 0; i < numIterations; i++)
        {
            startTimes[i] = DateTime.Now;

            try
            {
                cvNum = Clearview.Submit(req, DateTime.Now, DateTime.Now, false);
            }
            catch (Exception ex)
            {
                exceptionCount++;
                lblResult.Text += @"
Exception Caught: " + ex.Message + @"
"; } endTimes[i] = DateTime.Now; }

यह दोनों मामलों में एक ही लूप है, और मैं पुस्तकालय में कॉल के पहले और बाद में सही समय पर अंक लगा रहा हूं, जो आगे संसाधित करता है और फिर वेब सेवा को कॉल करता है। लेकिन वह प्रसंस्करण सुसंगत होना चाहिए, है ना? मैंने डीबगिंग के दौरान पता लगाया है और वास्तविक वेब सेवा कॉल में कोई देरी नहीं देखी है ...

फिर से संपादित करें: चींटियों के साथ काम करना, दोनों मामलों में 99.4% समय केवल वेब सेवा कॉल पर भेजा जा रहा है। वहां कोई अंतर नहीं दिखता है ... सिवाय इसके कि जब वेब पेज का समय विंडोज ऐप से अधिक समय ले रहा है।

1
पक्का नहीं आपका क्या मतलब है...?
जोड़ा लेखक CodeRedick, स्रोत
दो अलग-अलग वेब सेवा बैकएंड के बीच परीक्षण: जेनरेट रेफरेंस.सीएस एक मामले में और वेब क्लाइंट दूसरे में। संदर्भ विंडोज़ ऐप और वेब पेज दोनों द्वारा उपयोग किए जाने वाले डीएलएल के भीतर उत्पन्न होता है।
जोड़ा लेखक CodeRedick, स्रोत
आप वेब सेवाओं के लिए किस विंडोज और वेब क्लाइंट का उपयोग कर रहे हैं?
जोड़ा लेखक Mark Cidade, स्रोत
क्या आप HttpWebRequest का उपयोग कर रहे हैं, जेनरेटेड रेफरेंस.cs, एक जावास्क्रिप्ट क्लाइंट-साइड वेब क्लाइंट, या क्या?
जोड़ा लेखक Mark Cidade, स्रोत

3 उत्तर

संभावित रूप से वेब सर्वर के संबंध में वेब सेवा का स्थान कोई समस्या हो सकती है। साथ ही, आपके वेब यूआई के अंदर पृष्ठ संरचना और अन्य प्रसंस्करण पर असर पड़ सकता है कि एप्लिकेशन को प्रक्रिया में कितना समय लगता है।

जैसा कि दोनों पक्षों पर लॉगिंग आइटम का उल्लेख किया गया है, यह एक अच्छा विचार है, अगर आपको वह चीज़ नहीं मिलती है जो आपको चाहिए, तो आप प्रदर्शन गेलर जैसे एंटर प्रोफाइलर को रेड गेट द्वारा आज़मा सकते हैं जो उपयोग करने वाली लाइन, विधि या कक्षा की पहचान करने में मदद कर सकता है समय का बड़ा हिस्सा

2
जोड़ा
मैं इस मामले में चींट्स प्रोफाइलर को देख रहा हूं, लूप निष्पादन के समय देखें। इसके अलावा, एक मामले में एक मामले में अपवादों को और अधिक फेंक दिया जा रहा है? अपवाद महंगा हैं।
जोड़ा लेखक Mitchel Sellers, स्रोत
ठीक है, देखें कि दो ऐप्स के बीच चींटियां एक विशिष्ट रेखा को अलग कर सकती हैं जो अधिक प्रयास कर रही है।
जोड़ा लेखक Mitchel Sellers, स्रोत
मैंने अभी कुछ और जानकारी में संपादित किया है। मेरे पास वेब सेवा के आंतरिक भाग तक पहुंच नहीं है, लेकिन यह सुनिश्चित नहीं है कि यह वैसे भी क्यों मायने रखता है ...
जोड़ा लेखक CodeRedick, स्रोत
चूंकि मैं अपने डेस्कटॉप पर परीक्षण कर रहा हूं, इसलिए वेब सेवा दोनों ग्राहकों के लिए एक ही स्थान पर है ...
जोड़ा लेखक CodeRedick, स्रोत
चींटियों के साथ अब खेल रहा है, लेकिन कोई अपवाद नहीं फेंक दिया जा रहा है।
जोड़ा लेखक CodeRedick, स्रोत
यह वेब सेवा का आह्वान है, जैसा कि मुझे संदेह था। 99% समय सिर्फ उस कॉल पर है ...
जोड़ा लेखक CodeRedick, स्रोत

लॉग के साथ दोनों तरफ अपने आवेदन काली मिर्च - जो आपको दिखाएगा कि समय कहां जा रहा है। यदि इससे मदद नहीं मिलती है, तो नेटवर्क गतिविधि का पता लगाने के लिए Wireshark का उपयोग करें।

1
जोड़ा

क्या आप एक ही मशीन पर चल रहे हैं? क्या आप मध्य-परत को दूरस्थ मशीन पर स्थित कर रहे हैं? आपके द्वारा उल्लिखित समय अवधि एक DNS टाइमआउट समस्या की तरह लगती है, जब कनेक्शन खोलते समय पहले (नीचे/गलत तरीके से) DNS प्रतिक्रिया के लिए जुर्माना लगाया जाता है। क्या आप सुनिश्चित हैं कि डीएलएल को मध्य-परत पर इंगित करने वाली जो भी कॉन्फ़िगरेशन फ़ाइल/var दोनों आमंत्रणों में समान है?

मैं क्या देख रहा हूं यह देखने के लिए Wireshark का उपयोग करने के लिए सुझाव दूसरा। आप कम से कम खुद को संतुष्ट कर सकते हैं कि बैकएंड प्रोसेसिंग समय (वैसे भी होना चाहिए) वही है ...

1
जोड़ा
यह एक कॉन्फ़िगरेशन मुद्दा था, एक उत्पादन प्रणाली में जमा कर रहा था हालांकि दोनों सही वेब सेवा का उपयोग कर रहे थे। समय अंतर यह था कि प्रोड डेटाबेस कितना व्यस्त है। ईमानदारी से, यकीन नहीं है कि यह बिल्कुल क्यों काम किया ... धन्यवाद हालांकि!
जोड़ा लेखक CodeRedick, स्रोत