لماذا يتم استدعاء خدمة ويب أبطأ من صفحة ويب؟

لدينا DLL المستخدمة كطبقة وسط بين واجهة موقعنا على شبكة الإنترنت ونظام التذاكر نهاية الظهر لدينا. طريقة الإدراج في نظام التذاكر معقدة بعض الشّيء لتفسير ، لكن النسخة القصيرة هي أنها بطيئة. أفضل سيناريو أحصل عليه هو وقت إرسال 9 ثانية.

لكن المشكلة الحقيقية هي أنه لا يمكنني الحصول على هذا الوقت إلا من خلال تطبيق Windows ، وليس من خلال موقع ويب ASP.NET. لقد قمت بإعداد كل من تطبيق اختبار Windows وصفحة ويب للاختبار ، وعلى الرغم من نسخ الشفرة بينهما ، فإن صفحة الويب يتم إرسالها باستمرار في غضون 17 إلى 20 ثانية ، في حين أن تطبيق windows يحصل على 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 ٪ من الوقت فقط على مكالمة خدمة الإنترنت. يبدو أنه لا يوجد فرق هناك ... إلا أنه عند انتهاء الوقت ، تستغرق صفحة الويب وقتًا أطول من تطبيق windows.

1
لست متأكدا مما تقصده...؟
وأضاف المؤلف CodeRedick, مصدر
اختبار بين اثنين من الخلفيات المختلفة لخدمة الويب: تم ​​إنشاء Reference.CS في حالة واحدة و WebClient في حالة أخرى. يتم إنشاء المرجع داخل .DLL يستخدمه كل من تطبيق windows وصفحة الويب.
وأضاف المؤلف CodeRedick, مصدر
ما هي برامج Windows وعملاء الويب الذين تستخدمهم لخدمات الويب؟
وأضاف المؤلف Mark Cidade, مصدر
هل تستخدم HttpWebRequest ، أو Reference.cs المنشأة ، أو عميل ويب لجانب JavaScript ، أو ماذا؟
وأضاف المؤلف Mark Cidade, مصدر

3 إجابة

يحتمل أن يكون موقع خدمة الويب فيما يتعلق بخادم الويب مشكلة. وأيضًا ، يمكن أن يكون لبنية الصفحة والمعالجة الأخرى داخل واجهة المستخدم على الويب تأثيرًا على المدة التي تستغرقها عملية معالجة الطلب.

نظرًا لأن عناصر التسجيل المذكورة على كلا الجانبين فكرة رائعة ، إذا لم تحصل على ما تحتاج إليه ، فيمكنك تجربة أداة تعريف أداء مثل Ants Profiler by Red Gate التي يمكن أن تساعد في تحديد الخط أو الطريقة أو الفصل الذي يستخدم الجزء الأكبر من الوقت.

2
وأضاف
سوف أبحث في Ants Profiler في هذه الحالة ، انظر إلى أوقات تنفيذ العروة. أيضا ، يتم طرح الاستثناءات أكثر في حالة واحدة من أخرى؟ الاستثناءات مكلفة.
وأضاف المؤلف Mitchel Sellers, مصدر
حسنًا ، تحقق مما إذا كان النمل بين التطبيقين يمكنه عزل خطًا واحدًا محددًا يبذل المزيد من الجهد.
وأضاف المؤلف Mitchel Sellers, مصدر
لقد أضفت تعديلًا في بعض المعلومات الإضافية. لا يمكنني الوصول إلى الأجزاء الداخلية من خدمة الويب ، ولكن لست متأكدًا من سبب أهمية ذلك على أي حال ...
وأضاف المؤلف CodeRedick, مصدر
أيضا بما أنني أختبر على سطح المكتب فإن خدمة الويب في نفس المكان لكلا العملاء ...
وأضاف المؤلف CodeRedick, مصدر
اللعب مع النمل الآن ، ولكن يتم طرح أي استثناءات.
وأضاف المؤلف CodeRedick, مصدر
إنها دعوة لخدمة الويب ، كما كنت أظن. 99 ٪ من الوقت هو فقط على هذه الدعوة واحدة ...
وأضاف المؤلف CodeRedick, مصدر

قم بتطبيق طلبك على كلا الجانبين مع السجلات - التي ستوضح لك المكان الذي يمر فيه الوقت. إذا لم يساعد ذلك ، فاستخدم Wireshark لتتبع نشاط الشبكة.

1
وأضاف

هل تعملان على نفس الجهاز؟ هل الطبقة الوسطى التي تتصل بها موجودة على جهاز بعيد؟ الفترات الزمنية التي ذكرتها بشكل مبهم تبدو وكأنها مشكلة مهلة نظام أسماء النطاقات ، عندما يؤدي فتح الاتصال إلى فرض عقوبة على الاستجابة الأولى (لأسفل/سوء التعامل) لنظام أسماء النطاقات. هل أنت متأكد من أن أي ملف config/var يشير إلى DLL إلى الطبقة الوسطى هي نفسها في كلا الدعوتين؟

أنا ثاني اقتراح استخدام Wireshark لمعرفة ما يجري. يمكنك على الأقل إرضاء نفسك أن وقت المعالجة الخلفية (يجب أن يكون ، على أي حال) هو نفسه ...

1
وأضاف
كانت مشكلة في التهيئة ، حيث كان يتم تقديمها في نظام الإنتاج على الرغم من استخدام كليهما لخدمة الويب الصحيحة. كان فارق التوقيت بسبب مدى ازدحاف قاعدة بيانات prod على ما يبدو. بصراحة ، لست متأكدا لماذا عملت على الإطلاق ... شكرا على الرغم من!
وأضاف المؤلف CodeRedick, مصدر