อะไรคือข้อดีของการใช้อย่างใดอย่างหนึ่งมากกว่าที่อื่น ๆ ?
อะไรคือข้อดีของการใช้อย่างใดอย่างหนึ่งมากกว่าที่อื่น ๆ ?
คำตอบ:
ข้อดีหลักของASP.net MVCคือ:
เปิดใช้งานการควบคุม HTML ที่แสดงผลอย่างสมบูรณ์
ให้การแยกความกังวล (SoC) ที่สะอาด
ช่วยให้การทดสอบขับเคลื่อนการพัฒนา (TDD)
ผสานรวมกับกรอบงาน JavaScript ได้ง่าย
การออกแบบตามธรรมชาติของเว็บ
URL ที่สงบซึ่งช่วยให้ SEO
ไม่มีเหตุการณ์ ViewState และ PostBack
ข้อได้เปรียบหลักของASP.net Web Formคือ:
มันให้การพัฒนา RAD
รูปแบบการพัฒนาที่ง่ายสำหรับนักพัฒนาที่มาจากการพัฒนา winform
ASP.NET Web Forms และ MVC เป็นสองเฟรมเวิร์คของเว็บที่พัฒนาโดย Microsoft - ทั้งคู่เป็นตัวเลือกที่ดี ทั้งเฟรมเวิร์กเว็บจะถูกแทนที่โดยเฟรมเวิร์กอื่น ๆ และไม่มีแผนให้รวมเข้ากับเฟรมเวิร์กเดียว การสนับสนุนและการพัฒนาอย่างต่อเนื่องนั้นดำเนินการคู่ขนานโดย Microsoft และจะไม่ 'หยุดไป'
แต่ละเฟรมเวิร์กของเว็บเหล่านี้มีข้อดี / ข้อเสีย - บางอย่างต้องพิจารณาเมื่อทำการพัฒนาเว็บ เว็บแอปพลิเคชันสามารถพัฒนาโดยใช้เทคโนโลยีใดก็ได้ - มันอาจทำให้การพัฒนาสำหรับแอพพลิเคชั่นเฉพาะง่ายขึ้นในการเลือกเทคโนโลยีหนึ่งเทียบกับเทคโนโลยีอื่น
เว็บฟอร์ม ASP.NET:
ASP.NET MVC:
การพิสูจน์ตัวตนการอนุญาตการกำหนดค่าการรวบรวมและการปรับใช้เป็นคุณลักษณะทั้งหมดที่ใช้ร่วมกันระหว่างสองเฟรมเวิร์กเว็บ
ใคร ๆ ที่อายุมากพอที่จะจำ ASP แบบคลาสสิคจะจำฝันร้ายของการเปิดหน้าเว็บที่มีโค้ดที่ปะปนอยู่กับ html และ javascript - แม้แต่หน้าที่เล็กที่สุดก็เป็นความเจ็บปวดที่จะรู้ว่ามันทำอะไรอยู่ ฉันอาจจะผิดและฉันหวังว่าฉัน แต่ MVC ดูเหมือนจะย้อนกลับไปยังวันเก่าที่ไม่ดีเหล่านั้น
เมื่อ ASP.Net เข้ามามันได้รับการยกย่องว่าเป็นผู้ช่วยให้รอดการแยกโค้ดออกจากเนื้อหาและทำให้เรามีนักออกแบบเว็บไซต์สร้าง html และ coders ทำงานบนโค้ดด้านหลัง หากเราไม่ต้องการใช้ ViewState เราก็ปิดการใช้งาน หากเราไม่ต้องการใช้โค้ดด้านหลังด้วยเหตุผลบางอย่างเราสามารถวางโค้ดของเราไว้ใน html ได้เหมือนกับ ASP คลาสสิก หากเราไม่ต้องการใช้ PostBack เราจะเปลี่ยนเส้นทางไปยังหน้าอื่นเพื่อการประมวลผล หากเราไม่ต้องการใช้การควบคุม ASP.Net เราก็ใช้การควบคุม html มาตรฐาน เราสามารถสอบถามวัตถุการตอบสนองได้หากเราไม่ต้องการใช้ ASP.Net runat = "server" ในส่วนควบคุมของเรา
ตอนนี้ใครบางคนในภูมิปัญญาอันยิ่งใหญ่ของพวกเขา (อาจเป็นคนที่ไม่เคยใช้โปรแกรมคลาสสิค ASP) ได้ตัดสินใจว่าถึงเวลาที่จะย้อนกลับไปยังยุคของการผสมโค้ดที่มีเนื้อหาและเรียกมันว่า "การแยกข้อกังวล" แน่นอนว่าคุณสามารถสร้าง html ที่สะอาดขึ้นได้ แต่คุณสามารถทำได้ด้วย ASP แบบคลาสสิก การพูดว่า "คุณไม่ได้เขียนโปรแกรมอย่างถูกต้องหากคุณมีรหัสมากเกินไปในมุมมองของคุณ" ก็เหมือนกับการพูดว่า "ถ้าคุณเขียนโค้ดที่มีโครงสร้างและความคิดเห็นดีใน ASP แบบคลาสสิกมันดีกว่าและดีกว่า ASP.NET"
ถ้าฉันต้องการกลับไปที่การผสมโค้ดกับเนื้อหาฉันจะดูการพัฒนาโดยใช้ PHP ซึ่งมีสภาพแวดล้อมที่เป็นผู้ใหญ่มากขึ้นสำหรับการพัฒนาแบบนั้น หากมีปัญหามากมายกับ ASP.NET ทำไมไม่แก้ไขปัญหาเหล่านั้น?
สุดท้าย แต่ไม่ท้ายสุดเครื่องยนต์ของมีดโกนนั่นหมายความว่าเป็นการยากที่จะแยกแยะระหว่าง html และรหัส อย่างน้อยเราสามารถมองหาแท็กเปิดและปิดเช่น <% และ%> ใน ASP แต่ตอนนี้สิ่งบ่งชี้เพียงอย่างเดียวคือสัญลักษณ์ @
อาจถึงเวลาย้ายไปที่ PHP และรออีก 10 ปีเพื่อให้ผู้อื่นแยกรหัสจากเนื้อหาอีกครั้ง
หากคุณกำลังทำงานกับนักพัฒนาอื่น ๆ เช่น PHP หรือ JSP (และฉันกำลังคาดเดาราง) - คุณจะมีเวลามากขึ้นในการแปลงหรือทำงานร่วมกันบนหน้าเว็บได้ง่ายขึ้นเพราะคุณไม่มี ASP.NET ที่น่ารังเกียจทั้งหมด กิจกรรมและการควบคุมทุกที่
ปัญหาของ MVC คือแม้กระทั่งสำหรับ "ผู้เชี่ยวชาญ" ก็กินเวลาอันมีค่าและต้องใช้ความพยายามอย่างมาก ธุรกิจต่างๆได้รับแรงหนุนจากสิ่งพื้นฐาน "Quick Solution ที่ใช้งานได้" โดยไม่คำนึงถึงเทคโนโลยีที่อยู่เบื้องหลัง WebForms เป็นเทคโนโลยี RAD ที่ช่วยประหยัดเวลาและเงิน สิ่งใดก็ตามที่ต้องใช้เวลามากขึ้นเป็นที่ยอมรับของธุรกิจ
ข้อได้เปรียบเดียวที่ใหญ่ที่สุดสำหรับฉันคือการแยกที่ชัดเจนระหว่างเลเยอร์ Model, View และ Controller ของคุณ ช่วยส่งเสริมการออกแบบที่ดีตั้งแต่เริ่มต้น
ฉันไม่เห็นข้อได้เปรียบใด ๆ ใน MVC ผ่าน ASP.Net 10 ปีที่แล้ว Microsoft มาพร้อมกับ UIP (User Interface Process) เป็นคำตอบของ MVC มันเป็นความล้มเหลว เราทำโครงการขนาดใหญ่ (นักพัฒนา 4 คนนักออกแบบ 2 คนผู้ทดสอบ 1 คน) ด้วย UIP ในตอนนั้นและมันก็เป็นฝันร้ายที่แท้จริง
อย่าเพิ่งกระโดดเข้าไปที่ bandwagon เพื่อประโยชน์ของ Hype ข้อดีทั้งหมดที่กล่าวมาข้างต้นนั้นมีอยู่ใน Asp.Net (ด้วย tweaks ที่ยอดเยี่ยมมากขึ้น [ คุณสมบัติใหม่ใน Asp.Net 4 ] ใน Asp.Net 4)
หากทีมพัฒนาของคุณหรือครอบครัวนักพัฒนาเดียวที่มี Asp.Net เพียงติดกับมันและสร้างผลิตภัณฑ์ที่สวยงามได้อย่างรวดเร็วเพื่อตอบสนองลูกค้าของคุณ (ที่จ่ายสำหรับชั่วโมงทำงานของคุณ) MVC จะกินเวลาอันมีค่าของคุณและสร้างผลลัพธ์เช่นเดียวกับ Asp.Net :-)
Francis Shanahan
ทำไมคุณถึงเรียกว่า postback บางส่วนว่า "ไร้สาระ" นี่เป็นคุณสมบัติหลักของ Ajax และถูกใช้อย่างดีในกรอบ Atlas และการควบคุมโดยบุคคลที่สามอย่าง Telerik
ฉันเห็นด้วยกับประเด็นของคุณเกี่ยวกับมุมมอง แต่ถ้านักพัฒนาระมัดระวังที่จะปิดการใช้งาน viewstate สิ่งนี้สามารถลดขนาดของ HTML ที่แสดงผลได้อย่างมากทำให้หน้าเว็บมีน้ำหนักเบา
เฉพาะการควบคุมเซิร์ฟเวอร์ HTML เท่านั้นที่ถูกเปลี่ยนชื่อในรูปแบบ ASP.NET Web Form และไม่ใช่การควบคุม html บริสุทธิ์ ไม่ว่าคุณจะทำอะไรทำไมคุณกังวลมากถ้าเปลี่ยนชื่อเสร็จ ฉันรู้ว่าคุณต้องการจัดการกับเหตุการณ์จาวาสคริปต์ในฝั่งไคลเอ็นต์ แต่ถ้าคุณออกแบบหน้าเว็บของคุณอย่างชาญฉลาดคุณจะได้รับรหัสทั้งหมดที่คุณต้องการอย่างแน่นอน
แม้แต่ ASP.NET Web Forms ก็ตรงตามมาตรฐาน XHTML และฉันก็ไม่เห็น bloating นี่ไม่ใช่เหตุผลว่าทำไมเราถึงต้องใช้รูปแบบ MVC
อีกครั้งทำไมคุณถึงต้องกังวลกับ AXD Javascript ทำไมมันเจ็บคุณ นี่ไม่ใช่เหตุผลที่ถูกต้องอีกครั้ง
จนถึงตอนนี้ฉันเป็นแฟนตัวยงของการพัฒนาแอพพลิเคชั่นโดยใช้แบบฟอร์ม ASP.NET เว็บคลาสสิก ตัวอย่างเช่น: หากคุณต้องการผูกรายการแบบเลื่อนลงหรือกริดวิวคุณต้องใช้เวลาสูงสุด 30 นาทีและไม่เกิน 20 บรรทัดของรหัส (แน่นอนว่าน้อยที่สุด) แต่ในกรณีของ MVC พูดคุยกับนักพัฒนาว่ามันเจ็บปวดแค่ไหน
ข้อเสียที่ใหญ่ที่สุดของ MVC คือเราจะย้อนกลับไปสู่ยุคของ ASP จำสปาเก็ตตี้ในการผสมรหัสเซิร์ฟเวอร์และ HTML ??? โอ้พระเจ้าลองอ่านหน้า MVC aspx ผสมกับ javascript, HTML, JQuery, CSS, แท็กเซิร์ฟเวอร์และสิ่งที่ไม่ .... ร่างกายใด ๆ ที่สามารถตอบคำถามนี้?
แบบฟอร์มบนเว็บยังได้รับจากความเป็นผู้ใหญ่ที่มากขึ้นและการสนับสนุนจากผู้ให้บริการควบคุมบุคคลที่สามเช่น Telerik
ในเว็บฟอร์มคุณสามารถแสดง html เกือบทั้งหมดด้วยมือยกเว้นแท็กบางรายการเช่น viewstate, eventvalidation และที่คล้ายกันซึ่งสามารถลบออกได้ด้วย PageAdapters ไม่มีใครบังคับให้คุณใช้ GridView หรือการควบคุมฝั่งเซิร์ฟเวอร์อื่น ๆ ที่มีเอาต์พุตการแสดงผล html ที่ไม่ดี
ฉันจะบอกว่าประโยชน์ที่ใหญ่ที่สุดของ MVC คือความเร็ว!
ถัดไปคือการแยกความกังวลออกจากกัน แต่มันไม่ได้ห้ามคุณใส่ตรรกะ BL และ DAL ทั้งหมดใน Controller / Action! เป็นเพียงการแยกมุมมองซึ่งสามารถทำได้ในเว็บฟอร์ม (ตัวอย่างรูปแบบ MVP) หลายสิ่งหลายอย่างที่ผู้คนกล่าวถึง mvc สามารถทำได้ในเว็บฟอร์ม แต่ด้วยความพยายามเพิ่มเติม
ข้อแตกต่างที่สำคัญคือคำขอมาถึงตัวควบคุมไม่ใช่มุมมองและทั้งสองเลเยอร์ถูกแยกออกไม่เชื่อมต่อผ่านคลาสบางส่วนเช่นในเว็บฟอร์ม (aspx + โค้ดด้านหลัง)
2 เซนต์ของฉัน:
MVC ช่วยให้คุณมีมากกว่าหนึ่งรูปแบบบนหน้าเว็บคุณสมบัติเล็ก ๆ ที่ฉันรู้ แต่มันมีประโยชน์!
อีกทั้งรูปแบบ MVC ที่ฉันรู้สึกว่าทำให้รหัสง่ายต่อการดูแลรักษา เมื่อคุณกลับมาอีกครั้งหลังจากไม่กี่เดือน
runat="server"
แท็กที่ไม่ใช่รูปแบบเมื่อคุณยังต้องการใช้เว็บฟอร์มและเนื่องจากคุณไม่สามารถ / ไม่ควรทำแบบฟอร์มฉันคิดว่ามันชัดเจนว่าเขาหมายถึงอะไร :)
ตัวควบคุม MVC:
[HttpGet]
public ActionResult DetailList(ImportDetailSearchModel model)
{
Data.ImportDataAccess ida = new Data.ImportDataAccess();
List<Data.ImportDetailData> data = ida.GetImportDetails(model.FileId, model.FailuresOnly);
return PartialView("ImportSummaryDetailPartial", data);
}
มุมมอง MVC:
<table class="sortable">
<thead>
<tr><th>Unique Id</th><th class="left">Error Type</th><th class="left">Field</th><th class="left">Message</th><th class="left">State</th></tr>
</thead>
<tbody>
@foreach (Data.ImportDetailData detail in Model)
{
<tr><th>@detail.UniqueID</th><th class="left">@detail.ErrorType</th><th class="left">@detail.FieldName</th><th class="left">@detail.Message</th><th class="left">@detail.ItemState</th></tr>
}
</tbody></table>
นั่นเป็นวิธีที่ยาก? ไม่มี ViewState ไม่มี BS วงจรชีวิต ... รหัสที่มีประสิทธิภาพล้วนๆ
ฉันเห็นข้อดีเพียงสองข้อสำหรับเว็บไซต์ขนาดเล็กที่มีอยู่: 6) URL ที่สงบซึ่งเปิดใช้งาน SEO 7) ไม่มีเหตุการณ์ ViewState และ PostBack (และประสิทธิภาพที่ดีขึ้นโดยทั่วไป)
การทดสอบไซต์ขนาดเล็กนั้นไม่เป็นปัญหาและไม่ได้เปรียบในการออกแบบเมื่อไซต์ถูกเข้ารหัสอย่างเหมาะสมอย่างไรก็ตาม MVC ในหลาย ๆ วิธีทำให้งงงวยและทำให้การเปลี่ยนแปลงยากขึ้น ฉันยังคงตัดสินใจว่าข้อดีเหล่านี้คุ้มค่าหรือไม่
ฉันเห็นข้อดีของ MVC อย่างชัดเจนในเว็บไซต์ที่มีผู้พัฒนาหลายรายขนาดใหญ่
ประโยชน์หลักที่ฉันค้นพบคือมันบังคับให้โครงการเป็นโครงสร้างที่ทดสอบได้มากขึ้น สิ่งนี้สามารถทำได้อย่างง่ายดายด้วย webforms เช่นกัน (รูปแบบ MVP) แต่ต้องการให้นักพัฒนามีความเข้าใจในเรื่องนี้
Webforms และ MVC เป็นทั้งเครื่องมือที่ทำงานได้ดีทั้งในด้านต่าง ๆ
ฉันใช้แบบฟอร์มบนเว็บเป็นการส่วนตัวในขณะที่เราพัฒนาแอพ B2B / LOB เป็นหลัก แต่เรามักจะทำด้วยรูปแบบ MVP ด้วยซึ่งเราสามารถบรรลุความครอบคลุมโค้ด 95 +% สำหรับการทดสอบหน่วยของเรา สิ่งนี้ยังช่วยให้เราทำการทดสอบคุณสมบัติของค่าคุณสมบัติของเว็บคอนโทรลโดยอัตโนมัติผ่านมุมมองเช่น
bool IMyView.IsAdminSectionVisible{
get{return pnlAdmin.Visible;}
get{pnlAdmin.Visible=value;}
}
) ฉันไม่คิดว่าการทดสอบระดับนี้สามารถทำได้ง่ายใน MVC โดยไม่ต้องสร้างโมเดลของฉัน
ตัวควบคุมจาวาสคริปต์ที่ทันสมัยรวมถึงคำขอ JSON สามารถจัดการได้ง่ายมากโดยใช้ MVC ที่นั่นเราสามารถใช้กลไกอื่น ๆ มากมายในการโพสต์ข้อมูลจากการกระทำหนึ่งไปยังการกระทำอื่น นั่นเป็นเหตุผลที่เราชอบ MVC บนเว็บฟอร์ม นอกจากนี้เราสามารถสร้างหน้าน้ำหนักเบา
ความคิดเห็นส่วนตัวของฉันคือว่าข้อได้เปรียบที่ใหญ่ที่สุดในการใช้ ASP.Net MVC นั้นCODE BLOCKS
ผสมกับHTML
...
html hell สำหรับนักพัฒนาที่ดูแลมัน ...