سؤال

وجدت بعض الملاحظات التي البرية ASP.NET MVC هو 30x أسرع من ASP.NET WebForms.ماذا الأداء الحقيقي الفرق هو هناك ، وهذا قياس ما هي مزايا الأداء.

هذا هو مساعدتي في النظر في الانتقال من ASP.NET WebForms إلى ASP.NET MVC.

هل كانت مفيدة؟

المحلول

لم يتم تنفيذ نوع من قابلية والاداء الاختبارات اللازمة من أجل التوصل إلى أي استنتاجات.أعتقد ScottGu قد تم مناقشة إمكانية perf الأهداف.ونحن نتحرك نحو بيتا و RTM, سوف داخليا أن تفعل المزيد من الأداء في الاختبار.ولكن لست متأكدا ما لدينا سياسة نشر نتائج اختبارات الأداء.

في أي حال, أي من هذه الاختبارات حقا بحاجة إلى النظر في تطبيقات العالم الحقيقي...

نصائح أخرى

أعتقد أن هذا سيكون سؤال تصعب الإجابة نهائيا كما الكثير سيعتمد على أ) كيفية تنفيذ WebForms التطبيق ، ب) كيف يمكنك تنفيذ طلبك MVC.في "الخام" أشكال, MVC هو الأرجح أسرع من WebForms لكن بعد سنوات و سنوات من الأدوات والخبرة قد أنتجت عددا من التقنيات من أجل بناء سريع WebForms التطبيقات.سأكون على استعداد للمراهنة على أن أحد كبار ASP.NET المطور يمكن أن تنتج WebForms التطبيق الذي ينافس سرعة أي MVC التطبيق - أو على الأقل تحقيق ضئيلة الفرق.

الفرق الحقيقي- كما @tvanfosson اقترح- في الاختبار و تنظيف شركة نفط الجنوب.إذا تحسين الأداء الخاص بك هو الهم ، أنا لا أعتقد أنه سبب عظيم القفز من السفينة على WebForms والبدء في إعادة بناء في MVC.على الأقل حتى كنت قد حاولت التقنيات المتاحة لتحسين WebForms.

انخفض واحدة من بلدي صفحات من 2MB الحمولة إلى 200 ألف فقط من خلال القضاء على viewstate وجعله احتمالا برمجيا إلى العمل مع المقدمة الانتاج.

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

أعتقد أن العديد من الناس الذين يعتقدون أن WebForms بطبيعتها بطيئة أو الموارد المكثفة هي وضع اللوم في المكان الخطأ.9 مرات من أصل 10 عندما أكون في جلب لتحسين webforms التطبيق هناك العديد من الأماكن حيث التطبيقات الكتاب فهم الغرض من viewstate.أنا لا أقول أن viewstate مثالية أو أي شيء, ولكن هذا هو الطريق السهل جدا أن الاعتداء عليه ، وهذا هو الاعتداء الذي يسبب المتضخمة viewstate المجال.

هذا المقال invalueable في مساعدتي على فهم العديد من هذه الانتهاكات. https://weblogs.asp.net/infinitiesloop/truly-understanding-viewstate

من أجل إجراء مقارنة صحيحة بين MVC و WebForms نحن بحاجة إلى أن تكون على يقين من أن كل من تطبيقات تستخدم أبنية بشكل صحيح.

الاختبار يظهر شيء بين 2x و 7x أكثر req/ثانية على MVC, ولكن ذلك يعتمد على كيفية بناء الخاصة بك webforms التطبيق.مع فقط "مرحبا العالم" نص على ذلك ، دون أي جانب الخادم التحكم, mvc حوالي 30-50 ٪ أسرع.

بالنسبة لي حقيقي "الأداء" التحسن في MVC هو زيادة قابلة للاختبار سطح التطبيق.مع WebForms كان هناك الكثير من التطبيقات التي كان من الصعب اختبار.مع MVC كمية من التعليمات البرمجية التي تصبح قابلة للاختبار أساسا الزوجي.أساسا كل هذا ليس بسهولة قابلة للاختبار هو الذي يولد تخطيط.كل الأعمال التجارية الخاصة بك المنطق و الوصول إلى البيانات المنطق-بما في ذلك المنطق بملء البيانات الفعلية المستخدمة في عرض -- هي الآن قابلة للاختبار.بينما كنت أتوقع أن تكون أكثر performant وكذلك -- دورة حياة الصفحة هو تبسيطها إلى حد كبير وأكثر أكثر قابلية برمجة الويب-حتى لو كانت نفس أو أبطأ قليلا سيكون من يستحق التبديل إلى من منظور جودة.

أعتقد أن المشكلة هنا هو أنه لا يهم كيف أسرع بكثير ASP.Net MVC هو من القديم webforms ، فإنه لن يحدث فرقا ، لأن معظم الوقت المستغرق في قاعدة البيانات.معظم الوقت ، ملقمات ويب سوف يجلس في 0-10% استخدام وحدة المعالجة المركزية فقط في انتظار خادم قاعدة البيانات الخاصة بك.ما لم تحصل على عدد كبير جدا من الزيارات على موقع الويب الخاص بك ، قاعدة البيانات الخاصة بك هو سريع للغاية ، ربما لن تلاحظ فرق كبير.

فقط أرقام محددة يمكنني العثور والتي هي من أوائل ASP.NET MVC-في هذا المنتدى-الموضوع:

http://forums.asp.net/p/1231621/2224136.aspx

روب كونري نفسه إلى حد ما يؤكد البيان أن ScottGu قد ادعى أن ASP.NET MVC يمكن أن تخدم 8000 الطلبات في الثانية.

جيف و طاقمه يمكن أن تعطي نوعا من التلميح من تطوير هذا الموقع.

خلافا قبول الرأي الأمثل webforms الاستخدام تماما يقتل MVC من حيث الأداء الخام.Webforms وقد فرط الأمثل مهمة تخدم html أطول بكثير مما MVC له.

تتوفر المقاييس على http://www.techempower.com/benchmarks/#section=data-r7&hw=i7&test=db

كل واحد مقارنة mvc على-المتوسطة/المنخفضة العلوي ترتيب القائمة ، بينما الأمثل webforms استخدام الأماكن في العليا المتوسطة/العلوي-السفلي التصنيف العالمي.

القصصية ولكنها خطيرة جدا التحقق من صحة هذه المقاييس ، www.microsoft.com هو خدم من قبل webforms لا MVC.لا أحد هنا يعتقدون أنهم لن اختارت MVC إذا كان تجريبيا أسرع ؟

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

لقد بدأت العمل في MVC قبل حوالي سنة كنت مستوحاة ولكن لا أعجب.

أنا مشمئز رأي الدولة و يرون أنها أصل كل الشر من حيث ASP.NET.هذا هو السبب في أنني لا تستخدم فقط و أن نكون صادقين تماما لماذا ؟

أخذت أساسا ASP.NET إطار MVC مفهوم بنيت في طريقتي الخاصة.لقد غيرت بعض الأشياء على الرغم من.لقد بنيت بلدي تحكم التغليف كود أو رابط التوجيه مدونة حول ديناميكية إعادة تجميع.

الآن, أود أن أذهب إلى حد القول أن ASP.NET MVC التطبيقات ستكون أسرع على أساس كيفية استخدامه.إذا كنت التخلي تماما WebForms عليك أن تكون أسرع في بيكوس ASP.NET دورة حياة كائن نموذج العملاقة.

عندما كنت تكتب أنت إنشاء جيش...لا انتظر فيلق من الكائنات التي سوف تشارك في تقديم العرض الخاص بك.هذا سيكون أبطأ مما لو كنت حيث أن تعبر عن الحد الأدنى من السلوك في صفحة ASPX نفسها.(أنا لا يهمني رأي المحرك التجريد لأن دعم صفحات ASPX في Visual Studio هو لائق, ولكن لقد انخفض تماما WebForms كمفهوم وأساسا أي ASP.NET بسبب رمز سخام أو عدم القدرة على تغيير الأشياء التي سلك طلبي).

لقد وجدت طرق الاعتماد على ديناميكية إعادة تصنيف (نظام.انعكاس.تنبعث منها) عن انبعاث الأغراض الخاصة الكائنات رمز كلما دعت الحاجة.المنفذة من هذا القانون هو أسرع من التفكير ولكن بنيت في البداية من خلال انعكاس الخدمة.وقد أعطى هذا لي MVC النكهة إطار أداء رائعا ولكن أيضا جدا كتابتها بشكل ثابت.أنا لا استخدام سلاسل الاسم/القيمة زوج مجموعات.بدلا من عادتي مترجم خدمات يذهب في كتابة شكل آخر تحكم العمل يجري تمرير نوع مرجع.خلف الكواليس هناك الكثير من الأمور ولكن هذا الرمز هو سريع, أسرع كثيرا من WebForms أو إطار MVC.

أيضا, أنا لا أكتب عناوين url أكتب امدا التعبيرات التي ترجمتها إلى عناوين url التي تقول في وقت لاحق التي تحكم عمل الاحتجاج.هذا ليس سريع للغاية لكنه يتفوق وجود كسر في عناوين url.انها مثل إذا كنت قد كتابتها بشكل ثابت الموارد فضلا عن كتابتها بشكل ثابت الكائنات.وهو ثابت كتابة تطبيقات الويب ؟ وهذا هو ما أريد!

أنا من شأنه أن يشجع المزيد من الناس إلى محاولة ذلك.

المشاريع التي تم إنشاؤها باستخدام visual studio.واحد هو mvc4 قالب آخر هو نموذج ويب (s).و عند إجراء اختبار الحمل مع WCAT, هذه هي النتيجة ،

MVC4 بطيئة جدا من WebForms أي أفكار ؟

enter image description here

MVC4

  • يمكن الحصول على حوالي 11 rps
  • rps منخفضة جدا سواء 2-وحدة المعالجة المركزية أو 4-وحدة المعالجة المركزية على الخادم

enter image description here

WebForms (aspx)

  • يمكن الحصول على فوق 2500 rps

  • أداء القاتل وقد وجدت أنه خطأ من MVC باتا أو الصليب الأحمر.والأداء سيتحسن بمجرد إزالة حزم الأمور.الآن أحدث إصدار ثابت هذا.

الأداء يعتمد على ما تقومون به...عادة MVC هو أسرع من asp.net لأن معظمهم Viewstate غائب بسبب MVC يعمل أكثر مع رد من إعادة النشر بشكل افتراضي.

إذا كنت تحسين الخاص بك صفحة ويب يمكنك الحصول على نفس الأداء كما MVC ولكن سوف يكون هناك الكثير من العمل.

أيضا, هناك الكثير من nugets على MVC (كما يبفورم) لمساعدتك على تحسين أداء الموقع مثل الجمع و صغر css الخاص بك و javascripts, مجموعة الصور الخاصة بك واستخدامها مثل العفريت ، وهلم جرا.

أداء الموقع تعتمد إلى حد كبير من العمارة.واحدة نظيفة مع فصل جيد من القلق سوف تجلب لك المزيد من رمز نظيفة فكرة أفضل عن كيفية تحسين الأداء.

يمكنك أن تأخذ نظرة على هذا القالب "الأجسام القريبة من الأرض-SDI MVC قالب"الذي خلق لكم العمارة نظيفة مع الكثير من تحسينات في الأداء بشكل افتراضي (check MvcTemplate موقع على شبكة الإنترنت).

enter image description here

لم صغيرة VSTS تحميل اختبار التجربة مع بعض التعليمات البرمجية الأساسية وجدت ASP.NET MVC وقت استجابة أن يكون مرتين أسرع مقارنة ASP.NET Webforms.أعلاه هو الرسم البياني مع المؤامرة.

يمكنك قراءة هذا اختبار الحمل التجربة في تفاصيل من هذا CP المادة https://www.codeproject.com/Articles/864950/ASP-NET-MVC-vs-ASP-NET-WebForm-performance-compari

اختبار أجري مع المواصفات أدناه باستخدام VSTS و telerik تحميل اختبار البرمجيات:-

المستخدم تحميل 25 المستخدمين.

تشغيل مدة الاختبار 10 دقائق.

آلة التكوين ديل 8 جيجابايت ذاكرة الرام, Core i3

المشروع تم استضافتها في IIS 8.

المشروع تم إنشاؤه باستخدام MVC 5.

شبكة اتصال LAN كان يفترض.لذلك هذا الاختبار لا حساب على شبكة تأخر الآن.

المتصفح في الاختبار المحدد كروم وإنترنت إكسبلورر.

القراءة المتعددة حيث اتخذت خلال اختبار أن متوسط الأحداث غير معروفة.7 قراءات حيث اتخذت جميع القراءات المنشورة في هذه المقالة قراءة 1 , 2 وهكذا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top