คำถามติดแท็ก mvc

MVC (Model-View-Controller) เป็นรูปแบบสถาปัตยกรรมซอฟต์แวร์ที่บังคับให้แยกความกังวลออก

2
วิธีที่ดีที่สุดในการสร้างรูปแบบการตอบสนองข้อผิดพลาด REST API และระบบรหัสข้อผิดพลาดคืออะไร?
การใช้งาน REST ของฉันจะส่งคืนข้อผิดพลาดใน JSON ด้วยโครงสร้างถัดไป: { "http_response":400, "dev_message":"There is a problem", "message_for_user":"Bad request", "some_internal_error_code":12345 } ฉันแนะนำให้สร้างโมเดลการตอบกลับพิเศษซึ่งฉันสามารถส่งผ่านค่าที่ต้องการสำหรับคุณสมบัติ (dev_message, message_for_user, some_internal_error_code) และส่งคืนได้ ในรหัสมันจะคล้ายกับสิ่งนี้: $responseModel = new MyResponseModel(400,"Something is bad", etc...); รุ่นนี้มีหน้าตาเป็นอย่างไร ฉันควรใช้วิธีการอย่างเช่น successResponse () โดยที่ฉันจะส่งผ่านเฉพาะข้อมูลตัวอักษรและรหัสจะเป็นค่าเริ่มต้น 200 รายการ ฉันติดอยู่กับเรื่องนี้ และนี่เป็นส่วนแรกของคำถามของฉัน: ฉันจำเป็นต้องใช้โมเดลนี้หรือไม่ เพราะตอนนี้ฉันเพิ่งกลับอาร์เรย์โดยตรงจากรหัส ส่วนที่สองเป็นเรื่องเกี่ยวกับระบบรหัสข้อผิดพลาด รหัสข้อผิดพลาดจะอธิบายไว้ในเอกสาร แต่ปัญหาที่ฉันพบอยู่ในรหัส วิธีที่ดีที่สุดในการจัดการรหัสข้อผิดพลาดคืออะไร? ฉันควรเขียนมันไว้ในโมเดลหรือไม่? หรือมันจะเป็นการดีกว่าถ้าจะสร้างบริการแยกต่างหากสำหรับจัดการสิ่งนี้ อัพเดท 1 ฉันใช้คลาสจำลองเพื่อการตอบสนอง มันเป็นคำตอบที่คล้ายกันของ Greg …
15 php  mvc  rest  api 

8
มีรูปแบบการออกแบบยกเว้น MVC สำหรับเว็บหรือไม่
ฉันต้องการทราบว่ามีรูปแบบการออกแบบใด ๆ สำหรับเว็บนอกเหนือจาก MVC หรือไม่ ฉันรู้ว่ามีรูปแบบการออกแบบเป็น: Registry, Observer, Factory, ActiveRecord, ... และ MVC ชุดของรูปแบบการออกแบบอื่น ๆ และโครงสร้างโฟลเดอร์ มีรูปแบบการออกแบบเช่น MVC เป็นชุดรูปแบบการออกแบบอื่น ๆ หรือไม่? แก้ไข: ภาษาการเขียนโปรแกรมของฉันคือ PHP

4
ใน MVC หลายมุมมองสามารถมีคอนโทรลเลอร์เดียวกันหรือหนึ่งมุมมองต้องมีคอนโทรลเลอร์ที่ไม่ซ้ำใคร
ฉันมีคำถามในขณะที่ออกแบบสถาปัตยกรรมสำหรับโครงการรอบ MVC (เป็นโครงการ SDK C ++ / Marmalade ฉันไม่ได้ใช้กรอบ MVC ใด ๆ โดยเฉพาะฉันกำลังทำอยู่) ในหลาย ๆ บทความ (เช่นเดียวกับบทความเดิมของ Steve Burbek ) ฉันอ่านแนวคิด "MVC triad" ที่ทำให้ฉันรู้สึกแย่ตั้งแต่ที่ฉันใช้แนวคิดนี้ไป เมื่อฉันอ่านครั้งแรกดูเหมือนว่าแอปพลิเคชันจะถูกสร้างขึ้นรอบ ๆ "MVC triad" - หนึ่งชิ้นสำหรับแต่ละส่วน UI ที่ฉันควรจะ - แต่ฉันพบว่ามันค่อนข้างไม่ยืดหยุ่นและฉันคิดว่านั่นไม่ใช่วิธีที่ MVC ตั้งใจใช้ จากนั้นทำการค้นคว้าเพิ่มเติมเกี่ยวกับปัญหาฉันพบตัวอย่างของการมีเพศสัมพันธ์อย่างแน่นหนาของคอนโทรลเลอร์และมุมมองคือความสัมพันธ์แบบ 1 ต่อ 1 - TextEditView มี TextEditController แต่เมื่อฉันกลับไปที่โครงการของฉันฉันพบว่าอาจเป็นประโยชน์ที่จะมีตัวควบคุมหนึ่ง (โดย 'หน่วยทางลอจิคัล' เช่น AddElementController) และหลายมุมมองสำหรับตัวควบคุมนั้น …

3
MVC: อะไรคือความแตกต่างระหว่างรุ่นและบริการ?
เหตุใดในบางเฟรมเวิร์กลอจิกจึงเรียกว่า "Model" ในขณะที่บางเฟรมเรียกว่า "Service" พวกเขาแตกต่างกันหรือแตกต่างกันโดยการตั้งชื่อแบบแผน? อัพเดท 1 เหตุผลที่ฉันถามคือเพราะใน Zend Framework กรอบ MVC คลาสสิกทุกคนใช้แนวคิดของ Model ตอนนี้ฉันกำลังเรียนรู้ AngularJS และดูเหมือนว่าคำว่ารุ่นหายไปและถูกแทนที่ด้วยบริการคำว่า สิ่งที่ฉันสังเกตเห็นคือการบริการเป็นเหมือนซิงเกิลตันที่สามารถนำกลับมาใช้ซ้ำแล้วซ้ำอีก (ตัวอย่าง: ไคลเอนต์ REST) ​​ในขณะที่แบบจำลองมีความสัมพันธ์กับการจัดการข้อมูลที่มาจากตัวควบคุมในรูปแบบ MVC มากกว่า
15 mvc  model  service 

4
การออกแบบรุ่นที่เหมาะสม - ดู -_____
ฉันได้อ่านเกี่ยวกับ Model View Controller, Model View Presenter, Model View ViewModel เป็นต้นโดยทั่วไปแนวคิดพื้นฐานดูเหมือนจะเข้าใจง่าย: เก็บภาพที่สวยงามและความกล้าหาญทางวิทยาศาสตร์แยกจากกันและงมงายเป็น เป็นไปได้ ไม่ได้รับเนยถั่วลิสงในการออกแบบช็อคโกแลต; ฉันชอบมัน ปัญหาคือฉันยังคงคลุมเครือเล็กน้อยในส่วนที่สามนั่นคือ ... ไม่ใช่โมเดลหรือมุมมอง ทุกคนดูเหมือนจะมีความคิดของตัวเองว่าจะเรียกมันว่าอะไรควรทำอะไรเหมาะสมอะไรผิดปกติธรรมดา ... และฉันจะพยายามคิดออกเมื่อผู้นำเสนอกลายเป็น ViewModel และเมื่อมุมมองไม่ควร ' อย่าทำอย่างนั้นเพราะนั่นคืองานของผู้นำเสนอและ - ฉันเที่ยว แทนที่จะขอให้ใครบางคนอธิบายความแตกต่างระหว่างพวกเขา - เพราะมันทำมาแล้วครั้งแล้วครั้งเล่า (ฉันรู้ว่าฉันอ่านบทความมากกว่าที่ฉันสามารถนับได้) - ฉันอยากรู้อยากเห็นความคิดของ โปรแกรมเมอร์เพียงไม่กี่คนในแบบจำลองที่ฉันได้เดินด้วยกัน ที่กล่าวว่าสิ่งที่คุณจะจัดประเภทการออกแบบนี้และที่สำคัญกว่าคุณเห็นอะไรเกี่ยวกับเรื่องนี้ที่ชัดดูด? แน่นอนว่าฉันชอบที่จะได้ยินว่าฉันทำได้ดีถ้านี่คือการออกแบบที่มั่นคงอย่างแท้จริง แต่ฉันอยากได้รับคำแนะนำที่หนักแน่นมากกว่าการชม หมายเหตุ: ฉันจะใช้ "the Bridge" สำหรับส่วนที่สามอันลึกลับของ Model-View-? เพื่อหลีกเลี่ยงคำแนะนำจิตใต้สำนึกของสิ่งที่ "ควร" เป็น แบบ เป็นสิทธิของข้อมูล รับข้อมูลเกี่ยวกับการเปลี่ยนแปลงที่ร้องขอจาก Bridge …

8
MVC ใช้กับเว็บเท่านั้นหรือไม่
มันเกือบจะทันทีและเมื่อใดก็ตามที่ฉันพูดคุยกับนักพัฒนาเกี่ยวกับ Model View Controller ( MVC ) พวกเขาบอกว่าคุณทำคำขอไปยัง URL ที่เซิร์ฟเวอร์สร้างเอนทิตี (MODEL) และให้การแสดงภาพของโมเดลนั้น นี่หมายความว่า MVC สำหรับเว็บเท่านั้นหรือฉันได้พบปะกับผู้คนที่เป็นเพียงนักพัฒนาซอฟต์แวร์ที่จ้าง MVC สำหรับการเขียนเว็บแอปพลิเคชัน มีการใช้งาน MVC บนเดสก์ท็อปสไตล์แอปพลิเคชันหรือไม่ ฉันเป็นคนใหม่สำหรับกระบวนทัศน์และอยากจะรู้ว่าซูเปอร์ชุดใด ๆ ที่ MVC

13
M ใน MVC อยู่ที่ไหน
ฉันพยายาม refactor ใบสมัครของฉันเป็น MVC แต่ฉันติดอยู่ที่ส่วน M ในแอปที่มีฐานข้อมูลสำรองโมเดลจะถูกนำไปใช้ในรหัสแอปใช่ไหม แต่แล้วอะไรคือสิ่งที่อยู่ในฐานข้อมูล - นั่นไม่ใช่แบบจำลองหรือไม่ (ฉันไม่ได้ใช้ฐานข้อมูลเป็นที่เก็บวัตถุแบบง่าย - ข้อมูลในฐานข้อมูลเป็นสินทรัพย์ขององค์กร)

5
การทดสอบหน่วยเป็นวัตถุประสงค์หลักของรูปแบบ MVC หรือไม่
เมื่อเร็ว ๆ นี้ในการสัมภาษณ์หนึ่งในคำถามคือ 'เราจะใช้ MVC ทำไม' ฉันเพิ่งตอบว่ามันใกล้เคียงกับระบบโลกแห่งความเป็นจริงมากแค่ไหน! อธิบายถึงประโยชน์ที่ได้รับเมื่อพูดถึงการบำรุงรักษาความสามารถในการปรับขนาดและอื่น ๆ แต่พวกเขาไม่มั่นใจและในที่สุดก็บอกฉันว่า MVC ใช้เป็นหลักเพราะ 'ช่วยให้ทดสอบหน่วยได้ง่าย' ในขณะที่ฉันรู้ว่าพวกเขาเป็นจุดที่ถูกต้องฉันยังคงสงสัยว่ามันเป็นเหตุผลสำคัญเพราะ (i) แม้ว่าฉันตัดสินใจที่จะไม่เขียน Unit Testcases MVC เป็นตัวเลือกที่น่าจะเป็นไปได้ (ii) ระบบ GUI จำนวนมาก ติดตาม MVC ดังนั้นคำถามคือ 'การทดสอบหน่วยเป็นเป้าหมายหลักของรูปแบบ MVC หรือไม่' แก้ไข:ฉันคิดว่าพวกเขาอาจพูดถึงความสะดวกในการทดสอบพัฒนาขับเคลื่อน / เขียนทดสอบ NUnit นี่เป็นเพราะเราสามารถ testcase แบบจำลองสำหรับ (ให้มุมมองที่สะท้อนให้เห็นถึงการเปลี่ยนแปลงสถานะของรุ่น) - โปรดแก้ไขให้ฉันถ้าฉันผิด
14 mvc 

3
ใน MVC ควรเรียก DAO จาก Controller หรือ Model
ฉันได้เห็นข้อโต้แย้งต่าง ๆ กับ DAO ที่ถูกเรียกจากคอนโทรลเลอร์คลาสโดยตรงและ DAO จากคลาส Model สิ่งประดิษฐ์ฉันรู้สึกว่าถ้าเราติดตาม MVC pattern ตัวควบคุมไม่ควรควบคู่กับ DAO แต่เป็น Model class ควรเรียกใช้ DAO จากภายในและผู้ควบคุมควรเรียกใช้คลาสโมเดลเพราะเราสามารถแยกคลาสโมเดลออกจากเว็บแอปพลิเคชันและแสดงฟังก์ชันการทำงานสำหรับวิธีต่างๆเช่นบริการ REST เพื่อใช้คลาสโมเดลของเรา หากเราเขียนการร้องขอ DAO ในคอนโทรลเลอร์จะไม่สามารถใช้บริการ REST เพื่อนำฟังก์ชันการทำงานกลับมาใช้ใหม่ได้ใช่ไหม ฉันได้สรุปแนวทางทั้งสองด้านล่าง วิธีการ # 1 public class CustomerController extends HttpServlet { proctected void doPost(....) { Customer customer = new Customer("xxxxx","23",1); new CustomerDAO().save(customer); } } วิธีการ …

3
Model-View-Controller: ผู้ใช้โต้ตอบกับวิวหรือกับคอนโทรลเลอร์หรือไม่ [ปิด]
ปิด คำถามนี้ต้องการรายละเอียดหรือความคมชัด ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ เพิ่มรายละเอียดและชี้แจงปัญหาโดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา ฉันเพิ่งเรียนรู้เกี่ยวกับรูปแบบการออกแบบ MVC ฉันเรียนรู้จากหนังสือรูปแบบการออกแบบหัวแรก ตามหนังสือเล่มนี้ (ถ้าฉันเข้าใจถูกต้อง): โมเดลเป็นแอปพลิเคชันและข้อมูลส่วนใหญ่ มุมมองนั้นเป็น GUI ที่แสดงแบบจำลองแก่ผู้ใช้ ผู้ควบคุมมีหน้าที่รับผิดชอบในการ 'ไกล่เกลี่ย' และทำหน้าที่เป็น 'คนกลาง' ระหว่างมุมมองและโมเดล มุมมองรายงานไปยังตัวควบคุมที่ผู้ใช้ทำการกระทำและตัวควบคุมแปลเป็นวิธีการเรียกใช้ในแบบจำลอง อย่างไรก็ตามมีสถานที่มากมายบนเว็บที่ขัดแย้งกับสิ่งที่ฉันเข้าใจจากหนังสือเล่มนั้น พวกเขาอ้างว่าโดยทั่วไปผู้ใช้โต้ตอบกับตัวควบคุมไม่ใช่มุมมอง อันไหนจริงหรือธรรมดากว่ากัน? ผู้ใช้โต้ตอบกับคอนโทรลเลอร์โดยตรงหรือใช้กับมุมมองโดยตรงหรือไม่ วิธีการทั้งสองเป็นที่ยอมรับหรือไม่? ข้อไหนเป็นเรื่องธรรมดา?

1
แบบจำลองโดเมนในฐานข้อมูลสามารถเป็นทางออกที่ยั่งยืนได้หรือไม่
ฉันเพิ่งเริ่มงานใหม่ในฐานะผู้พัฒนาฐานข้อมูลสำหรับ บริษัท ขนาดกลาง - เล็กที่ใช้เทคโนโลยีของ Microsoft ฉันสังเกตเห็นตั้งแต่เนิ่นๆว่าการปฏิบัติที่เบี่ยงเบนไปจากสิ่งที่ฉันได้รับการสอนที่โรงเรียนเกี่ยวกับวิธีปฏิบัติที่ดีที่สุดรูปแบบการออกแบบการทดสอบและการจัดการโครงการ สิ่งที่ดักฟังฉันมากที่สุดคือวิธีที่ผู้พัฒนาฐานข้อมูลหลักของเรา (ต่อจากนี้เรียกว่า "จอห์น") จะเก็บแบบแผนโมเดลในฐานข้อมูล! เราทำสิ่งนี้โดยมีตาราง 3 "เวทมนตร์"; หนึ่งสำหรับฐานข้อมูลสกีมาสำหรับหนึ่งตารางและอีกหนึ่งสำหรับคอลัมน์ การแทรกเร็กคอร์ดลงใน " Tables " -table สร้าง (ผ่านทริกเกอร์ฐานข้อมูล), ตารางจริง, ที่สอดคล้องกัน การแทรกแถวในตาราง " แถว " จะเป็นการอัพเดตตารางที่อ้างอิงด้วยแถวนั้น สิ่งเหล่านี้กลับถูกอ่านโดย C # -program แบบโฮมเมดของเขาเพื่อสร้างแบบจำลอง C # ซึ่งถูกใช้โดย frontend-Developers สำหรับตัวควบคุมและด้านนอก นอกเหนือจากนี้การพัฒนาส่วนใหญ่จะทำตามกรอบASP.NET MVC ฉันเห็นข้อบกพร่องสองสามข้อด้วยวิธีนี้: เราต้องการให้เขารักษา ORM และเขาไม่ค่อยมีเวลาทำ (ความมั่นคงในการทำงานดีมาก! ทริกเกอร์สำหรับตาราง "ตาราง" และ "แถว" …

4
ฉันควรรวมมาร์กอัพ HTML ในการตอบสนอง JSON ของฉันหรือไม่
ในไซต์อีคอมเมิร์ซเมื่อเพิ่มรายการลงในรถเข็นฉันต้องการแสดงหน้าต่างป๊อปอัปพร้อมตัวเลือกที่คุณสามารถเลือกได้ ลองนึกภาพคุณกำลังสั่งซื้อ iPod Shuffle และตอนนี้คุณต้องเลือกสีและข้อความที่จะแกะสลัก ฉันต้องการให้หน้าต่างเป็นแบบโมดัลดังนั้นฉันจึงใช้Lightbox ที่มีการเรียก Ajax ตอนนี้ฉันมีสองตัวเลือก: ตัวเลือก 1: ส่งข้อมูลเท่านั้นและสร้างมาร์กอัพ HTML โดยใช้ JavaScript สิ่งที่ดีเกี่ยวกับเรื่องนี้คือมันทำให้คำขออาแจ็กซ์ลดน้อยลงและไม่ผสมข้อมูลกับมาร์กอัป สิ่งที่ไม่ดีนักเกี่ยวกับเรื่องนี้คือตอนนี้ฉันต้องใช้ JavaScript เพื่อแสดงผลของฉันแทนที่จะมีเทมเพลตเอ็นจิ้นบนฝั่งเซิร์ฟเวอร์ทำ ฉันอาจจะสามารถที่จะทำความสะอาดวิธีบิตโดยใช้วิธีการแก้ปัญหา templating ฝั่งไคลเอ็นต์ ตัวเลือก 2: ส่งมาร์กอัพ HTML สิ่งที่ดีเกี่ยวกับเรื่องนี้คือฉันสามารถมีเครื่องมือสร้างเทมเพลตฝั่งเซิร์ฟเวอร์เดียวกับที่ฉันใช้สำหรับงานการเรนเดอร์ที่เหลือ (Django) ทำการเรนเดอร์ของไลท์บ็อกซ์ JavaScript ใช้เพื่อแทรกแฟรกเมนต์ HTML ลงในหน้าเท่านั้น ดังนั้นจะทำให้การเรนเดอร์ไปยังเอ็นจินการเรนเดอร์อย่างชัดเจน ทำให้รู้สึกถึงฉัน แต่ฉันรู้สึกไม่สบายใจที่จะรวบรวมข้อมูลและมาร์กอัพในการโทร Ajax ด้วยเหตุผลบางอย่าง ฉันไม่แน่ใจว่าอะไรทำให้ฉันรู้สึกไม่สบายใจ ฉันหมายความว่ามันเป็นวิธีเดียวกับที่ทุกหน้าเว็บแสดงผล - ข้อมูลและมาร์กอัป - ใช่ไหม?
13 mvc  django  templates  json 

4
อธิบาย Model View Controller
ประสบการณ์ของฉันกับการพัฒนาเว็บไซต์แบบไดนามิกนั้น จำกัด อยู่ที่ servlets Java เป็นส่วนใหญ่ ฉันใช้ Tomcat เพื่อพัฒนา Java servlets ต่างๆและฉันไม่ลังเลที่จะพูดว่าฉันมีความเชี่ยวชาญในเทคโนโลยีนี้พอ ๆ กับ HTML / CSS / Javascript ฝั่งไคลเอ็นต์สำหรับส่วนหน้า เมื่อฉันคิดว่า "เว็บไซต์ไดนามิก" ฉันคิดว่า: ผู้ใช้ร้องขอ URL ด้วยสตริงข้อความค้นหาเซิร์ฟเวอร์ได้รับข้อความค้นหาแล้วดำเนินการกับ HTML แบบไดนามิกเพื่อตอบแบบสอบถาม ซึ่งมักเกี่ยวข้องกับการสื่อสารกับฐานข้อมูลเพื่อดึงข้อมูลที่ร้องขอเพื่อแสดงผล นี้นั้นเป็นความคิดที่อยู่เบื้องหลังdoGetวิธีการของ HttpServletJava แต่ทุกวันนี้ฉันได้ยินเกี่ยวกับกรอบใหม่ ๆ มากขึ้นเช่น Django และ Ruby on Rails ซึ่งทั้งหมดนี้ใช้ประโยชน์จากสถาปัตยกรรม "Model View Controller" ฉันอ่านบทความต่าง ๆ ที่อธิบาย MVC แล้ว แต่ฉันมีปัญหาในการเข้าใจถึงประโยชน์ ฉันเข้าใจว่าแนวคิดทั่วไปคือการแยกตรรกะทางธุรกิจออกจากตรรกะ …

5
ผู้ควบคุมควรรู้เกี่ยวกับมุมมองและรุ่นหรือไม่ หรือในทางกลับกัน?
ฉันกำลังพยายามทำความเข้าใจว่าฉันควรทำสิ่งนี้หรือไม่ item = Model() screen = View() brain = Controller(item, screen) หรือนี่ .. brain = Controller() item = Model(brain) screen = View(brain) หรือนี่ .. class Controller(): def __init__(self): item = Model(self) screen = View(self) หรืออย่างอื่นอย่างสิ้นเชิง?
13 mvc 

4
ใช้เลเยอร์บริการด้วย MVC
หากคอนโทรลเลอร์มีไขมันมากเกินไปและการสร้างอินสแตนซ์ของโมเดลเริ่มเพิ่มขึ้นสามารถใช้เลเยอร์บริการได้ ถ้าฉันแค่ห่อตรรกะภายในคลาสบริการฉันจะได้รับบริการมากมายด้วยวิธีการหนึ่ง / สอง รู้สึกเหมือนมีกลิ่นรหัส มีแนวทางปฏิบัติที่ดีที่สุดเกี่ยวกับเรื่องนี้หรือไม่? บริการยกตัวอย่างแบบจำลองได้หรือไม่? หากบริการทำให้โมเดลเป็นตัวอย่างแสดงว่าไม่สามารถทดสอบบริการได้ พวกเขาสามารถถูกครอบคลุมโดยการทดสอบการรวม?
13 mvc  services 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.