ฉันสงสัยว่าอะไรคือความแตกต่างระหว่าง MVC (ซึ่งเป็นรูปแบบสถาปัตยกรรม) และสถาปัตยกรรมระดับ n สำหรับแอปพลิเคชัน ฉันค้นหามัน แต่หาคำอธิบายง่ายๆไม่ได้ ฉันอาจเป็นคนไร้เดียงสาเล็กน้อยเกี่ยวกับแนวคิด MVC ดังนั้นหากใครสามารถอธิบายความแตกต่างได้
ไชโย
ฉันสงสัยว่าอะไรคือความแตกต่างระหว่าง MVC (ซึ่งเป็นรูปแบบสถาปัตยกรรม) และสถาปัตยกรรมระดับ n สำหรับแอปพลิเคชัน ฉันค้นหามัน แต่หาคำอธิบายง่ายๆไม่ได้ ฉันอาจเป็นคนไร้เดียงสาเล็กน้อยเกี่ยวกับแนวคิด MVC ดังนั้นหากใครสามารถอธิบายความแตกต่างได้
ไชโย
คำตอบ:
สถาปัตยกรรมระดับ N มักจะมีแต่ละชั้นแยกจากกันโดยเครือข่าย IE เลเยอร์การนำเสนออยู่บนเว็บเซิร์ฟเวอร์บางตัวจากนั้นจะพูดถึงแบ็กเอนด์เซิร์ฟเวอร์แอพผ่านเครือข่ายสำหรับตรรกะทางธุรกิจจากนั้นพูดคุยกับเซิร์ฟเวอร์ฐานข้อมูลอีกครั้งผ่านเครือข่ายและบางทีแอพเซิร์ฟเวอร์อาจเรียกบริการระยะไกล พูด Authorize.net สำหรับการประมวลผลการชำระเงิน)
MVC เป็นรูปแบบการออกแบบการเขียนโปรแกรมที่ส่วนต่าง ๆ ของรหัสมีความรับผิดชอบในการแสดงรูปแบบมุมมองและตัวควบคุมในบางแอปพลิเคชัน สองสิ่งนี้เกี่ยวข้องเนื่องจากตัวอย่างเช่นเลเยอร์โมเดลอาจมีการนำไปใช้ภายในซึ่งเรียกใช้ฐานข้อมูลสำหรับการจัดเก็บและเรียกข้อมูล ผู้ควบคุมอาจอาศัยอยู่บนเว็บเซิร์ฟเวอร์และเรียกแอปเซิร์ฟเวอร์จากระยะไกลเพื่อดึงข้อมูล MVC ย่อรายละเอียดเกี่ยวกับวิธีการใช้งานสถาปัตยกรรมของแอป
N-tier หมายถึงโครงสร้างทางกายภาพของการนำไปใช้งาน บางครั้งทั้งสองสับสนเพราะการออกแบบ MVC มักจะนำมาใช้โดยใช้สถาปัตยกรรม N-tier
หากการออกแบบ 3 ชั้นเป็นเช่นนี้:
Client <-> Middle <-> Data
รูปแบบ MVC จะเป็น:
Middle
^ |
| v
Client <- Data
หมายความว่า:
PS ไคลเอ็นต์จะดูและกลางควบคุม
นี่คือสิ่งที่พูดเกี่ยวกับสถาปัตยกรรมระดับ n
เมื่อมองแวบแรกทั้งสามชั้นอาจดูคล้ายกับแนวคิด MVC (Model View Controller) อย่างไรก็ตามทอพอโลยีนั้นแตกต่างกัน กฎพื้นฐานในสถาปัตยกรรมสามชั้นคือระดับลูกค้าไม่สื่อสารโดยตรงกับชั้นข้อมูล ในรูปแบบสามระดับการสื่อสารทั้งหมดจะต้องผ่านตัวกลางระดับมิดเดิลแวร์ แนวคิดสถาปัตยกรรมสามชั้นเป็นแบบเส้นตรง อย่างไรก็ตามสถาปัตยกรรม MVC เป็นรูปสามเหลี่ยม: มุมมองจะส่งการอัปเดตไปยังคอนโทรลเลอร์คอนโทรลเลอร์จะอัปเดตโมเดลและมุมมองจะได้รับการอัปเดตโดยตรงจากโมเดล
ความคล้ายคลึงกันเพียงอย่างเดียวคือทั้งสองรูปแบบมีสามกล่องในไดอะแกรมของพวกเขา โดยพื้นฐานแล้วพวกเขาแตกต่างอย่างสิ้นเชิงในการใช้งานของพวกเขา หากความจริงมันไม่ใช่ทางเลือกระหว่างรูปแบบที่จะใช้ แต่รูปแบบทั้งสองสามารถใช้ร่วมกันได้อย่างกลมกลืน นี่คือการเปรียบเทียบที่ดีของทั้งสอง: http://allthingscs.blogspot.com/2011/03/mvc-vs-3-tier-pattern.html
กฎพื้นฐานในสถาปัตยกรรมสามชั้นคือระดับลูกค้าที่ไม่เคยสื่อสารกับชั้นข้อมูลโดยตรง ในรูปแบบสามระดับการสื่อสารทั้งหมดจะต้องผ่านตัวกลางระดับมิดเดิลแวร์
มันเป็นสถาปัตยกรรมซับ นี่คือคำถามของวิธีการส่งผ่านข้อมูลระหว่างผู้ใช้และฐานข้อมูล โดยที่ MVC เป็นสถาปัตยกรรมรูปสามเหลี่ยม: มุมมองจะส่งการอัปเดตไปยังคอนโทรลเลอร์คอนโทรลเลอร์จะอัปเดตโมเดลและมุมมองจะได้รับการอัปเดตโดยตรงจากโมเดล คำถามนี้เกี่ยวกับวิธีที่ส่วนต่อประสานผู้ใช้จัดการส่วนประกอบบนหน้าจอ
@Cherry Middle ware ทำงานได้มากกว่าเช่นตัวจัดการคำขอหรือตัวเปลี่ยนเส้นทางในรูปแบบ MVC
ฉันต้องการอธิบายเล็กน้อยเกี่ยวกับ MVC ตามที่ฉัน Model View Controller ทำงานเช่นนี้
นั่นคือทั้งหมดที่เกี่ยวกับ MVC ที่ฉันรู้
พักสมอง และอย่า จำกัด รูปแบบบางอย่างเมื่อแก้ปัญหาในโลกแห่งความจริง เพียงจำไว้ว่าบางหลักการทั่วไปซึ่งหนึ่งในนั้นคือการแยกของความกังวล
นอกจากความเป็นเชิงเส้นแล้วความแตกต่างที่สำคัญอื่น ๆ ที่ไม่ได้เน้นมากพอที่นี่ก็คือในโมเดล N-tier นั้น N ไม่จำเป็นต้องมี 3 ชั้น! มันมักจะถูกนำมาใช้เป็นสามชั้น (งานนำเสนอแอปข้อมูล) กับชั้นกลางที่มีสองชั้นย่อย (ตรรกะทางธุรกิจและการเข้าถึงข้อมูล) นอกจากนี้โมเดลใน MVC สามารถมีทั้งข้อมูลและตรรกะทางธุรกิจสำหรับการจัดการข้อมูลในขณะที่สิ่งเหล่านี้จะอยู่ในระดับที่แยกต่างหากในระดับ n
สถาปัตยกรรม N-Tier ได้รับการกำหนดไว้อย่างดีที่สุดโดยใช้ Diagram
สถาปัตยกรรม MVC ได้รับการกำหนดที่ดีที่สุดโดยใช้ Sequence Diagram
2 ไม่เหมือนกันและไม่เกี่ยวข้องและคุณสามารถรวมสองสถาปัตยกรรมเข้าด้วยกัน บริษัท จำนวนมากได้ทำตามขั้นตอนเพื่อสร้างสถาปัตยกรรม N Tier'd ไม่เพียง แต่การปรับใช้และความสามารถในการปรับขนาด แต่สำหรับการใช้รหัสซ้ำ
ตัวอย่างเช่นวัตถุ Business Entity ของคุณอาจต้องมีการใช้งานโดยแอปเดสก์ท็อปบริการเว็บที่เปิดรับลูกค้าไคลเอนต์เว็บแอปหรือแอพมือถือ การใช้วิธีการ MVC เพียงอย่างเดียวจะไม่ช่วยให้คุณนำสิ่งใดมาใช้ซ้ำได้เลย
สรุป: N-tier เป็นสถาปัตยกรรม MVC รูปแบบการออกแบบ พวกเขาเป็นคำเปรียบเทียบที่ใช้ในสองสาขาที่แตกต่างกัน
Jerry: นี่เป็นตัวอย่างง่ายๆของความสัมพันธ์ระหว่างสอง:
Tier 1ประกอบด้วยรุ่นที่สื่อสารกับ Tier 2 ผ่านบริการเครือข่ายบางประเภทหรือคล้ายกันคอนโทรลเลอร์เพื่อจัดการการตรวจสอบอินพุตการคำนวณและสิ่งอื่น ๆ ที่เกี่ยวข้องกับมุมมอง และมันมีมุมมองตัวเอง ofcourse - ซึ่งสามารถเป็น GUI ในแอพเดสก์ท็อปหรือเว็บอินเตอร์เฟสในเว็บแอพ
Tier 2 - มีบริการบางอย่างหรือวิธีรับข้อความจาก Tier 1 ไม่ / ไม่ควรรู้เกี่ยวกับ Tier 1 ดังนั้นสามารถตอบรับสายจากด้านบนเท่านั้น - ไม่ต้องขอสิ่งต่าง ๆ ด้วยตัวเอง ยังมีตรรกะทางธุรกิจทั้งหมด
ชั้นที่ 3 - มีรูปแบบโดเมน, การแสดงวัตถุของฐานข้อมูลและตรรกะทั้งหมดในการสื่อสารและอัพเดทรายการฐานข้อมูล
ในรูปแบบสามระดับการสื่อสารทั้งหมดจะต้องผ่านชั้นกลาง แนวคิดสถาปัตยกรรมสามชั้นเป็นแบบเส้นตรง อย่างไรก็ตามสถาปัตยกรรม [model-view-controller] MVC เป็นรูปสามเหลี่ยม: มุมมองจะส่งการอัปเดตไปยังคอนโทรลเลอร์คอนโทรลเลอร์จะอัพเดตโมเดลและมุมมองจะได้รับการอัพเดตโดยตรงจากโมเดล