ตามที่SunและMsdnเป็นรูปแบบการออกแบบ
ตามวิกิพีเดียเป็นรูปแบบสถาปัตยกรรม
เมื่อเปรียบเทียบกับรูปแบบการออกแบบลวดลายสถาปัตยกรรมจะมีขนาดใหญ่กว่า (Wikipedia - รูปแบบสถาปัตยกรรม )
หรือเป็นรูปแบบสถาปัตยกรรมที่มีรูปแบบการออกแบบด้วย?
อันไหนจริง?
ตามที่SunและMsdnเป็นรูปแบบการออกแบบ
ตามวิกิพีเดียเป็นรูปแบบสถาปัตยกรรม
เมื่อเปรียบเทียบกับรูปแบบการออกแบบลวดลายสถาปัตยกรรมจะมีขนาดใหญ่กว่า (Wikipedia - รูปแบบสถาปัตยกรรม )
หรือเป็นรูปแบบสถาปัตยกรรมที่มีรูปแบบการออกแบบด้วย?
อันไหนจริง?
คำตอบ:
MVC เป็นรูปแบบสถาปัตยกรรมมากกว่า แต่ไม่ใช่สำหรับการใช้งานที่สมบูรณ์ MVC ส่วนใหญ่เกี่ยวข้องกับ UI / เลเยอร์การโต้ตอบของแอปพลิเคชัน คุณยังคงต้องใช้เลเยอร์ตรรกะทางธุรกิจอาจจะเป็นชั้นบริการและชั้นการเข้าถึงข้อมูล นั่นคือถ้าคุณเข้าใกล้ n-tier approach
ทำไมหนึ่งในนั้นถึงต้องเป็นจริง?
ทั้งสองอย่างสามารถเป็นจริงขึ้นอยู่กับมุมมอง
MVC สามารถเป็นรูปแบบทางสถาปัตยกรรมได้หากเป็นพื้นฐานของสถาปัตยกรรมแอปพลิเคชัน
นอกจากนี้ยังสามารถมองว่าเป็นเพียงรูปแบบการออกแบบแนวคิดนามธรรมที่ใช้ได้กับแอปพลิเคชันใด ๆ
รูปแบบการออกแบบกล่าวถึงวิธีการเขียนโค้ดอย่างมีประสิทธิภาพ (พิจารณาCode Metrics )
ประโยชน์บางประการ:
รูปแบบสถาปัตยกรรมกล่าวถึงวิธีการใช้ทรัพยากรอย่างมีประสิทธิภาพ
ใน MVC, a). มุมมองสามารถสร้างได้โดยใช้เทมเพลตจาวาสคริปต์และยังสามารถใช้ html b) ตัวควบคุมสามารถเขียน. NET framework และ c) สามารถเขียนโมเดลใน Java - อาจใช้บริการ java ที่ส่งคืนเฉพาะข้อมูล json
ในรูปแบบการออกแบบไม่สามารถใช้รูปแบบที่สามารถเขียนโค้ดในหลายเทคโนโลยีเช่นคลาส AdminUser ใน Java, คลาสลูกค้าใน C #, คลาส Partners ใน Php และรูปแบบโรงงานใน Ruby :); อืม.. ง่ายไปไหม :)
ฉันรู้ว่ามีคำตอบเมื่อสักครู่ที่ผ่านมา แต่ยังไม่มีใครพูดถึงหนังสือที่สร้างชื่อเสียงให้กับ MVC: Pattern-Oriented Software Architecture (POSA) โดย Buschmann และอื่น ๆ ที่ตีพิมพ์ในปี 2539 แม้ว่าจะไม่ได้อ่านกันอย่างแพร่หลายเท่าหนังสือ Design Patterns โดย Gamma และคณะ POSA เป็นหนึ่งในหนังสือพื้นฐานที่ชุมชนรูปแบบใช้
โอ้และ POSA ระบุอย่างชัดเจนมากว่า MVC เป็นรูปแบบสถาปัตยกรรม ลางสังหรณ์ของฉันคือ MS และ Sun เป็นเพียงแค่เลอะเทอะและเรียกรูปแบบทุกอย่างว่า "รูปแบบการออกแบบ"
ผมว่าจริงทั้งคู่ หากคุณกำลังดูการสร้างอินสแตนซ์เฉพาะของ MVC ในเฟรมเวิร์กเช่น Ruby on Rails การสร้างอินสแตนซ์นั้นเป็นรูปแบบการออกแบบมากกว่า หากคุณมอง MVC เป็นแนวคิดทั่วไปมันเป็นรูปแบบสถาปัตยกรรมมากกว่า
รูปแบบการออกแบบภายในกลุ่มโมเดล / มุมมอง / คอนโทรลเลอร์ (MVC) ทั้งสามประเภทรวมถึงและอาจไม่ จำกัด เฉพาะ:
ผู้สังเกตการณ์แยกวัตถุเพื่อให้การเปลี่ยนแปลงเป็นหนึ่ง (แบบจำลอง) สามารถส่งผลกระทบต่อจำนวนอื่น ๆ (มุมมอง) โดยไม่ต้องให้วัตถุที่เปลี่ยนแปลง (แบบจำลอง) ทราบรายละเอียดของวัตถุอื่น (มุมมอง)
คอมโพสิตซึ่งช่วยให้เราปฏิบัติต่อออบเจ็กต์กลุ่ม (มุมมองแบบผสม) เหมือนกับที่เราปฏิบัติต่อวัตถุแต่ละชิ้น (ดูส่วนประกอบ)
กลยุทธ์ที่มุมมองใช้อินสแตนซ์ของคลาสย่อยของคอนโทรลเลอร์เพื่อใช้กลยุทธ์การตอบสนองเฉพาะ ในการใช้กลยุทธ์อื่นเพียงแค่แทนที่อินสแตนซ์ด้วยตัวควบคุมประเภทอื่น
วิธีโรงงานระบุคลาสคอนโทรลเลอร์เริ่มต้นสำหรับมุมมอง
มัณฑนากรเพิ่มการเลื่อนไปยังมุมมอง
ข้อมูลอ้างอิง
Eric Gamma, Richard Helm, Ralph Johnson และ John Vlissides รูปแบบการออกแบบ: องค์ประกอบของซอฟต์แวร์เชิงวัตถุที่ใช้ซ้ำได้ Addison-Wesley, Reading, MA, 1994
MVC มักกล่าวถึงและแนะนำเป็น / ในเลเยอร์การนำเสนอในหนังสือสถาปัตยกรรมซอฟต์แวร์
อ่านหนังสือเหล่านี้:
การออกแบบโซลูชัน Microsoft.NET สำหรับองค์กร (Microsoft press)
Enterpise Solutions Patterns โดยใช้ Microsoft.NET (Microsoft press)
รูปแบบของสถาปัตยกรรมแอปพลิเคชันสำหรับองค์กร (Addison Wesley)
แนวทางปฏิบัติสำหรับสถาปัตยกรรมองค์กร (Prentice Hall)
หากคุณใส่สถาปนิกซอฟต์แวร์สิบคนเข้าไปในห้องและให้พวกเขาคุยกันว่ารูปแบบ Model-View-Controller คืออะไรคุณจะได้รับความคิดเห็นที่แตกต่างกันถึง 12 แบบ …คนเจ้าระเบียบบางคนที่นั่นจะมีความเข้าใจกับสิ่งที่ฉันเรียกว่า“ MVC” อย่างหลีกเลี่ยงไม่ได้ อย่าลังเลที่จะแสดงความคิดเห็นที่ลุกเป็นไฟบนกระดานข้อความที่ด้านล่างของเว็บเพจนี้ ฉันยินดีที่จะให้ความบันเทิงในมุมมองที่แตกต่างกันเกี่ยวกับความหมายของ MVC แต่โปรดทราบว่าฉันไม่สนใจ
จอชสมิ ธ
และตามที่ Martin Fowler เป็นสถาปัตยกรรม GUI: สถาปัตยกรรมMartin Fowler-GUI
ขึ้นอยู่กับขนาดของแอปพลิเคชันเนื่องจากมีผลกับคลาสที่เกี่ยวข้องกับ GUI เท่านั้นในขนาดเล็ก (ส่วนใหญ่เป็น GUI) อาจถือได้ว่าเป็นรูปแบบสถาปัตยกรรมในขณะที่รูปแบบขนาดใหญ่จะเป็นเพียงรูปแบบการออกแบบที่คุณใช้กับ GUI รหัส (อาจเป็น 10% ของรหัสแอป)
MVC คือรูปแบบสถาปัตยกรรม ระบุไว้ชัดเจนมากและแสดงที่http://molecularsciences.org/zend/mvc_model_view_controller