นี่เหมือนกับถามว่าความแตกต่างระหว่างแอปเปิลกับแอปเปิ้ลคอร์ สถาปัตยกรรมทั้งสองนี้ไม่ได้แทนที่กัน ฉันคิดว่ามุมมองที่แม่นยำยิ่งขึ้นคือสถาปัตยกรรม 3 ระดับเพิ่ม MVC
สถาปัตยกรรม MVC
รุ่น: สิ่งเหล่านี้แสดงถึง "สิ่งของ" ในแอปพลิเคชันของคุณ เลเยอร์นี้มีเลือนเล็กน้อยในช่วงไม่กี่ปีที่ผ่านมาอย่างที่ฉันจะอธิบายในภายหลัง
Views:ส่วนต่อประสานผู้ใช้ สิ่งที่ผู้ใช้โต้ตอบด้วย
ตัวควบคุม:รหัสการเขียนโปรแกรมที่ตอบสนองต่อผู้ใช้และการเปลี่ยนแปลงในชั้นรูปแบบ
สถาปัตยกรรม 3 ชั้น
ด้วยสถาปัตยกรรม 3 ชั้นคุณมีเลเยอร์ที่มีความรับผิดชอบแตกต่างกัน
บริการผู้ใช้: (หรือ "บริการ" โดยทั่วไป) เลเยอร์นี้เป็นข้อมูลเพิ่มเติมเกี่ยวกับการประสานงานการดึงข้อมูลและการปรับเปลี่ยนเลเยอร์ "โมเดล" การดำเนินการที่ซับซ้อนและหลายขั้นตอนดำเนินการที่นี่
ชั้นธุรกิจ:สิ่งนี้แสดงให้เห็นถึงกฎเกณฑ์ทางธุรกิจที่ฝังอยู่ในรหัสการเขียนโปรแกรม สิ่งที่ต้องการ "ธุรกิจ" ถูกบังคับใช้ในเลเยอร์นี้
Data Access Layer:หนึ่งคลาสขึ้นไปที่รับผิดชอบการเข้าถึงที่เก็บข้อมูลถาวร
ส่วนเดียวของสถาปัตยกรรม 3 ชั้นที่ตัดกับ MVC คือ "ชั้นธุรกิจ" "รุ่น" ใน MVC และ "ชั้นธุรกิจ" ในสถาปัตยกรรม 3 ชั้นกำลังพยายามบรรลุเป้าหมายเดียวกัน
"M" ใน MVC มีอากาศเลือน
เลเยอร์ "รุ่น" ใน MVC ได้ขยายตัวในปีที่ผ่านมา จากสิ่งที่ฉันเห็นมีสองแบบสามแบบ:
รูปแบบโดเมน: สิ่งเหล่านี้แสดงถึง "สิ่งต่าง ๆ " ที่ "ธุรกิจ" ใส่ใจ - โดเมนธุรกิจ คลาสเหล่านี้เก็บข้อมูลและโพรซีเดอร์ทั้งหมดที่ทำงานกับข้อมูลนั้นเพื่อบังคับใช้กฎเกณฑ์ทางธุรกิจ โมเดลโดเมนที่เชื่อมโยงกับตารางในฐานข้อมูลบ่อยครั้ง สิ่งนี้น่าจะเหมาะกับ "ชั้นธุรกิจ" ของสถาปัตยกรรม 3 ชั้น
ดูโมเดล:นี่คือคลาสที่ใช้ในการนวดข้อมูลจากโมเดลโดเมนเป็นสิ่งที่น่าพึงพอใจสำหรับมุมมอง สิ่งนี้ไม่เหมาะกับทุกที่ในสถาปัตยกรรม 3 ชั้นเนื่องจากโมเดลการดูไม่ได้ใช้ตรรกะทางธุรกิจและไม่ได้ให้บริการหรือการเข้าถึงข้อมูลใด ๆ
รูปแบบธุรกิจ:ในแอปพลิเคชันที่ซับซ้อนความจำเป็นในการแยกรูปแบบโดเมนจากตรรกะทางธุรกิจเกิดขึ้น รูปแบบธุรกิจประกอบด้วยข้อมูลและขั้นตอนการดำเนินการกับข้อมูลนั้นเพื่อใช้กฎทางธุรกิจและรูปแบบโดเมนจะถูกลดชั้นลงไปที่ "ถุงทรัพย์สิน" - วัตถุที่เพิ่งเก็บข้อมูล แต่ไม่มีพฤติกรรม รูปแบบโดเมนกลายเป็นรูปแบบอื่นของ Data Transfer Object ระหว่างฐานข้อมูลและแอปพลิเคชัน
ไม่มีที่ไหนใน MVC ที่กล่าวถึงการเข้าถึงข้อมูล ในบางกรณีคุณจะเห็นว่าการเข้าถึงข้อมูลอยู่ในเลเยอร์ "รุ่น" ของ MVC ซึ่งอย่างที่เราเห็นมานั้นไม่ได้เป็นเลเยอร์ที่ชัดเจนอีกต่อไป จริง ๆ แล้วฉันเห็นสถาปัตยกรรม 3 ชั้นที่จับคู่กับ MVC เพื่อสร้างแอปพลิเคชันทั้งหมด หนึ่ง augments หรือปรับปรุงอื่น ๆ :
- รุ่น
- โมเดลของโดเมน (MVC / 3-tier)
- ดูรุ่น (MVC)
- (เป็นทางเลือก) โมเดลธุรกิจ (MVC / 3-tier)
- จำนวนการดู (MVC)
- ตัวควบคุม (MVC)
- การเข้าถึงข้อมูล (3 ระดับ)
- บริการ (3 ชั้น)
มีจุดตัดบางส่วน แต่ส่วนใหญ่แยกจากกันและใช้ร่วมกันในการแยกและแยกส่วนประกอบต่าง ๆ ของระบบขนาดใหญ่