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

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

4
สลับกับความแตกต่างเมื่อจัดการกับรูปแบบและมุมมอง
ฉันไม่สามารถหาทางออกที่ดีกว่าสำหรับปัญหาของฉัน ฉันมีตัวควบคุมมุมมองที่นำเสนอรายการองค์ประกอบ องค์ประกอบเหล่านั้นเป็นแบบจำลองที่สามารถเป็นตัวอย่างของ B, C, D, ฯลฯ และสืบทอดจาก A. ดังนั้นในตัวควบคุมมุมมองแต่ละรายการควรไปที่หน้าจอที่แตกต่างกันของแอปพลิเคชันและส่งผ่านข้อมูลบางส่วนเมื่อผู้ใช้เลือกหนึ่งในนั้น . ทางเลือกสองทางที่อยู่ในใจของฉันคือ (กรุณาเพิกเฉยไวยากรณ์ไม่ใช่ภาษาที่เฉพาะเจาะจง) 1) สวิตช์ (ฉันรู้ว่า sucks) //inside the view controller void onClickItem(int index) { A a = items.get(index); switch(a.type) { case b: B b = (B)a; go to screen X; x.v1 = b.v1; // fill X with b data …

1
Model-View-Controller (MVC) คอมโพเนนต์ใดที่จัดการการดำเนินการบันทึก / โหลด?
ในแอปพลิเคชั่น MVC แบบดั้งเดิมส่วนประกอบใด (รุ่นมุมมองหรือคอนโทรลเลอร์) ที่รับผิดชอบในการอ่าน / เขียนแบบจำลองไปยัง / จากดิสก์
12 mvc  io 

3
การจัดการข้อผิดพลาดใน PHP เมื่อใช้ MVC
ฉันใช้ Codeigniter บ่อยครั้งมาก แต่สิ่งหนึ่งที่ทำให้ฉันกังวลคือการจัดการข้อผิดพลาดและแสดงให้ผู้ใช้เห็น ฉันไม่เคยจัดการกับข้อผิดพลาดได้โดยที่ไม่เคยยุ่ง ความกังวลหลักของฉันคือเมื่อคืนข้อผิดพลาดให้กับผู้ใช้ เป็นการดีที่จะใช้ข้อยกเว้นและโยน / จับข้อยกเว้นแทนที่จะส่งกลับ 0 หรือ 1 จากฟังก์ชันแล้วใช้ if / else เพื่อจัดการข้อผิดพลาด ดังนั้นทำให้ง่ายต่อการแจ้งผู้ใช้เกี่ยวกับปัญหา ฉันมักจะหายไปจากข้อยกเว้น ครูสอนพิเศษ Java ของฉันที่มหาวิทยาลัยเมื่อหลายปีก่อนบอกฉันว่า "ข้อยกเว้นไม่ควรใช้ในรหัสการผลิตเป็นมากกว่าสำหรับการแก้ไขข้อบกพร่อง" ฉันรู้สึกว่าเขาโกหก แต่ตัวอย่างฉันมีรหัสที่เพิ่มผู้ใช้ไปยังฐานข้อมูล ในระหว่างกระบวนการมากกว่า 1 สิ่งอาจผิดพลาดได้เช่นปัญหาฐานข้อมูลรายการซ้ำปัญหาเซิร์ฟเวอร์ ฯลฯ เมื่อเกิดปัญหาขึ้นระหว่างการลงทะเบียนผู้ใช้จำเป็นต้องรู้ เป็นวิธีที่ดีที่สุดในการจัดการข้อผิดพลาดใน PHP โปรดทราบว่าฉันใช้กรอบ MVC

1
รูปแบบสำหรับเว็บแอ็พพลิเคชัน ajax-heavy
จนถึงตอนนี้ฉันเป็นแฟนตัวยงของรูปแบบ MVC สำหรับการพัฒนาเว็บแอปพลิเคชัน สำหรับเว็บฉันได้พัฒนาส่วนใหญ่ใน PHP (ด้วยกรอบ Kohana และ CodeIgniter) และ Ruby (RoR) เมื่อแอพพลิเคชั่นของฉันหนักกว่าด้านอาแจ็กซ์ (แอพพลิเคชั่นหน้าเดียว ฯลฯ ) ฉันสังเกตเห็นว่าฉันอดไม่ได้ที่จะทรยศต่อแนวคิดพื้นฐานที่สำคัญของ MVC: Javascript ทำงานส่วนใหญ่ การเรียกตัวควบคุมเพื่อขอดูหรือมากกว่ารหัส js / json ดูเหมือนผิด หลังจากพยายามรักษางานการเราต์ทั้งหมดไว้ในคอนโทรลเลอร์ตอนนี้ฉันได้แยกมันระหว่างพวกเขาและ Javascript (นั่นคือจาก PoV ของเฟรมเวิร์กเป็นส่วนหนึ่งของมุมมอง) เมื่อขอ json การโค่นล้ม MVC ดูชัดเจนยิ่งขึ้น: รหัส js ที่ทำการร้องขอคือคอนโทรลเลอร์; คอนโทรลเลอร์ของเฟรมเวิร์กทำหน้าที่เป็นพร็อกซีสำหรับข้อมูลของโมเดลซึ่งเป็นสิ่งที่ฉันต้องการ ดังนั้นฉันควรตรวจสอบอะไร ฉันกำลังคิดเกี่ยวกับแอปพลิเคชัน pure-javascript เช่น backbone.js และฐานข้อมูล json-spitting (couchDB) ที่ใช้เอกสารเป็นแบ็กเอนด์ แต่ฉันรักฐานข้อมูลเชิงสัมพันธ์ของฉัน ตัวเลือกอื่นจะเป็นดังต่อไปนี้: …

4
อะไรคือข้อเสียของการใช้ / writting a. Net Custom Membership Provider
เมื่อเร็ว ๆ นี้ฉันโพสต์คำถามต่อไปนี้ใน SO: /programming/7197337/using-asp-net-membership-provider-with-an-existing-user-database ดังที่คุณอาจสังเกตเห็นว่าฉันสิ้นสุดการตอบคำถามของฉันเองโดยระบุว่าดูเหมือนว่าการเขียน / ใช้ "ผู้ให้บริการสมาชิกที่กำหนดเอง" เป็นหนทางที่จะไป ตามตัวอักษรไม่กี่นาทีต่อมาฉันเจอคำถามนี้: /programming/7222306/simple-login-attempt-counter-using-mvc-3-and-ajax/7222407#7222407 ฉันพยายามที่จะตอบและรับความคิดเห็นกลับว่าผู้ให้บริการสมาชิก. Net "แย่มากในหลาย ๆ ระดับ" ฉันจะยอมรับนี่เป็นครั้งแรกที่ฉันใช้ผู้ให้บริการสมาชิก แต่แน่ใจว่ามันเนียนสำหรับฉัน ฉันไม่ได้เห็นอะไรเลยที่สนับสนุนการอ้างสิทธิ์ "แย่มาก" ดังนั้นก่อนที่ฉันจะนำสิ่งที่ "น่ากลัว" มาใช้ฉันหวังว่าจะได้รับคำติชมจากชุมชน

4
บริการ MVC และ RESTful API
MVC ค่อนข้างตรงไปตรงมา มีรูปแบบตัวควบคุมและมุมมอง เมื่อเราสร้างเว็บไซต์มันทั้งหมดมารวมกันเป็น ' ไคลเอนต์ส่งคำขอคำหลัก REST ไปยังเซิร์ฟเวอร์ -> เซิร์ฟเวอร์ตรงกับ URL ที่ร้องขอไปยังการดำเนินการควบคุม -> ซึ่งจากนั้นเรียกรูปแบบ (s) สำหรับการรวบรวมข้อมูล / การประมวลผลได้รับผล -> และส่งคืนผลลัพธ์กลับไปยังลูกค้าเป็นหน้า HTML (ดู) ' ถ้าเรากำลังพูดถึง RESTful API เว็บเซอร์วิสอย่างแท้จริง จากนั้นโฟลว์ที่มีลักษณะคล้าย ' ไคลเอนต์จะส่งคำขอคำหลัก REST ไปยังเซิร์ฟเวอร์ -> เซิร์ฟเวอร์จับคู่ URL ที่ร้องขอไปยังแอ็คชั่นคอนโทรลเลอร์ -> ซึ่งจะเรียกโมเดลเพื่อรวบรวม / ประมวลผลข้อมูลรับผลลัพธ์ -> และส่งกลับ ผลลัพธ์กลับไปยังไคลเอ็นต์ใน JSON ' เหมือนเมื่อก่อน แต่ไม่มี 'มุมมอง' ... หรือมากกว่านั้น …

1
ฉันจะใช้รูปแบบ MVC กับแอปพลิเคชัน C # WinForms ได้อย่างไร
ฉันเป็นนักพัฒนา C ++ ที่ใช้รูปแบบ MVC ในการออกแบบ GUI นับตั้งแต่นั้นมา เมื่อเร็ว ๆ นี้ฉันต้องการกลับสู่ C # และฉันตั้งค่าแอปพลิเคชัน Windows Forms แต่ตอนนี้ฉันหลงทางเล็กน้อยเกี่ยวกับวิธีการผลักดันมันไปยังโครงสร้างที่สอดคล้องกับ MVC สิ่งที่ฉันกำลังพยายามทำคือ "ประกาศ" คลาสที่ฉันได้รับสำหรับ WinForms เป็นมุมมองและเพิ่มคลาสสำหรับโมเดลและตัวควบคุมในพื้นหลัง อย่างไรก็ตามฉันไม่แน่ใจว่าจะโต้ตอบกับเหตุการณ์ได้อย่างไรเช่นคลิกปุ่ม โดยปกติฉันจะเปลี่ยนเส้นทางเหตุการณ์เหล่านี้ไปยังตัวควบคุมและดำเนินการกับมุมมองเมื่อฉันทำเสร็จแล้ว สิ่งนี้ทำให้รู้สึกไม่พอใจในกลุ่มดาวนี้ ตัวอย่างเช่นถ้าฉันต้องการใช้ปุ่ม "ออกจาก" ฉันจะต้องเปลี่ยนเส้นทางเหตุการณ์จากมุมมองไปยังตัวควบคุมรวมทั้งใช้วิธีสาธารณะเพิ่มเติมในมุมมองของฉันซึ่งสามารถเรียกได้จากตัวควบคุมในขณะที่ฉัน สามารถเรียก Close () จากมุมมองในตัวอย่างแรกได้ คุณมีคำแนะนำใด ๆ สำหรับฉัน ความเข้าใจของฉันเกี่ยวกับ Windows Forms ใน C # นั้นยังไม่ดีพอที่จะลองใช้งาน MVC หรือไม่? ฉันให้แบบฟอร์มในชั้นเรียนมีบทบาทที่ไม่ถูกต้องหรือไม่? MVC เป็นเพียงสถาปัตยกรรมที่ไม่เหมาะสมสำหรับกรณีการใช้งานนี้หรือไม่?
11 c#  mvc  winforms 

2
ใน ASP.NET MVC โมเดลมุมมองควรมี ID หรือไม่?
เมื่อพัฒนาแอปพลิเคชัน ASP.NET MVC ที่อนุญาตให้อัปเดตโมเดลคุณต้องมีวิธีรู้วิธีนำโมเดลมุมมองที่อัปเดตและจับคู่กลับไปยังโมเดลที่ได้รับการอัปเดตในขณะนี้ ดูเหมือนจะมีวิธีการที่แตกต่างกันสองสามอย่างในการทำเช่นนี้และฉันสงสัยว่าสิ่งเหล่านี้ไม่เหมาะสมกับ MVC (เหมือนกับการมีตัวควบคุมที่เก็บข้อมูลของคุณซึ่งควรเป็นแบบจำลองไม่ใช่แบบ MVC ที่เหมาะสม) ทุกรุ่นที่ดูมีรหัส: ข้อดี ตรวจสอบให้แน่ใจเสมอว่าคุณสามารถจับคู่กับโมเดลของคุณได้ จุดด้อย คุณต้องระมัดระวังอย่างแท้จริงว่าไม่มีการเปลี่ยนแปลง ID ใด ๆ อีกคุณสามารถให้ผู้ใช้อัปเดตแถวที่ไม่ควรเข้าถึงได้ เฉพาะรุ่นมุมมองขั้นต่ำสุดเท่านั้นที่มี ID: ข้อดี จำเป็นต้องตรวจสอบน้อยกว่าเพื่อหลีกเลี่ยงผู้ใช้ที่อัปเดตข้อมูลที่ไม่ควรเข้าถึง จุดด้อย ยิ่งยากต่อการติดตามว่ามุมมองแบบใดตรงกับโมเดลใด คุณยังคงต้องตรวจสอบรุ่นที่มี ID บางรุ่นเพื่อให้แน่ใจว่าผู้ใช้ไม่ได้อัปเดตข้อมูลที่ไม่ควรเข้าถึง ไม่มีรุ่นที่มี ID: ข้อดี ไม่จำเป็นต้องตรวจสอบ ID เพื่อรับการปรับปรุง จุดด้อย คุณต้องละทิ้งการไร้สัญชาติ ดังนั้นฉันมีสองคำถาม ก่อนอื่นมีตัวเลือกที่ถูกต้อง / ไม่ถูกต้องหรือไม่? (ถ้าไม่นั่นหมายความว่าการเลือกเป็นเรื่องของความเห็นและความเห็นของคำถามที่สองเป็นไปตามและควรละเว้น) ประการที่สองหากมีตัวเลือกที่ถูกต้อง / ไม่ถูกต้องมันคืออะไร? เพื่อชี้แจงความคิดเห็นที่ฉันพูดคุยเมื่อคุณมีรูปแบบการดูที่เลียนแบบวัตถุฐานข้อมูลของคุณ คิดว่านี่: public class InvoiceViewModel //Does not …
11 mvc  asp.net-mvc 

3
ค่าคงที่ส่วนกลางทั่วทั้งไซต์ MVC
My MVC (.NET) มีค่าคงที่ตลอดทั้งไซต์เช่นหมายเลขโทรศัพท์ที่อยู่จริงที่อยู่อีเมล ฯลฯ ฉันต้องการเก็บค่านี้ไว้หนึ่งครั้งดังนั้นการปรับปรุงในอนาคตจะง่ายขึ้นเมื่อพวกเขาเปลี่ยนรายละเอียด เพื่อให้คำถามของฉันง่ายขึ้นฉันเน้นเฉพาะหมายเลขโทรศัพท์ คำถามของฉันอยู่ที่ไหนและวิธีเก็บหมายเลขนี้และปัญหาที่ฉันเผชิญกับการตัดสินใจของฉัน ในขณะนี้ฉันเลือกที่จะเก็บไว้ในไฟล์ Global.asax เป็นวิธีการคงที่เช่น public class MvcApplication : System.Web.HttpApplication { protected void Application_Start() { //logic } public static string GetPhoneNumber() { return "012345 678 910"; } } มันใช้งานได้ดีมากในคอนโทรลเลอร์ของฉันฉันสามารถเพิ่มการอ้างอิงไปยังวิธีนี้และกำหนดให้กับ ViewBag public ActionResult Contact() { ViewBag.Phone = MvcApplication.GetPhoneNumber(); } ตามเว็บไซต์จำนวนมากหมายเลขโทรศัพท์จะปรากฏที่ด้านบนของทุกหน้าและเช่นนี้การวางไว้ในนั้น_Layout.cshtmlเป็นตรรกะ ปัญหาที่ฉันมีคือไม่มีตัวควบคุม (ไม่ใช่ที่ฉันรู้) สำหรับ _Layout.cshtml และวิธีเดียวที่ฉันสามารถส่งค่าคือให้ตั้งค่า …
11 mvc 

2
การมอบหมายคืออะไรและทำไมจึงมีความสำคัญในการเขียนโปรแกรม iOS
ในขณะที่ฉันสอนตัวเองการเขียนโปรแกรม iOS และแนวคิดหนึ่งที่ฉันคิดว่ายากมากที่จะสรุปคือการมอบหมาย มันคืออะไร? ทำไมและมีการใช้อย่างไร? ข้อดีคืออะไร การเขียนทางเทคนิคจากหนังสือที่ฉันอ่านทำให้ยากที่จะเข้าใจ

2
ผู้ควบคุมควรส่งผ่านข้อมูลไปยังมุมมองในรูปแบบ MVC หรือไม่
ฉันทำงานกับ ASP.NET MVC (และการใช้งาน MVC บนเว็บอื่น ๆ ) ค่อนข้างบ่อย แต่นี่เป็นสิ่งที่ฉันไม่เคยแน่ใจ: คอนโทรลเลอร์และดูการสื่อสารควรหรือไม่ แน่นอนว่าผู้ควบคุมควรเลือกมุมมองที่จะใช้ แต่สิ่งที่ฉันหมายความว่าผู้ควบคุมควรส่งผ่านข้อมูลไปยังมุมมอง? ในความคิดของฉันหากมุมมองคาดหวังว่าข้อมูลจากคอนโทรลเลอร์จะถูกเชื่อมโยงเข้าด้วยกันเป็นคู่ (คอนโทรลเลอร์, มุมมอง) อย่างมีประสิทธิภาพ แต่ฉันมักจะมีมุมมองการสื่อสารกับรูปแบบของตัวเองและเป็นอิสระจากตัวควบคุมใด ๆ ฉันมีแนวทางที่ถูกต้องหรือเป็นกรณีที่ไม่มีคำตอบที่ถูกต้องหรือไม่ คำตอบเปลี่ยนไปเมื่อทำงานในเว็บกับสภาพแวดล้อมอื่น ๆ หรือไม่? คำตอบเปลี่ยนไปหรือไม่เมื่อคุณมีแนวคิดเกี่ยวกับมุมมองที่พิมพ์ออกมาอย่างรุนแรง (เช่นใน ASP.NET MVC) หรือไม่?
11 architecture  mvc 

5
ควรใช้ MVC เมื่อใด
ฉันกำลังสร้างเว็บไซต์ด้วย PHP และ MySQL แบ็กเอนด์ แต่ตอนนี้ฉันไม่ได้ใช้กรอบใด ๆ ฉันควรใช้ Model View Controller หรือไม่

4
ทำไมคุณถึงใช้ MVC บนเว็บฟอร์ม
เมื่อเร็ว ๆ นี้สถาปนิกอธิบาย บริษัท ของเราว่าเสนอโซลูชัน Rolls-Royce (MVC) เมื่อสิ่งที่เขาต้องการคือโตโยต้า (เว็บฟอร์ม) ฉันอยากรู้ว่าคุณคิดอย่างไรเกี่ยวกับเว็บฟอร์มกับ MVC เป็นตัวเลือกทางสถาปัตยกรรม

2
แอปพลิเคชันบริการเรียกฟังก์ชันฐานข้อมูลชั้น สถาปัตยกรรมไม่ดี?
สถานการณ์: สแต็ค: Java, Spring, Hibernate รุ่น: แอปพลิเคชันไคลเอนต์ - เซิร์ฟเวอร์ รูปแบบ: Model-View-Controller (MVC) คลาส Service Layer มีพฤติกรรมสามอย่าง: บริการบางอย่างมีกฎเกณฑ์ทางธุรกิจภายในวิธีการและมอบสิทธิ์ให้กับแอปพลิเคชัน ชอบ: EntityManager.save (นิติบุคคล); บริการบางอย่างเรียกฟังก์ชันฐานข้อมูล (ผ่านพารามิเตอร์) ไลค์: CallableStatement cls = con.prepareCall ("{เรียก databaseFunction (args)}"); บริการบางอย่างมีวิธีการที่มีทั้งพฤติกรรม คำถามของฉัน: มีปัญหาในการรับสายบริการโดยตรงหรือไม่ - ฟังก์ชั่นฐานข้อมูล? นี่ถือว่าเป็นการกระทำที่ไม่ดีหรือไม่? แบบจำลองสถาปัตยกรรมจะใช้กับโครงการเช่นนี้ได้อย่างไร มีปัญหาใดบ้างหรือไม่ที่มีการผสมผสานพฤติกรรมในบริการเดียวกัน เช่นการทำธุรกรรมและความสอดคล้อง? ในกรณีของการบำรุงรักษาการห่อหุ้มนี้ทำให้ผู้พัฒนาไม่ชัดเจนว่าเขาควรเปลี่ยนฟังก์ชั่นในฐานข้อมูลหรือไม่? จะหลีกเลี่ยงสิ่งนี้ได้อย่างไร สถานการณ์นี้เกิดขึ้นในแอปพลิเคชันอื่น ๆ ทั่วโลกหรือเป็นเพียงข้อผิดพลาดทางสถาปัตยกรรมหรือไม่?

2
. NET MVC สถาปัตยกรรมโครงการ / ชั้น
เมื่อวางแผนสถาปัตยกรรมสำหรับเว็บแอ็พพลิเคชัน MVC ขนาดกลางขนาดใหญ่คุณจะใช้เลเยอร์ให้เป็นแบบแยกย่อยได้มากที่สุดและง่ายต่อการทดสอบอย่างไร (โดยทั่วไปปฏิบัติตามแนวทางปฏิบัติที่ดีที่สุด) สมมติว่าฉันใช้รหัสก่อนเพื่อเข้าถึงข้อมูลของฉัน ฉันต่อสู้กับสิ่งที่จะกำหนด "ตรรกะทางธุรกิจ" เป็นและวิธีที่มันหมายถึงการโต้ตอบกับชั้นข้อมูล ยกตัวอย่างเช่นแอปพลิเคชันการขายยานพาหนะตรรกะทางธุรกิจจะเป็นคลาสที่ทำงานเช่นการคำนวณวงภาษีสำหรับยานพาหนะที่กำหนดเปรียบเทียบสถิติไมล์ต่อแกลลอน ฯลฯ หรือไม่ สำหรับองค์กรธุรกิจ (เช่นรถยนต์รถตู้รถจักรยานยนต์) ฉันจะใส่สิ่งเหล่านี้ในชั้นข้อมูลพร้อมกับDataContextชั้นเรียนของฉัน นอกจากนี้สิ่งที่จะเป็นตรรกะของแอปพลิเคชันซึ่งตรงข้ามกับธุรกิจ - ฉันคาดเดาสิ่งต่าง ๆ เช่นการตรวจสอบการป้อนข้อมูลเซสชัน / ผู้ใช้? ตัวอย่างเช่นตัวควบคุมรถอาจส่งคืนผลลัพธ์การกระทำ / มุมมองที่แสดงรายการรถยนต์สิบอันดับแรกที่กรองตามประเภทและ mpg ที่ดีที่สุด ดังนั้นสมมติว่าฉันมีICarRepository'carRepo' ฉีดเข้าไปในคอนโทรลเลอร์ของฉัน (โดยใช้รูปแบบพื้นที่เก็บข้อมูล / DI) ฉันกรองรถยนต์ของฉันจากพารามิเตอร์วิธีการกระทำเช่นvar cars = carRepo.getCarsByType("hatchback"); ดังนั้นฉันจึงเก็บความรู้การเข้าถึงข้อมูลออกจากตัวควบคุมของฉันโดยใช้ที่เก็บตอนนี้เพื่อให้ตรรกะทางธุรกิจออกจากตัวควบคุมโดยใช้รูปแบบโดเมน - var result = new MpgCalculator (cars); - สมมติว่าฉันต้องการคลาสเครื่องคิดเลขเพราะมันต้องใช้ตรรกะเพิ่มเติมเพื่อคำนวณประสิทธิภาพการใช้เชื้อเพลิงที่ดีที่สุดมากกว่าแค่การโหลด / กรองเอนทิตีจาก DB ดังนั้นตอนนี้ฉันมีชุดข้อมูลสำหรับมุมมองของฉันในการเรนเดอร์ที่ใช้ที่เก็บเพื่อดึงข้อมูลจากเลเยอร์การเข้าถึงข้อมูลและวัตถุเฉพาะโดเมนเพื่อประมวลผลและดำเนินงานที่เกี่ยวข้องกับธุรกิจในข้อมูลนั้น ฉันทำผิดพลาดที่นี่ …

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