ASP.NET MVC ประสิทธิภาพ


102

ฉันพบคำพูดที่ดุร้ายว่า ASP.NET MVC เร็วกว่า ASP.NET WebForms ถึง 30 เท่า มีการวัดความแตกต่างของประสิทธิภาพที่แท้จริงอะไรบ้างและผลประโยชน์ด้านประสิทธิภาพคืออะไร

นี่คือการช่วยฉันในการพิจารณาย้ายจาก ASP.NET WebForms เป็น ASP.NET MVC


20
หลังจากทำงานกับ WebForms ตั้งแต่พวกเขาออกมาฉันจะไม่กลับไปด้วยความเต็มใจ! MVC ขโมย <3 ของฉัน - และไซต์นี้ใช้งานได้อย่างยอดเยี่ยมใน Beta 5!
Jarrod Dixon

2
อะไรคือการย้อนกลับการแก้ไขทั้งหมดในคำถามนี้ .. ?
นิค

@Nick: OP กำลังย้อนกลับการแก้ไขใด ๆ และลบความคิดเห็นใด ๆ ที่อธิบายพวกเขา
GEOCHET

@ ริช B: ถูกต้องเขาลบความคิดเห็นของฉันประมาณ 5 รายการ
George Stocker

2
ต้องการการอัปเดตตอนนี้ว่าเราใกล้จะปล่อย MVC3 แล้ว
Andrew Lewis

คำตอบ:


69

เราไม่ได้ทำการทดสอบความสามารถในการปรับขนาดและความสมบูรณ์แบบที่จำเป็นเพื่อหาข้อสรุปใด ๆ ฉันคิดว่า ScottGu อาจกำลังพูดคุยเกี่ยวกับเป้าหมายที่เป็นไปได้ ในขณะที่เราก้าวไปสู่ ​​Beta และ RTM เราจะทำการทดสอบที่สมบูรณ์แบบมากขึ้นภายใน อย่างไรก็ตามฉันไม่แน่ใจว่านโยบายของเราคืออะไรในการเผยแพร่ผลการทดสอบความสมบูรณ์แบบ

ไม่ว่าในกรณีใดการทดสอบดังกล่าวจำเป็นต้องพิจารณาการใช้งานจริง ...


13
ตอนนี้ MVC ได้รับการเผยแพร่แล้วมีการอัปเดตเกี่ยวกับการเผยแพร่ผลสมบูรณ์หรือไม่?
chris

6
เพียงแค่โหวตสิ่งนี้เพราะคะแนนตัวแทน 5,999 ก่อนหน้านี้ทำร้ายดวงตาของฉัน :(
เดเมี่ยน

2
ถึงเวลานี้คุณต้องมีตัวเลขแน่ ๆ ต้องการอัปเดตคำตอบของคุณหรือไม่? หรือคุณพบว่านโยบายที่น่ารำคาญห้ามมัน?
tvanfosson

7
หมายเลขคือ 42 :) โดยทั่วไปแล้วตัวเลขของเราอาจจะไร้ประโยชน์สำหรับแอปในโลกแห่งความเป็นจริงดังนั้นเราจึงไม่ให้มันออกไปตามกฎ อย่างไรก็ตามฉันรู้จักทีมอื่น ๆ ใน Microsoft ที่สร้างเว็บไซต์ขนาดใหญ่ที่แสดงตัวเลขที่น่าพอใจ กล่าวอีกนัยหนึ่งปัญหาเกี่ยวกับความสมบูรณ์แบบมักจะเกิดจากความผิดพลาดของโปรแกรมเมอร์มากกว่าปัญหาการสืบทอดใด ๆ ในเฟรมเวิร์ก โดยทั่วไปแล้วการโต้ตอบกับฐานข้อมูลและบริการภายนอกเป็นตัวการ :)
เลิก

จริง! โปรดอัปเดตสิ่งนี้! อาจจะไม่ใช่เกณฑ์มาตรฐาน แต่เป็นความคิดสั้น ๆ พวกเขาอยู่ในระดับที่เท่าเทียมกันหรือ mvc ดีกว่าเล็กน้อยสำหรับ perf?
gideon

48

ฉันคิดว่านี่จะเป็นคำถามที่ยากที่จะตอบอย่างชัดเจนเนื่องจากส่วนใหญ่จะขึ้นอยู่กับA)วิธีที่คุณใช้งานแอปพลิเคชัน WebForms และB)วิธีที่คุณใช้แอปพลิเคชัน MVC ในรูปแบบ "ดิบ" MVC น่าจะเร็วกว่า WebForms แต่เครื่องมือและประสบการณ์หลายปีและหลายปีได้ผลิตเทคนิคมากมายในการสร้างแอปพลิเคชัน WebForms ที่รวดเร็ว ฉันยินดีที่จะเดิมพันว่านักพัฒนา ASP.NET อาวุโสสามารถสร้างแอปพลิเคชัน WebForms ที่เหนือกว่าความเร็วของแอปพลิเคชัน MVC ใด ๆ หรืออย่างน้อยก็บรรลุความแตกต่างเล็กน้อย

ความแตกต่างที่แท้จริงตามที่ @tvanfosson แนะนำ - อยู่ในการทดสอบและทำความสะอาด SoC หากการปรับปรุงประสิทธิภาพเป็นข้อกังวลหลักของคุณฉันไม่คิดว่าเป็นเหตุผลที่ดีที่จะกระโดดเรือบน WebForms และเริ่มสร้างใหม่ใน MVC อย่างน้อยก็จนกว่าคุณจะได้ลองใช้เทคนิคที่มีอยู่เพื่อเพิ่มประสิทธิภาพ WebForms


คำตอบที่ยอดเยี่ยม Todd (ช่างน่าแปลกใจที่ผู้เผยแพร่ศาสนานักพัฒนาสามารถตอบสนองเชิงปฏิบัติได้) สิ่งเดียวที่คุณผิดพลาดคือในเว็บฟอร์มการใช้งานดิบนั้นเร็วกว่ามาก
Chris Marisic

42

มันลดหนึ่งในหน้าของฉันจาก 2MB payload เหลือ 200k เพียงแค่กำจัด viewstate และทำให้มันสามารถทำงานร่วมกับเอาต์พุตที่ส่งมาได้

ขนาดเพียงอย่างเดียวแม้ว่าการประมวลผลจะเท่ากันจะทำให้เกิดการปรับปรุงการเชื่อมต่อต่อวินาทีและความเร็วของคำขอได้อย่างมากมาย


31
คุณสามารถแก้ไข viewstate ขนาดใหญ่ที่น่ารำคาญโดยไม่มี MVC ได้เช่นกัน
Andrei Rînea

1
เพียงเพื่ออธิบาย ViewState อย่างละเอียดสามารถปิดการใช้งานระดับหน้าเว็บหรือใน web.config
bbqchickenrobot

8
ใช่ แต่ใน mvc มันเป็นค่าเริ่มต้นที่ดีไม่ใช่การตัดสินใจออกแบบที่บังคับให้คุณออกจากการควบคุมทั้งหมดและผู้ขายที่อ้างว่าทำงานบนเว็บฟอร์มเท่านั้นโดยทำให้เว็บฟอร์ม "ประพฤติผิด" โดยการเอากระดูกหลังออก ฉันไม่เห็นด้วยคุณสามารถเขียนหน้านั้นใหม่ได้ แต่ทั้งแอปนั้นดีกว่าถ้าไม่มี viewstate
DevelopingChris

คุณไม่คิดว่าเป็นการตัดสินใจที่เลวร้ายที่สุดของคุณในการพอร์ตแอปทั้งหมดไปยัง MVC แทนที่จะปิด viewstate ใน web.config หรือไม่? และไม่ Viewstate ไม่ใช่กระดูกสันหลัง เฉพาะในกรณีที่คุณได้ค้นคว้าข้อมูล viewstate จะถูกเก็บไว้ในแคชและเซสชัน
Simple Fellow

29

ฉันคิดว่าหลายคนที่คิดว่า WebForms โดยเนื้อแท้ช้าหรือใช้ทรัพยากรมากกำลังวางความผิดไว้ผิดที่ 9 เท่าจาก 10 ครั้งเมื่อฉันถูกนำไปปรับแต่งแอปเว็บฟอร์มมีหลายจุดที่ผู้เขียนแอปเข้าใจจุดประสงค์ของ viewstate ไม่ถูกต้อง ฉันไม่ได้บอกว่า viewstate นั้นสมบูรณ์แบบหรืออะไรก็ได้ แต่มันง่ายเกินไปที่จะใช้ในทางที่ผิดและเป็นการละเมิดที่ทำให้ช่อง viewstate บวม

บทความนี้ใช้ไม่ได้ในการช่วยให้ฉันเข้าใจการละเมิดต่างๆเหล่านี้ https://weblogs.asp.net/infinitiesloop/truly-understand-viewstate

ในการทำการเปรียบเทียบที่ถูกต้องระหว่าง MVC และ WebForms เราต้องตรวจสอบให้แน่ใจว่าทั้งสองแอปใช้สถาปัตยกรรมอย่างถูกต้อง


14

การทดสอบของฉันแสดงให้เห็นบางอย่างระหว่าง 2x ถึง 7x req / วินาทีบน MVC แต่ขึ้นอยู่กับว่าคุณสร้างแอปเว็บฟอร์มของคุณอย่างไร ด้วยข้อความ "สวัสดีชาวโลก" โดยไม่มีการควบคุมฝั่งเซิร์ฟเวอร์ใด ๆ mvc เร็วขึ้นประมาณ 30-50%


12

สำหรับฉันการปรับปรุง "ประสิทธิภาพ" ที่แท้จริงใน MVC คือการเพิ่มพื้นผิวที่ทดสอบได้ของแอปพลิเคชัน ด้วย WebForms มีแอปพลิเคชันจำนวนมากที่ยากต่อการทดสอบ ด้วย MVC จำนวนรหัสที่สามารถทดสอบได้โดยทั่วไปจะเพิ่มเป็นสองเท่า โดยพื้นฐานแล้วสิ่งที่ไม่สามารถทดสอบได้ง่ายๆคือรหัสที่สร้างเค้าโครง ตรรกะทางธุรกิจและตรรกะการเข้าถึงข้อมูลทั้งหมดของคุณรวมถึงตรรกะที่เติมข้อมูลจริงที่ใช้ในมุมมองขณะนี้สามารถทดสอบได้แล้ว ในขณะที่ฉันคาดหวังว่ามันจะมีประสิทธิภาพมากขึ้นเช่นกันวงจรชีวิตของเพจนั้นง่ายขึ้นอย่างมากและสามารถตอบสนองต่อการเขียนโปรแกรมบนเว็บได้มากขึ้นแม้ว่าจะเหมือนกันหรือช้ากว่าเล็กน้อย แต่ก็คุ้มค่าที่จะเปลี่ยนจากมุมมองด้านคุณภาพ


ฉันชอบที่จะรู้ว่าทำไมมีคนลดคะแนนคำตอบนี้
tvanfosson

ความรู้สึกของฉันคืออาจได้รับการโหวตลดลงเนื่องจากแอปพลิเคชันรูปแบบเว็บ ASP.NET ที่ออกแบบมาอย่างดีนั้นสามารถทดสอบได้เช่นเดียวกับแอปพลิเคชัน MVC ประสบการณ์ของฉันในการพัฒนาทั้งสองอย่างคือ MVC บังคับให้คุณเข้าสู่รูปแบบการเขียนโปรแกรมที่สะอาด (ซึ่งเป็นจุดแข็งที่ยิ่งใหญ่ที่สุดอย่างหนึ่งคือ IMO) แบบฟอร์มบนเว็บช่วยให้คุณทำสิ่งต่างๆได้ง่ายขึ้น แต่ก็ยังมีความเป็นไปได้มากที่จะมีพื้นผิวที่ทดสอบได้เหมือนกันในรูปแบบเว็บ นั่นคือการคาดเดาของฉันอย่างไรก็ตาม
dudemonkey

มุมมองมีดโกนสนับสนุนให้ฝังโค้ดไว้ในมุมมองอย่างแท้จริง ไม่สามารถทดสอบได้และไม่เป็นลางดีสำหรับการแยกข้อกังวล เพียงเพราะ MVC ทำให้คุณเขียนตัวควบคุมไม่ได้หมายความว่าคุณจะไม่สามารถเบิร์นได้ทั้งหมดหากคุณไม่รู้ว่าคุณกำลังทำอะไรอยู่ นักพัฒนาที่มีความเชี่ยวชาญจะได้รับประสิทธิภาพจาก WebForms (หรือมากกว่า) มากกว่า MVC และจะมี "พื้นผิวที่ทดสอบได้" ที่เหมือนกันแทบทุกประการ
Richard Hauer

@RichardHauer นั่นไม่เป็นความจริงอย่างแท้จริงเมื่อฉันเขียนสิ่งนี้ แต่พวกเขาได้รับการปรับปรุงแล้ว เนื่องจาก WebForms ดูเหมือนจะไม่มีอนาคตใน. NET Core ดูเหมือนว่าจะเป็นจุดที่สงสัย
tvanfosson

@tvanfosson เห็นด้วย - ตอนนี้กำลังสงสัย ไม่แน่ใจว่าบิตใดที่คุณคิดว่าไม่จริงบางทีคุณอาจคัดค้านการใช้ "ตัวอักษร" ของฉัน อย่างไรก็ตามเวอร์ชันใหม่กว่าของ MVC ที่มี TagHelpers จะช่วยทำลายนิสัยในการวางโค้ดลงในเลย์เอาต์ซึ่งอาจทำให้ทุกอย่างใช้งานได้ในที่สุด เห็นได้ชัดว่าโพสต์นี้ค่อนข้างเก่า แต่ถึงเวลานั้นแบบฟอร์ม WebForms ที่สร้างมาอย่างดีนั้นรวดเร็วมากโดยไม่มี "การเดินสายวิเศษ" ของ MVC และไม่มีโค้ดฝังอยู่ในมุมมองเลย
Richard Hauer

7

ฉันคิดว่าปัญหาที่นี่คือไม่ว่า ASP.Net MVC จะเร็วกว่าเว็บฟอร์มแบบเก่าแค่ไหน แต่ก็ไม่ได้สร้างความแตกต่างเพราะเวลาส่วนใหญ่ที่ใช้อยู่ในฐานข้อมูล โดยส่วนใหญ่เว็บเซิร์ฟเวอร์ของคุณจะนั่งอยู่ที่การใช้งาน CPU 0-10% รออยู่บนเซิร์ฟเวอร์ฐานข้อมูลของคุณ หากคุณไม่ได้รับ Hit จำนวนมากบนเว็บไซต์ของคุณและฐานข้อมูลของคุณนั้นเร็วมากคุณอาจจะไม่สังเกตเห็นความแตกต่างอย่างมาก


ผู้ใช้ของคุณอาจ - ไม่มีวิวสเตท
UpTheCreek

6

ตัวเลขที่เป็นรูปธรรมเพียงอย่างเดียวที่ฉันสามารถหาได้ซึ่งมาจากการพัฒนา ASP.NET MVC ในช่วงต้นอยู่ในฟอรัมนี้:

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

Rob Connery ค่อนข้างยืนยันคำแถลงว่า ScottGu อ้างว่า ASP.NET MVC สามารถให้บริการได้ 8000 คำขอต่อวินาที

บางทีเจฟฟ์และทีมงานของเขาอาจให้คำแนะนำบางอย่างจากการพัฒนาไซต์นี้


3

ตรงกันข้ามกับความคิดเห็นที่ยอมรับการใช้เว็บฟอร์มที่ได้รับการปรับให้เหมาะสมจะฆ่า MVC ในแง่ของประสิทธิภาพดิบโดยสิ้นเชิง เว็บฟอร์มได้รับการปรับให้เหมาะสมสำหรับงานในการให้บริการ html นานกว่าที่ MVC มี

สามารถดูเมตริกได้ที่http://www.techempower.com/benchmarks/#section=data-r7&hw=i7&test=db

mvc การเปรียบเทียบทุกรายการจะอยู่ในอันดับล่างกลาง / ล่าง - บนของรายการในขณะที่เว็บฟอร์มที่ปรับให้เหมาะสมจะวางตำแหน่งการใช้งานในอันดับบนกลาง / บน - ล่าง

การตรวจสอบความถูกต้องของเมตริกเหล่านี้โดยสรุป แต่จริงจังมากwww.microsoft.comให้บริการโดยเว็บฟอร์มไม่ใช่ MVC มีใครบ้างที่เชื่อว่าพวกเขาจะไม่เลือก MVC ถ้ามันเร็วกว่าในเชิงประจักษ์?


2

ไม่มีทางตอบคำถามนี้ได้ MVC ใช้เอ็นจิ้นมุมมองเว็บฟอร์มตามค่าเริ่มต้นและสามารถกำหนดค่าให้ใช้เอ็นจินมุมมองแบบกำหนดเองจำนวนเท่าใดก็ได้ดังนั้นหากคุณต้องการเปรียบเทียบประสิทธิภาพคุณจะต้องเจาะจงมากขึ้น


2

ฉันเริ่มทำงานใน MVC เมื่อประมาณหนึ่งปีที่แล้วฉันได้รับแรงบันดาลใจ แต่ไม่ประทับใจ

ฉันเกลียดสถานะมุมมองและเห็นว่ามันเป็นรากเหง้าของความชั่วร้ายทั้งหมดในแง่ของ ASP.NET นี่คือเหตุผลที่ฉันไม่ใช้มันและจะซื่อสัตย์อย่างสมบูรณ์ทำไมคุณ?

ฉันใช้แนวคิด ASP.NET MVC Framework เป็นหลักและสร้างขึ้นในแบบของฉันเอง ฉันเปลี่ยนสองสามอย่างแม้ว่า ฉันสร้างรหัสการตัดตัวควบคุมของฉันหรือรหัสเส้นทาง URL รอบการคอมไพล์ใหม่แบบไดนามิก

ตอนนี้ฉันจะพูดได้ไกลว่าแอปพลิเคชัน ASP.NET MVC จะเร็วขึ้นตามวิธีที่คุณใช้ หากคุณละทิ้ง WebForms โดยสิ้นเชิงคุณจะเร็วขึ้นเนื่องจากวงจรชีวิตของ ASP.NET และแบบจำลองวัตถุนั้นมีความสำคัญ

เมื่อคุณเขียนคุณกำลังสร้างอินสแตนซ์กองทัพ ... ไม่ต้องรอกองกำลังของวัตถุที่จะเข้าร่วมในการแสดงผลของมุมมองของคุณ สิ่งนี้จะช้ากว่าที่คุณจะแสดงพฤติกรรมจำนวนน้อยที่สุดในหน้า ASPX เอง (ฉันไม่สนใจเกี่ยวกับสิ่งที่เป็นนามธรรมของเอ็นจิ้นมุมมองเนื่องจากการรองรับเพจ ASPX ใน Visual Studio นั้นเหมาะสม แต่ฉันได้ทิ้ง WebForms เป็นแนวคิดและโดยพื้นฐานแล้วกรอบ ASP.NET ใด ๆ เนื่องจากโค้ดขยายตัวหรือไม่สามารถเปลี่ยน สิ่งที่เชื่อมโยงแอปพลิเคชันของฉัน)

ฉันพบวิธีการใช้การคอมไพล์ใหม่แบบไดนามิก (System.Reflection.Emit) สำหรับการปล่อยวัตถุและรหัสวัตถุประสงค์พิเศษเมื่อใดก็ตามที่จำเป็น การเรียกใช้รหัสนี้เร็วกว่าการสะท้อนกลับ แต่สร้างขึ้นผ่านบริการสะท้อนแสง สิ่งนี้ทำให้เฟรมเวิร์กปรุงรส MVC ของฉันมีประสิทธิภาพที่ยอดเยี่ยม แต่ยังพิมพ์แบบคงที่ ฉันไม่ได้ใช้สตริงและคอลเลกชันคู่ชื่อ / ค่า บริการคอมไพลเลอร์ที่กำหนดเองของฉันกลับไปในการเขียนโพสต์แบบฟอร์มใหม่ไปยังแอ็คชันคอนโทรลเลอร์ที่ส่งผ่านประเภทการอ้างอิง เบื้องหลังมีหลายสิ่งหลายอย่างเกิดขึ้น แต่โค้ดนี้เร็วเร็วกว่า WebForms หรือ MVC Framework มาก

นอกจากนี้ฉันไม่ได้เขียน URL ฉันเขียนนิพจน์แลมบ์ดาที่แปลเป็น URL ซึ่งจะบอกได้ในภายหลังว่าจะเรียกใช้การดำเนินการของคอนโทรลเลอร์ใด สิ่งนี้ไม่ได้เร็วเป็นพิเศษ แต่มี URL ที่ไม่สมบูรณ์ เหมือนกับว่าคุณมีทรัพยากรที่พิมพ์แบบคงที่และวัตถุที่พิมพ์แบบคงที่ เว็บแอปพลิเคชันที่พิมพ์แบบคงที่? นั่นคือสิ่งที่ฉันต้องการ!

ฉันขอแนะนำให้คนอื่น ๆ ลองใช้สิ่งนี้


2
นี่จึงไม่ใช่คำตอบโดยตรงสำหรับคำถาม? อย่างไรก็ตามมันมีความเกี่ยวข้องกันและทำให้เกิดจุดดีสองสามประการ แต่เดี๋ยวก่อนมันเป็นสิ่งที่ฉันสร้างขึ้นเพื่อความต้องการของตัวเองและมันก็เหมาะกับฉันอย่างสมบูรณ์แบบ ฉันชอบแบ่งปันความคิดของฉันแม้ว่าจะมีคนเพียงไม่กี่คนที่เข้าใจว่าทำไม
John Leidegren

1
คุณไม่จำเป็นต้องเปลี่ยนการลงคะแนนของคุณ แต่คุณไม่จำเป็นต้องลงคะแนนเพราะมันไม่ใช่คำตอบ 'คำตอบ' หากคุณใช้เวลาสักพักหนึ่งดูข้อความมีหลายสิ่งที่ชี้ให้เห็นว่า ASP.NET MVC เร็วกว่า WebForms และเหตุใดจึงเป็นเช่นนั้น และมันลงไปที่สิ่งต่างๆเช่นการสะท้อนและโมเดลวัตถุและค่าใช้จ่าย ViewState ของ WebForms
John Leidegren

@ จอห์น - ตอนนี้ MVC2 ออกมาพร้อมกับการเชื่อมแบบจำลองที่ได้รับการปรับปรุงการตรวจสอบตัวช่วยที่พิมพ์มากเกินไป ฯลฯ คุณจะประเมินมันอย่างไรเมื่อเทียบกับวิธีการของคุณ?
tvanfosson

MVC2 ดีกว่ามากฉันเชื่อว่ามันแทนที่สิ่งที่ฉันสร้างในเวลานั้นได้ค่อนข้างมาก (ด้วย MVC1 ในเบต้า) ฉันพบกับความเจ็บปวดของปัญหาที่เกี่ยวข้องกับสิ่งที่ฉันพยายามสร้างขึ้นจาก ASP.NET โดยไม่เลือกใช้เครื่องมือที่มีอยู่ เพียงพอที่จะพูดว่าฉันได้เรียนรู้มากมายและในที่สุดก็นำสิ่งนี้มาสู่การผลิต ตอนนี้ฉันรู้แล้วว่าเครื่องมือ / เฟรมเวิร์กปัจจุบัน (VS / ASP.NET / C #) ไม่เหมาะกับสิ่งนี้จริงๆและในที่สุดถ้าคุณต้องการไปตามถนนสายนี้คุณจะต้องลงทุนในคอมไพเลอร์ / การตรวจสอบโมเดลของคุณเอง ของบางอย่างเพื่อให้คุณได้ผล
John Leidegren

ตอนนั้นฉันไม่ได้คิดถึง ASP.NET MVC มากนัก มันขาดสิ่งที่ฉันรู้ว่าฉันต้องการ แต่ฉันต้องใช้เวลามากมายในการพัฒนาทดสอบและหาสิ่งเหล่านี้ ฉันยังคิดว่าส่วนคงที่ของเว็บเฟรมเวิร์กที่ฉันสร้างนั้นเหนือกว่า MVC ในเรื่องนั้น แต่คอมไพเลอร์ C # ไม่มีประสิทธิภาพในการแก้ปัญหานั้น คุณต้องการภาษา / คอมไพเลอร์ที่ช่วยให้มีความยืดหยุ่นมากขึ้นในการเขียนโปรแกรมเมตา ฉันต้องทำหลายอย่างในรันไทม์และมักเป็นไปไม่ได้ที่จะแคชอินสแตนซ์ที่คอมไพล์แล้วดังนั้นฉันจึงต้องคอมไพล์สิ่งต่างๆแบบไดนามิกเป็นจำนวนมาก
John Leidegren

2

โครงการที่สร้างด้วยสตูดิโอภาพ หนึ่งคือเทมเพลต mvc4 อีกอันคือ WebForm (tranditional) และเมื่อทำการทดสอบโหลดด้วย WCAT นี่คือผลลัพธ์

MVC4 ค่อนข้างช้ากว่า WebForms มีความคิดอย่างไร

ป้อนคำอธิบายภาพที่นี่

MVC4

  • จะได้ประมาณ 11 rps
  • rps ค่อนข้างต่ำทั้งเซิร์ฟเวอร์ 2-cpu หรือ 4-cpu

ป้อนคำอธิบายภาพที่นี่

WebForms (aspx)

  • อาจสูงกว่า 2500 rps

  • นักฆ่าประสิทธิภาพพบว่าเป็นบั๊กของ MVC Bata หรือ RC และประสิทธิภาพจะดีขึ้นเมื่อฉันลบ Bundles things ขณะนี้เวอร์ชันล่าสุดได้รับการแก้ไขแล้ว


1

ประสิทธิภาพขึ้นอยู่กับสิ่งที่คุณกำลังทำ ... โดยปกติแล้ว MVC จะเร็วกว่า asp.net เป็นส่วนใหญ่เนื่องจากไม่มี Viewstate และเนื่องจาก MVC ทำงานกับ Callback มากกว่า Postback โดยค่าเริ่มต้น

หากคุณเพิ่มประสิทธิภาพหน้าเว็บฟอร์มของคุณคุณสามารถมีประสิทธิภาพเช่นเดียวกับ MVC แต่จะต้องทำงานมาก

นอกจากนี้พวกเขายังเป็นนักเก็ตจำนวนมากสำหรับ MVC (และสำหรับ Webform) เพื่อช่วยให้คุณปรับปรุงประสิทธิภาพของเว็บไซต์เช่นรวมและย่อขนาด css และ javascripts จัดกลุ่มรูปภาพของคุณและใช้เป็นสไปรท์และอื่น ๆ

ประสิทธิภาพของเว็บไซต์ขึ้นอยู่กับสถาปัตยกรรมของคุณเป็นอย่างมาก รหัสที่สะอาดพร้อมการแยกข้อกังวลที่ดีจะทำให้คุณมีรหัสที่ชัดเจนยิ่งขึ้นและแนวคิดที่ดีขึ้นในการปรับปรุงประสิทธิภาพ

คุณสามารถดูเทมเพลต " Neos-SDI MVC Template " ซึ่งจะสร้างสถาปัตยกรรมที่สะอาดตาพร้อมการปรับปรุงประสิทธิภาพมากมายตามค่าเริ่มต้น (ตรวจสอบเว็บไซต์MvcTemplate )


-1

ป้อนคำอธิบายภาพที่นี่

ฉันทำการทดสอบการโหลด 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 นาที

เครื่อง config DELL Ram 8 GB, Core i3

โครงการถูกโฮสต์ใน IIS 8

สร้างโครงการโดยใช้ MVC 5

ถือว่าการเชื่อมต่อ LAN เครือข่าย ดังนั้นการทดสอบนี้ไม่ได้พิจารณาถึงความล่าช้าของเครือข่ายในตอนนี้

เบราว์เซอร์ในการทดสอบเลือก Chrome และ Internet explorer

การอ่านหลายครั้งที่เกิดขึ้นระหว่างการทดสอบเพื่อหาค่าเฉลี่ยเหตุการณ์ที่ไม่รู้จัก การอ่าน 7 ครั้งที่นำมาและการอ่านทั้งหมดได้รับการเผยแพร่ในบทความนี้ในรูปแบบการอ่าน 1, 2 และอื่น ๆ


วิธีการทดสอบของคุณไม่ดีและมีความเอนเอียงอย่างมากและข้อสรุปของคุณไม่ถูกต้อง แอปพลิเคชัน WebForms ที่สร้างขึ้นอย่างถูกต้องสามารถทดสอบได้มีการแยกข้อกังวลที่เหมาะสมและมีค่าใช้จ่ายในการบรรทุกน้อยที่สุด แม้ว่า MVC จะไม่มีการวนรอบเหตุการณ์วงจรชีวิตของเพจ แต่ก็มีการกำหนดเส้นทางและดูการดำเนินการเพื่อโต้แย้ง บทความของคุณในหัวข้อ CP นี้มีความเอนเอียงอย่างมาก
Richard Hauer

แอปพลิเคชั่นที่สร้างขึ้นอย่างเหมาะสมและรอบคอบแม้ในเทคโนโลยีที่เลวร้ายที่สุดก็สามารถใช้งานได้อย่างปาฏิหาริย์ วงจรชีวิตของเพจ ASP.NET มีน้ำหนักบรรทุกมากกว่าเมื่อเทียบกับการกำหนดเส้นทางและการดำเนินการดูเนื่องจากเกี่ยวข้องกับการสร้าง HTML UI การกำหนดเส้นทางเป็นส่วนหนึ่งของกรอบงาน ASP.NET ดังนั้นแม้ในเว็บฟอร์มปกติก็มีอยู่ สิ่งหนึ่งที่ฉันเห็นด้วยหากคุณไม่เขียนโค้ดเบื้องหลังประสิทธิภาพของคุณจะเทียบเท่ากับ MVC แต่กล่องเครื่องมือ Webform นั้นดึงดูดมากจนโค้ดที่อยู่เบื้องหลังกลายเป็นส่วนสำคัญของมัน ในขณะที่ MVC ไม่อนุญาตให้ฉันทำอย่างนั้นเลย ฉันชอบที่มีดโกนพวกเขาปิดการใช้งานมุมมองการออกแบบและโค้ดที่อยู่เบื้องหลัง
Shivprasad Koirala
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.