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

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

3
รุ่นต่อตารางฐานข้อมูล?
ฉันกำลังใช้ codeigniter และพบว่าตัวเองอยู่ในสถานการณ์ที่คล้ายคลึงกันซึ่งฉันได้ใช้วิธีการจำลองซ้ำ ฉันกำลังสร้างแบบจำลองต่อตัวควบคุม แต่ฉันจะสร้างรุ่นต่อตารางฐานข้อมูลถือว่าเป็นแนวปฏิบัติที่ดี? วิธีนั้นจะไม่ถูกเขียนสองครั้ง แทนที่จะเป็นรุ่นต่อตัวควบคุมหรือรุ่นเล็ก ๆ หลายตัวที่ใช้ร่วมกัน ตัวอย่างถ้าฉันมี model model get_user ($ user_id) ฉันสามารถเขียนมันบน users_models.php ... ข้อเสียอย่างหนึ่งที่ฉันเห็นในที่นี้คือฉันอาจต้องโทรหลายรุ่นแทนที่จะเป็นแค่ชื่อผู้ใช้งาน สามารถโหลดหลายรุ่นที่ไม่สามารถใช้วิธีการหลายวิธีจากคอนโทรลเลอร์มีผลต่อประสิทธิภาพและความเร็วได้หรือไม่? อะไรจะเป็นวิธีที่ดีที่สุดในการจัดการกับปัญหานี้? หมายเหตุ: มีคำถามที่คล้ายกัน แต่ไม่ครอบคลุมถึงโมเดลต่อตารางฐานข้อมูล

3
MVVM หรือ MVC ต้องการใช้คลาสชุดเดียวกันสำหรับ WPF และ ASP.NET
ฉันเป็นมือใหม่ในแง่ของรูปแบบการออกแบบ ฉันเพิ่งเริ่มเรียนรู้ MVC เมื่อฉันได้ยินเสียงกระหึ่มใหม่ MVVM ฉันต้องการเรียนรู้ข้อมูลเชิงลึกของทั้งสองสิ่งนี้โดยการออกแบบคลังโฆษณาเก่าและแอปพลิเคชันใบแจ้งหนี้ที่ฉันพัฒนาขึ้นสำหรับลูกค้า ฉันต้องการเขียนทั้งแอปพลิเคชัน WPF ที่ใช้ Windows และเวอร์ชันที่ใช้เว็บ ฉันต้องการใช้คลาสชุดเดียวกันถ้าเป็นไปได้ถ้าไม่ใช่อย่างน้อยก็มีการดัดแปลงเล็กน้อย ฉันอ่านบทความสองสามข้อ แต่ฉันไม่ได้ติดตามสถาปัตยกรรมและแนวคิดระดับสูงของ. NET 3.5 และ 4 ที่กล่าวถึง ฉันต้องการที่จะย้ายทีละขั้นตอนโดยการออกแบบเฉพาะสิ่งที่ฉันต้องการในโครงการในชีวิตจริงของฉัน มีการอ้างอิง MVVM ทีละขั้นตอนง่าย ๆ หรือไม่? MVVM เป็น super-set หรือ sub-set ของ MVC หรือไม่? รูปแบบใดที่ทันสมัยและฉันควรเลือกรูปแบบใดสำหรับแอพพลิเคชั่นของ Windows & Web? มีคลาสบางคลาสที่ฉันไม่จำเป็นต้องเชื่อมต่อกับมุมมอง ในกรณีนี้การออกแบบคลาสเดียวกันในแบบ MVVM จะพิสูจน์ว่าเป็นแรงงานเสริม
11 mvc  wpf  asp.net-mvc-3  mvvm 

5
มุมมองควรไม่ทำการตรวจสอบ
ฉันกำลังอ่าน " ในรูปแบบ MVC ควรจัดการกับการตรวจสอบหรือไม่ " เพราะฉันอยากรู้ว่าตรรกะการตรวจสอบควรอยู่ที่ใดในเว็บไซต์ MVC หนึ่งบรรทัดในคำตอบยอดนิยมจะเป็นดังนี้: "ตัวควบคุมควรจัดการกับการตรวจสอบความถูกต้องโมเดลควรจัดการกับการตรวจสอบความถูกต้อง" ฉันชอบที่ แต่มันทำให้ฉันสงสัยว่าทำไมเราจะไม่ตรวจสอบข้อมูลในมุมมองด้วยเหตุผลหลายประการ: มุมมองมักมีการสนับสนุนการตรวจสอบที่มีประสิทธิภาพ (ไลบรารี JS, แท็ก HTML5) มุมมองสามารถตรวจสอบภายในเครื่องลด IO เครือข่าย UI ได้รับการออกแบบโดยคำนึงถึงประเภทข้อมูลเป็นหลัก (ปฏิทินสำหรับวันที่, ตัวหมุนสำหรับตัวเลข) ทำให้เป็นขั้นตอนเดียวจากการตรวจสอบความถูกต้อง การยืนยันในที่มากกว่าหนึ่งแห่งนั้นตรงกันข้ามกับแนวคิดของ MVC ในการแยกความรับผิดชอบดังนั้น "การทำทั้งสองอย่าง" ดูเหมือนไม่เหมาะสม การตรวจสอบความถูกต้องของข้อมูลในคอนโทรลเลอร์เป็นวิธีการที่โดดเด่นอย่างแท้จริงหรือไม่?
10 architecture  mvc 

6
วิธีการตรวจสอบสิ่งที่ควรได้รับตัวควบคุมที่เกี่ยวข้องของตัวเอง?
ฉันใช้รูปแบบ MVC ในเว็บแอปพลิเคชันของฉันซึ่งสร้างด้วย PHP ฉันมักจะดิ้นรนเพื่อตรวจสอบว่าฉันต้องการตัวควบคุมเฉพาะใหม่สำหรับชุดของการกระทำหรือถ้าฉันควรวางไว้ในตัวควบคุมที่มีอยู่แล้ว มีกฎง่ายๆที่ควรปฏิบัติเมื่อสร้างคอนโทรลเลอร์หรือไม่? ตัวอย่างเช่นฉันสามารถมี: AuthenticationController ด้วยการกระทำ: index() เพื่อแสดงแบบฟอร์มเข้าสู่ระบบ submit() เพื่อจัดการกับการส่งแบบฟอร์ม logout()อธิบายตนเอง หรือ LoginController ด้วยการกระทำ: index() เพื่อแสดงแบบฟอร์มเข้าสู่ระบบ submit() เพื่อจัดการกับการส่งแบบฟอร์ม LogoutController ด้วยการกระทำ: index() เพื่อจัดการการออกจากระบบ หรือ AccountController ด้วยการกระทำ: loginGet() เพื่อแสดงแบบฟอร์มเข้าสู่ระบบ loginPost() เพื่อจัดการกับการส่งแบบฟอร์มเข้าสู่ระบบ logoutGet() เพื่อจัดการการออกจากระบบ registerGet() เพื่อแสดงแบบฟอร์มลงทะเบียน registerPost() เพื่อจัดการกับการส่งแบบฟอร์ม และการกระทำอื่น ๆ ที่เกี่ยวข้องกับบัญชี
10 mvc 

5
ใน MVC สามารถเรียกค้นข้อมูลพื้นฐานจาก Model ได้หรือไม่ในมุมมอง?
ด้วยแนวคิดของ'ตัวควบคุมผอมแบบจำลองไขมัน'และการยอมรับทั่วไปที่ Views สามารถเรียกใช้โมเดลโดยตรงเมื่อต้องการข้อมูลเพื่อการส่งออกเราควรพิจารณาการจัดการส่วน 'รับและแสดง' ของคำขอภายใน Views ไม่ใช่ตัวควบคุม ตัวอย่างเช่น (พยายามเก็บรหัสที่ค่อนข้างทั่วไป): ตัวควบคุม <?php class Invoice extends Base_Controller { /** * Get all the invoices for this month */ public function current_month() { // as there's no user input let's keep the controller very skinny, // DON'T get data from the Model here, …

7
การใช้เงื่อนไขด้านความปลอดภัยในมุมมองเป็นการละเมิด MVC หรือไม่
บ่อยครั้งที่สิ่งที่ปรากฏต่อผู้ใช้ (เช่นบนหน้าเว็บ) จะขึ้นอยู่กับการตรวจสอบความปลอดภัยเป็นส่วนหนึ่ง ฉันมักจะพิจารณาความปลอดภัยระดับผู้ใช้ / ACL เป็นส่วนหนึ่งของตรรกะทางธุรกิจของระบบ หากมุมมองตรวจสอบความปลอดภัยอย่างชัดเจนเพื่อแสดงองค์ประกอบ UI แบบมีเงื่อนไขจะเป็นการละเมิด MVC โดยมีตรรกะทางธุรกิจหรือไม่

3
การใช้ MVC ในแอป Java
ฉันต้องเขียนแอปพลิเคชัน GUI ข้ามแพลตฟอร์มเพื่อประมวลผล (ในหลายเธรด) และเห็นภาพข้อมูลจำนวนมากพอสมควร แอปพลิเคชั่นควรจะค่อนข้างเร็วและดูดี อินเทอร์เฟซของแอพจะประกอบด้วยวิดเจ็ตตารางวิดเจ็ตต้นไม้และวิดเจ็ตรูปวาดเอง ผู้ใช้จะสามารถแก้ไขข้อมูลจากหนึ่งในวิดเจ็ตเหล่านี้และการเปลี่ยนแปลงควรจะปรากฏในวิดเจ็ตอื่นทันที โดยธรรมชาติฉันกำลังวางแผนที่จะใช้ MVC อย่างไรก็ตามปกติแล้วฉันจะเขียนโปรแกรม GUI ทั้งหมดใน C ++ / Qt และมีการเปิดรับจาวา จำกัด ดังนั้นฉันจะขอขอบคุณคำแนะนำใด ๆ เกี่ยวกับวิธีการจัดระเบียบแอปใน Java โดยเฉพาะฉันควรใช้ Swing หรือ JavaFX หรือไม่ วิดเจ็ตใดที่คุณจะเลือกสำหรับงาน คุณช่วยแนะนำหนังสือ / บทช่วยสอนออนไลน์ที่ครอบคลุมประเด็นเหล่านี้ของแพลตฟอร์ม Java ได้หรือไม่? ฉันจะขอขอบคุณสำหรับข้อเสนอแนะใด ๆ ขอบคุณ! (คำถามนี้ถูกโพสต์ครั้งแรกใน Stack Overflowแต่เว็บไซต์นี้ได้รับการแนะนำว่าเป็นสถานที่ที่เหมาะสมกว่าในการถาม)
10 java  mvc  swing  javafx 

3
สถาปัตยกรรมที่ดีที่สุดสำหรับแอปพลิเคชัน ASP.NET WebForms
ฉันเขียนพอร์ทัล ASP.NET WebForms สำหรับลูกค้า โครงการมีการพัฒนามากกว่าการวางแผนและโครงสร้างอย่างเหมาะสมตั้งแต่ต้น ดังนั้นรหัสทั้งหมดจะถูกบดเข้าด้วยกันภายในโครงการเดียวกันและไม่มีเลเยอร์ใด ๆ ตอนนี้ไคลเอนต์มีความสุขกับการใช้งานดังนั้นฉันต้องการ refactor รหัสเพื่อที่ฉันจะมั่นใจในการเปิดตัวโครงการ เนื่องจากมีหลายวิธีที่แตกต่างกันในการออกแบบสถาปัตยกรรมฉันต้องการความคิดเห็นเกี่ยวกับวิธีการที่ดีที่สุด หน้าที่การทำงาน พอร์ทัลอนุญาตให้ผู้ดูแลระบบกำหนดค่าเทมเพลต HTML "พันธมิตร" อื่น ๆ ที่เกี่ยวข้องจะสามารถแสดงเทมเพลตเหล่านี้ได้โดยการเพิ่มรหัส IFrame ไปยังเว็บไซต์ของพวกเขา ภายในเทมเพลตเหล่านี้ลูกค้าสามารถลงทะเบียนและซื้อผลิตภัณฑ์ API ได้รับการดำเนินการโดยใช้ WCF เพื่อให้ บริษัท ภายนอกสามารถเชื่อมต่อกับระบบได้ ส่วนผู้ดูแลระบบช่วยให้ผู้ดูแลระบบสามารถกำหนดค่าฟังก์ชันการทำงานต่างๆและดูรายงานสำหรับพันธมิตรแต่ละราย ระบบจะส่งใบแจ้งหนี้และอีเมลแจ้งเตือนไปยังลูกค้า สถาปัตยกรรมปัจจุบัน ขณะนี้ใช้ EF4 เพื่ออ่าน / เขียนไปยังฐานข้อมูล วัตถุ EF ถูกใช้โดยตรงภายในไฟล์ aspx สิ่งนี้อำนวยความสะดวกในการพัฒนาอย่างรวดเร็วในขณะที่ฉันเขียนไซต์ แต่ก็อาจยอมรับไม่ได้ที่จะทำให้มันเป็นแบบนั้นเพราะมันเชื่อมต่อฐานข้อมูลกับ UI อย่างแน่นหนา ตรรกะทางธุรกิจที่เฉพาะเจาะจงได้รับการเพิ่มลงในคลาสบางส่วนของวัตถุ EF คำถาม เป้าหมายของการปรับโครงสร้างใหม่จะทำให้ไซต์สามารถปรับขนาดได้บำรุงรักษาได้ง่ายและปลอดภัย สถาปัตยกรรมแบบไหนที่ดีที่สุดสำหรับสิ่งนี้? โปรดอธิบายสิ่งที่ควรอยู่ในแต่ละเลเยอร์ไม่ว่าฉันจะใช้รูปแบบของ DTO …

2
Use-cases สำหรับ node.js และ c #
ฉันทำงาน ASP.NET ค่อนข้างน้อย (C #, MVC) แต่ส่วนใหญ่เป็นการพัฒนาเว็บทั่วไป ฉันใช้สถาปัตยกรรมพักผ่อนโดยใช้ที่เก็บ CRUD ลูกค้าของฉันส่วนใหญ่ไม่มีข้อกำหนดขั้นสูงมากมายในแอปพลิเคชันของพวกเขา ตอนนี้ฉันกำลังดู node.js และมันเป็นนัยเกี่ยวกับประสิทธิภาพ (ฉันติดความเร็ว) แต่ฉันไม่ได้เจาะลึกลงไปเลย ฉันสงสัยว่า node.js สามารถแทนที่การพัฒนาเว็บตามปกติของฉันใน C # และ ASP.NET MVC ได้ (ไม่ได้เขียนแอพที่มีอยู่ใหม่ แต่เมื่อทำงานกับแอปใหม่) node.js สามารถเสริมแอพ ASP.NET MVC ได้ด้วยการเพิ่มความดีแบบ async ให้กับสถาปัตยกรรมที่มีอยู่ มีกรณีการใช้งานสำหรับ / กับ C # และ node.js? แก้ไข ฉันรัก ASP.NET MVC และฉันรู้สึกตื่นเต้นเป็นอย่างมาก เพียงแค่พยายามดูว่ามีกรณีการใช้งานพิเศษที่จะสนับสนุนnode.js หรือไม่

2
วิธีแยก decouple Model ออกจาก View / Controller ใน Java Swing อย่างสมบูรณ์
มีคอลเลกชันของแนวทางการออกแบบที่ตกลงกันโดยทั่วไปสำหรับการแยกคลาส Model จากคลาส View / Controller ในแอพ Java Swing หรือไม่? ฉันไม่ได้เป็นห่วงว่า View / Controller ไม่รู้อะไรเลยเกี่ยวกับตัวแบบเหมือนกับที่อยู่รอบ ๆ : ฉันต้องการออกแบบตัวแบบให้ไม่มีความรู้อะไรเลยใน javax.swing โดยหลักการแล้วมันควรจะมี API ง่าย ๆ ที่ทำให้มันสามารถขับเคลื่อนด้วยบางสิ่งที่เป็นพื้นฐานในฐานะ CLI มันควรจะเป็น "เครื่องยนต์" อย่างหลวม ๆ การสื่อสารเหตุการณ์ GUI กับตัวแบบนั้นไม่ยากเกินไปนักดำเนินการ Action สามารถเรียก API ของโมเดลได้ แต่จะทำอย่างไรเมื่อตัวแบบทำการเปลี่ยนแปลงสถานะของตัวเองซึ่งต้องสะท้อนกลับไปยัง GUI นั่นคือสิ่งที่ "การฟัง" มีไว้สำหรับ แต่แม้กระทั่ง "การฟัง" ก็ไม่ได้เป็นเชิงรับ มันต้องการให้โมเดลรู้เกี่ยวกับการเพิ่มฟัง ปัญหาเฉพาะที่ทำให้ฉันคิดว่าเกี่ยวข้องกับคิวของไฟล์ ทางด้าน GUI นั้นมี a …
10 java  mvc  swing 

3
MVC: รุ่นที่มีประชากรเต็มหรือรุ่นที่เต็มไปบางส่วน?
อันนี้หลอกหลอนฉันมานาน เมื่อใดที่คุณทำการเขียนโปรแกรม MVC คุณคิดว่าอะไรคือวิธีการเขียนโปรแกรมที่ดีกว่า ควรใช้แบบจำลองที่มีคนเต็มหรือคนที่เต็มไปบางส่วนโดยเฉพาะอย่างยิ่งเมื่อฉันรู้ว่าสำหรับงานนี้โดยเฉพาะฉันจะต้องการเพียง 2 ฟิลด์จากวัตถุแบบจำลองที่มี 5 คน บางครั้งดูเหมือนผิดกฎหมายที่จะเติมรายการของวัตถุจำลอง 20 แบบด้วยค่าทั้งหมดจากฐานข้อมูลเมื่อคุณรู้ว่าคุณต้องการเพียงบางส่วนเท่านั้น แน่นอนว่าโมเดลบางส่วนหมายความว่าคุณจะต้องเขียนอีกหนึ่งวิธีใน DAO ของคุณนอกเหนือจากวิธีที่ดึงข้อมูลทุกอย่าง ซึ่งหมายถึงรหัสเพิ่มเติมในการรักษา? ในทางตรงกันข้ามการดึงทุกอย่างจากฐานข้อมูลด้วยโมเดลที่มีประชากรเต็มหมายความว่าวิธีการหนึ่งให้บริการทั้งหมด แต่สิ่งนี้จะช่วยให้คุณได้รับประสิทธิภาพ ฉันสามารถดู ORM (เช่น Hibernate หรือ ActiveRecord of Rails) ซึ่งเป็นที่นิยมในแนวโน้มการเขียนโปรแกรม MVC และฐานข้อมูลเช่น BigTable ของ Google ซึ่งเป็นโมเดลเต็มรูปแบบที่เป็นที่ยอมรับ แต่ถ้าคุณยังใช้ JDBC รุ่นเก่าอยู่ล่ะ? ฮาร์ดแวร์ราคาถูกการพัฒนามีราคาแพง เป็นเรื่องจริงหรือไม่ที่แอพจำเป็นต้องเพิ่มจำนวนคำขอเป็นสองสามแสนครั้งต่อชั่วโมง
10 mvc 

1
แนวทางปฏิบัติที่ดีที่สุดสำหรับการใช้ MVVM และ MVC ใน delphi Pascal
ฉันเป็นโปรแกรมเมอร์ Pascal ของ Delphi ฉันใช้ Embarcadero delphi XE ล่าสุดและฉันต้องการใช้ประโยชน์จากรูปแบบการออกแบบเช่นตัวควบคุมมุมมอง Model และ Model view view model อย่างไรก็ตามดูเหมือนว่าจะไม่มีอะไรมากบนเว็บเกี่ยวกับแนวทางปฏิบัติที่ดีที่สุดสำหรับการทำสิ่งนี้ในภาษาปาสกาล ตัวอย่างส่วนใหญ่ที่ฉันพบมีในภาษา C # และคุณสมบัติภาษาบางอย่างไม่มีอยู่ในภาษาปาสกาลซึ่งหมายความว่าฉันอาจต้องหาวิธีในการใช้คุณสมบัติเหล่านั้น ฉันกำลังพยายามปรับรหัสจากบทความนี้ที่นี่ ฉันจะระบุปัญหาที่ฉันเผชิญ ประเภทที่ทำให้เป็นโมฆะ ปาสคาลไม่มีประเภท nullable เช่น C # ดังนั้นฉันได้สร้างของตัวเอง TNullable<T> = record strict private fHasValue : boolean; fValue : T; function GetValue:T; procedure SetValue(newValue : T); public property HasValue : …

4
ใน MVC ถือว่าเป็นแนวปฏิบัติที่ดีที่จะมีฟังก์ชั่นส่วนตัวที่ไม่ใช่แอ็คชั่นในคลาสคอนโทรลเลอร์หรือไม่?
บางครั้งฟังก์ชั่นการกระทำในคลาสคอนโทรลเลอร์อาจมีขนาดใหญ่และน่ารังเกียจโดยมีโค้ดหลายบรรทัดเพื่อควบคุมการไหลของข้อมูลจาก Model ไปยังมุมมอง เมื่อถึงจุดหนึ่งฟังก์ชั่นขนาดใหญ่เหล่านี้จะสูญเสียการติดตามหลักการพื้นฐานของโค้ดที่ดีอย่างสมบูรณ์เช่นการทำสิ่งเดียวการเล็กการอ่านและการจัดการเป็นต้น มันจะถือว่าเป็นการปฏิบัติที่ดีที่จะแบ่งฟังก์ชั่นการทำงานขนาดใหญ่เหล่านี้ออกเป็นฟังก์ชั่นส่วนตัวที่เล็กลงในคลาสคอนโทรลเลอร์หรือหากความต้องการของการปรับให้เหมาะสมดังกล่าวหมายความว่าเราควรเพิ่มพวกมันในโมเดล? ฉันจะลงคะแนนให้ฟังก์ชั่นขนาดเล็กเป็นส่วนตัวในคอนโทรลเลอร์เพื่อให้พวกมันสัมพันธ์กับแอ็คชั่น แต่ฉันเคยได้ยินข้อโต้แย้งว่าผู้ควบคุมควรจะง่ายกว่าในขณะที่โมเดลสามารถมีขนาดใหญ่และเป็นก้อน และเพียงแค่สงสัยว่าอันไหนจะเป็นวิธีที่ต้องการมากที่สุด
10 php  code-quality  mvc 

1
หากคุณมีตรรกะบางอย่างที่ต้องแชร์ระหว่างสองคอนโทรลเลอร์คุณเก็บไว้ที่ไหน?
ฉันมีชุดของฟังก์ชั่นวัตถุประสงค์เดียวที่ฉันต้องการในตัวควบคุมแยกกันสองตัว ตอนนี้ฉันเพิ่งมีรหัสที่ซ้ำกันและฉันต้องการที่จะกำจัดมัน รหัสนี้เป็นส่วนหนึ่งของคอนโทรลเลอร์และไม่ได้อยู่ในเลเยอร์บริการของฉัน คุณจะวางไว้ที่ไหน
10 mvc  code-smell 

2
การออกแบบที่เหมาะสมเพื่อหลีกเลี่ยงการใช้ dynamic_cast?
หลังจากทำการวิจัยบางอย่างฉันไม่สามารถหาตัวอย่างง่ายๆในการแก้ไขปัญหาที่ฉันพบบ่อยได้ สมมติว่าฉันต้องการสร้างแอปพลิเคชั่นเล็ก ๆ ที่ฉันสามารถสร้างSquares, Circles และรูปร่างอื่น ๆ แสดงมันบนหน้าจอปรับเปลี่ยนคุณสมบัติของพวกเขาหลังจากที่เลือกพวกเขาแล้วคำนวณขอบเขตทั้งหมดของพวกเขา ฉันจะทำคลาสโมเดลดังนี้: class AbstractShape { public : typedef enum{ SQUARE = 0, CIRCLE, } SHAPE_TYPE; AbstractShape(SHAPE_TYPE type):m_type(type){} virtual ~AbstractShape(); virtual float computePerimeter() const = 0; SHAPE_TYPE getType() const{return m_type;} protected : const SHAPE_TYPE m_type; }; class Square : public AbstractShape { public: Square():AbstractShape(SQUARE){} …

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