ฉันต้องการทราบว่าอะไรทำไมหรือเมื่อใดจึงดีกว่าที่จะเลือก cshtml และอะไรทำไมหรือเมื่อใดจึงดีกว่าที่จะเลือกเทคโนโลยี aspx เทคโนโลยีทั้งสองนี้มีไว้เพื่ออะไร?
ขอบคุณ,
ฉันต้องการทราบว่าอะไรทำไมหรือเมื่อใดจึงดีกว่าที่จะเลือก cshtml และอะไรทำไมหรือเมื่อใดจึงดีกว่าที่จะเลือกเทคโนโลยี aspx เทคโนโลยีทั้งสองนี้มีไว้เพื่ออะไร?
ขอบคุณ,
คำตอบ:
ตามที่คนอื่น ๆ ตอบ.cshtml
(หรือ.vbhtml
ถ้านั่นคือรสชาติของคุณ) มีการทำแผนที่ตัวจัดการเพื่อโหลดเอ็นจิ้น MVC .aspx
ขยายเพียงแค่โหลด aspnet_isapi.dll ที่ดำเนินการรวบรวมและให้บริการขึ้นรูปแบบเว็บ ความแตกต่างในการทำแผนที่ตัวจัดการเป็นเพียงวิธีการอนุญาตให้ทั้งสองอยู่ร่วมกันบนเซิร์ฟเวอร์เดียวกันทำให้ทั้งแอปพลิเคชัน MVC และแอปพลิเคชัน WebForms สามารถใช้งานได้ภายใต้รูททั่วไป
สิ่งนี้ช่วยให้http://www.mydomain.com/MyMVCApplicationถูกต้องและให้บริการด้วยกฎ MVC พร้อมกับhttp://www.mydomain.com/MyWebFormsApplicationเป็นเว็บฟอร์มมาตรฐาน
แก้ไข:
สำหรับความแตกต่างในเทคโนโลยีเฟรมเวิร์กเทมเพลต MVC (Razor) มีวัตถุประสงค์เพื่อส่งคืนหน้า. Net ไปยังแพลตฟอร์ม "บนเว็บ" ที่น่ารังเกียจยิ่งขึ้นของมุมมองเทมเพลตที่แยกตรรกะของรหัสระหว่างโมเดล (วัตถุทางธุรกิจ / ข้อมูล) , มุมมอง (สิ่งที่ผู้ใช้เห็น) และตัวควบคุม (การเชื่อมต่อระหว่างทั้งสอง) แบบจำลอง WebForms (aspx) เป็นความพยายามของ Microsoft ในการใช้การฝังจาวาสคริปต์ที่ซับซ้อนเพื่อจำลองแอปพลิเคชันที่มีสถานะคล้ายกับแอปพลิเคชัน WinForms พร้อมด้วยเหตุการณ์และวงจรชีวิตของเพจที่จะสามารถรักษาสถานะของตัวเองจากหน้าหนึ่งไปอีกหน้าหนึ่งได้
การเลือกใช้อย่างใดอย่างหนึ่งมักจะเป็นที่ถกเถียงกันอยู่เสมอเนื่องจากมีข้อโต้แย้งเกี่ยวกับทั้งสองระบบ ฉันชอบความเรียบง่ายในสถาปัตยกรรม MVC (แม้ว่าการกำหนดเส้นทางจะเป็นอะไรก็ได้ แต่ก็เรียบง่าย) และความง่ายของไวยากรณ์ของ Razor ฉันรู้สึกว่าสถาปัตยกรรม WebForms นั้นหนักเกินไปที่จะเป็นแพลตฟอร์มเว็บที่มีประสิทธิภาพ ดังที่กล่าวมามีหลายกรณีที่เฟรมเวิร์ก WebForms มีรูปแบบที่กระชับและใช้งานได้พร้อมโครงสร้างเหตุการณ์ที่หลากหลายซึ่งได้รับการกำหนดไว้อย่างดี ทุกอย่างขึ้นอยู่กับความต้องการของแอปพลิเคชันและความต้องการของผู้สร้าง
มีดโกนเป็นเครื่องมือมุมมองสำหรับ ASP.NET MVC และยังเป็นแม่แบบเครื่องยนต์ รหัสมีดโกนและโค้ดอินไลน์ ASP.NET (รหัสผสมกับมาร์กอัป) ทั้งสองได้รับการคอมไพล์ก่อนและกลายเป็นแอสเซมบลีชั่วคราวก่อนที่จะดำเนินการ ดังนั้นเช่นเดียวกับ C # และ VB.NET ทั้งสองคอมไพล์เป็น IL ซึ่งทำให้เปลี่ยนได้รหัส Razor และ Inline สามารถเปลี่ยนกันได้
ดังนั้นจึงเป็นเรื่องของรูปแบบและความสนใจมากกว่า ฉันสบายใจกับมีดโกนมากกว่ารหัสอินไลน์ ASP.NET นั่นคือฉันชอบหน้า Razor (cshtml) เป็นหน้า. aspx
ลองนึกภาพว่าคุณอยากได้Human
ชั้นเรียนแล้วแสดงผล ในไฟล์cshtml ที่คุณเขียน:
<div>Name is @Model.Name</div>
ขณะอยู่ในไฟล์aspx ที่คุณเขียน:
<div>Name is <%= Human.Name %></div>
อย่างที่คุณเห็น@
สัญลักษณ์ของมีดโกนทำให้การผสมรหัสและมาร์กอัปง่ายขึ้นมาก
Model
ใช้สำหรับมุมมองที่พิมพ์มากซึ่งคุณกำหนดประเภทของคุณที่ด้านบนโดยใช้model
คำสำคัญ
แม้ว่าไวยากรณ์จะแตกต่างกันอย่างแน่นอนระหว่าง Razor ( .cshtml
/ .vbhtml
) และ WebForms ( .aspx
/ .ascx
) แต่ (Razor มีความกระชับและทันสมัยกว่า) แต่ก็ไม่มีใครพูดถึงว่าในขณะที่ทั้งสองสามารถใช้เป็น View Engines / Templating Engines, ASP.NET แบบดั้งเดิม สามารถใช้ตัวควบคุมฟอร์มเว็บบนไฟล์. aspx หรือ. ascx ใด ๆ (แม้จะทำงานร่วมกันกับสถาปัตยกรรม MVC)
สิ่งนี้เกี่ยวข้องในสถานการณ์ที่มีการสร้างแนวทางแก้ไขปัญหาที่ยาวนานและรวมอยู่ในส่วนประกอบที่เสียบได้ (เช่นการควบคุมการอัปโหลดไฟล์ขนาดใหญ่) และคุณต้องการใช้ในไซต์ MVC ด้วย Razor คุณไม่สามารถทำสิ่งนี้ได้ อย่างไรก็ตามคุณสามารถดำเนินการประมวลผลแบ็กเอนด์เดียวกันทั้งหมดที่คุณจะใช้กับสถาปัตยกรรม ASP.NET แบบเดิมด้วยมุมมองแบบฟอร์มเว็บ
นอกจากนี้มุมมองเว็บฟอร์ม ASP.NET สามารถมีไฟล์ Code-Behind ซึ่งช่วยให้การฝังลอจิกลงในไฟล์แยกต่างหากที่รวบรวมพร้อมกับมุมมอง ในขณะที่ชุมชนการพัฒนาซอฟต์แวร์กำลังเติบโตขึ้นโดยมองว่าสถาปัตยกรรมคู่กันอย่างแน่นหนาและรูปแบบไคลเอนต์สมาร์ทเป็นแนวทางปฏิบัติที่ไม่ดีแต่ก็เคยเป็นวิธีหลักในการทำสิ่งต่างๆและยังคงเป็นไปได้มากกับไฟล์. aspx / .ascx มีดโกนโดยเจตนาไม่มีคุณภาพดังกล่าว
ไฟล์ Cshtml เป็นไฟล์ที่ Razor ใช้และตามที่ระบุไว้เป็นคำตอบสำหรับคำถามนี้ข้อได้เปรียบหลักคือสามารถแสดงผลในการทดสอบหน่วย คำตอบที่หลากหลายสำหรับหัวข้ออื่น ๆ นี้จะนำมาซึ่งประเด็นที่น่าสนใจอื่น ๆ มากมาย