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

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

4
เหตุใดจึงเป็นความรับผิดชอบของผู้โทรเพื่อความปลอดภัยของเธรดในการเขียนโปรแกรม GUI?
ฉันเคยเห็นมาแล้วในหลาย ๆ ที่ว่ามันเป็นภูมิปัญญาที่ยอมรับ1ว่าเป็นความรับผิดชอบของผู้โทรเพื่อให้แน่ใจว่าคุณอยู่ในเธรด UI เมื่ออัปเดตองค์ประกอบ UI (โดยเฉพาะใน Java Swing ที่คุณอยู่ในEvent Dispatch Thread ) . ทำไมเป็นเช่นนี้ Event Dispatch Thread เป็นปัญหาของมุมมองใน MVC / MVP / MVVM เพื่อจัดการที่ใดก็ได้ แต่มุมมองจะสร้างการเชื่อมต่ออย่างแน่นหนาระหว่างการนำไปใช้ของมุมมองและโมเดลการทำเกลียวของการปรับใช้มุมมองนั้น โดยเฉพาะสมมติว่าฉันมีแอปพลิเคชันที่ออกแบบมาให้ใช้งาน MVC ซึ่งใช้ Swing ถ้าโทรเป็นผู้รับผิดชอบสำหรับส่วนประกอบปรับปรุงในกระทู้ที่จัดกิจกรรมส่งแล้วถ้าฉันพยายามที่จะสลับออกสวิงดูการดำเนินงานของฉันสำหรับการดำเนินงาน JavaFX ผมต้องเปลี่ยนทุกรหัส Presenter / ควบคุมการใช้ด้าย JavaFX ประยุกต์ใช้แทน ดังนั้นฉันคิดว่าฉันมีสองคำถาม: เหตุใดจึงเป็นความรับผิดชอบของผู้โทรเพื่อให้มั่นใจในความปลอดภัยของเธรดส่วนประกอบ UI ข้อบกพร่องในการให้เหตุผลด้านบนของฉันอยู่ที่ไหน ฉันจะออกแบบแอปพลิเคชันของฉันให้มีเพศสัมพันธ์แบบหลวม ๆ เกี่ยวกับความปลอดภัยของเธรดเหล่านี้ได้อย่างไร แต่ยังคงปลอดภัยต่อเธรดอย่างเหมาะสม ให้ฉันเพิ่มรหัส MCVE Java เพื่อแสดงให้เห็นถึงสิ่งที่ฉันหมายถึงโดย …

11
'C' ใน MVC จำเป็นจริงๆหรือ
ฉันเข้าใจบทบาทของโมเดลและมุมมองในรูปแบบ Model-View-Controller แต่ฉันเข้าใจยากว่าเพราะเหตุใดคอนโทรลเลอร์จึงจำเป็น สมมติว่าเรากำลังสร้างโปรแกรมหมากรุกโดยใช้วิธี MVC สถานะของเกมควรเป็นแบบจำลองและ GUI ควรเป็นมุมมอง อะไรคือคอนโทรลเลอร์ในกรณีนี้? มันเป็นเพียงคลาสแยกต่างหากที่มีฟังก์ชั่นทั้งหมดที่จะถูกเรียกเมื่อคุณพูดคลิกที่ไทล์? ทำไมไม่เพียงทำทุกตรรกะบนตัวแบบในมุมมองของตัวเอง?

6
จะหลีกเลี่ยง UITableViewController ขนาดใหญ่และเงอะงะบน iOS ได้อย่างไร
ฉันมีปัญหาเมื่อใช้รูปแบบ MVC บน iOS ฉันค้นหาทางอินเทอร์เน็ต แต่ดูเหมือนจะไม่พบทางออกที่ดีสำหรับปัญหานี้ UITableViewControllerการใช้งานหลายอย่างดูเหมือนจะค่อนข้างใหญ่ ตัวอย่างส่วนใหญ่ที่ฉันได้เห็นช่วยให้UITableViewControllerการดำเนินการและ<UITableViewDelegate> <UITableViewDataSource>การติดตั้งใช้งานเหล่านี้เป็นเหตุผลสำคัญว่าทำไมจึงUITableViewControllerเริ่มมีขนาดใหญ่ ทางออกหนึ่งที่จะสร้างการเรียนที่แยกต่างหากที่ดำเนินการและ<UITableViewDelegate> ของหลักสูตรการเรียนเหล่านี้จะต้องมีการอ้างอิงถึง<UITableViewDataSource> UITableViewControllerมีข้อเสียใด ๆ ในการใช้โซลูชันนี้หรือไม่? โดยทั่วไปฉันคิดว่าคุณควรมอบสิทธิ์การใช้งานให้กับชั้นเรียนอื่น ๆ "ผู้ช่วย" หรืออื่น ๆ ที่คล้ายกันโดยใช้รูปแบบตัวแทน มีวิธีใดในการแก้ปัญหานี้เป็นที่ยอมรับหรือไม่? ฉันไม่ต้องการให้แบบจำลองมีฟังก์ชั่นมากเกินไปหรือมุมมอง ฉันเชื่อว่าตรรกะควรอยู่ในคลาสตัวควบคุมเนื่องจากนี่เป็นหนึ่งในเสาหลักของรูปแบบ MVC แต่คำถามใหญ่คือ: คุณควรแบ่งตัวควบคุมของการใช้ MVC เป็นชิ้นส่วนที่จัดการได้อย่างไร (ใช้กับ MVC ใน iOS ในกรณีนี้) อาจมีรูปแบบทั่วไปสำหรับการแก้ปัญหานี้แม้ว่าฉันกำลังมองหาโซลูชันสำหรับ iOS โดยเฉพาะ โปรดยกตัวอย่างรูปแบบที่ดีสำหรับการแก้ไขปัญหานี้ โปรดระบุเหตุผลที่โซลูชันของคุณยอดเยี่ยม

7
ทำไมทุกคนถึงนำคอนโทรลเลอร์ไปไว้ในโฟลเดอร์เดียวและอีกมุมมองหนึ่ง?
ฉันพร้อมที่จะโค้งงอจาก asp และเป็นกรอบ mvc, asp.net mvc หรือแนนซี่ เมื่อใดก็ตามที่ฉันไปฉันเห็นโฟลเดอร์สำหรับตัวควบคุม / โมดูลและโฟลเดอร์สำหรับมุมมอง นี่เป็นเพียงภาพเคลื่อนไหวของ pavlovian ในการจัดเรียงสิ่งต่าง ๆ ตามประเภทหรือมีการดำเนินงานอย่างลึกซึ้งยิ่งขึ้น? ฉันมีโปรเจ็กต์การพิสูจน์แนวคิดเล็กน้อยที่ฉันเก็บไฟล์ที่ฉันน่าจะเปิดด้วยกันไว้ด้วยกันซึ่งเป็นความสะดวกสบายที่สำคัญมาก เนื่องจากไฟล์เหล่านี้มีแนวโน้มที่จะเรียกซึ่งกันและกันไฟล์จึงสามารถทำได้โดยใช้ลิงก์ที่สั้นลงและเปราะน้อยกว่า รูปแบบนี้ถูกท้าทายโดย mvc เนื่องจากเส้นทางโฟลเดอร์จะไม่สอดคล้องกับเส้นทาง url โดยอัตโนมัติอีกต่อไปและใน asp.net mvc เทมเพลตโครงการและการกำหนดเส้นทางจะบังคับใช้ views \ controllers \ schism นี้หน้าไมโครซอฟท์แนะนำแนวคิดของพื้นที่ สามารถอ่านได้ว่าเป็นการยอมรับว่าแอพพลิเคชั่นขนาดใหญ่ไม่ใหญ่โตเป็นอย่างไรเนื่องจากการแยกแบบนี้ ผู้คนจะคัดค้าน "การแยกความกังวล" แต่การแยกความกังวลนั้นทำได้โดยการมีไฟล์ต้นฉบับแยกต่างหาก ไม่มีประโยชน์ใด ๆ ที่เป็นรูปธรรมสำหรับฉันจากการใช้ไฟล์ต้นฉบับเหล่านี้ที่เชื่อมโยงกันอย่างแน่นหนาและส่งมันไปยังอีกด้านหนึ่งของโครงสร้างโฟลเดอร์ มีคนอื่นต่อสู้สิ่งนี้หรือไม่? เคล็ดลับใด ๆ
36 mvc  asp.net-mvc 

2
MVCS - รุ่น Store View Controller
ฉันเพิ่งตัดสินใจที่จะเริ่มต้นเรียนรู้การพัฒนา iOS และเพื่อการนี้ฉันได้อ่านการเขียนโปรแกรม iOS: บิ๊กไร่ Nerd คู่มือ ในหนังสือเล่มนี้ผู้เขียนอธิบายรูปแบบการออกแบบMVCS - Model-View-Controller-Storeแนวคิดพื้นฐานว่าเนื่องจากแอปพลิเคชันจำนวนมากใช้ประโยชน์จากแหล่งข้อมูลภายนอกหลายแหล่งที่ทำให้ตรรกะคำขอในตัวควบคุมนั้นยุ่งเหยิงมากแทนที่จะเป็นผู้เขียน เสนอว่าการย้ายตรรกะคำขอทั้งหมดออกจากตัวควบคุมและไปยังวัตถุที่แยกต่างหาก ในระยะสั้นเพื่ออ้างหนังสือ Model-View-Controller-Store ทำให้ตรรกะคำขอเป็นวัตถุแยกต่างหากและเราเรียกวัตถุนี้ว่าร้านค้า (รูปที่ 28.4) การใช้ออบเจกต์ร้านค้าลดรหัสที่ซ้ำซ้อนให้น้อยที่สุดและลดความซับซ้อนของรหัสที่ดึงและบันทึกข้อมูล สิ่งสำคัญที่สุดคือมันย้ายตรรกะในการจัดการกับแหล่งข้อมูลภายนอกเป็นชั้นเรียนที่เป็นระเบียบเรียบร้อยด้วยเป้าหมายที่ชัดเจนและมุ่งเน้น รหัสนี้ทำให้เข้าใจง่ายยิ่งขึ้นซึ่งทำให้ง่ายต่อการบำรุงรักษาและตรวจแก้จุดบกพร่องรวมถึงแบ่งปันกับโปรแกรมเมอร์คนอื่น ๆ ในทีมของคุณ และ สิ่งที่ยอดเยี่ยมเกี่ยวกับร้านค้าอะซิงโครนัสคือแม้ว่าวัตถุจำนวนมากกำลังทำงานเป็นจำนวนมากในการประมวลผลคำขอการไหลของคำขอและการตอบสนองอยู่ในที่เดียวในคอนโทรลเลอร์ สิ่งนี้ทำให้เราได้รับประโยชน์จากโค้ดที่อ่านง่ายและแก้ไขได้ง่าย ฉันต้องการค้นหาเพิ่มเติมเกี่ยวกับรูปแบบนี้และเพื่อดูว่าคนอื่น ๆ อาจจะพูดถึงเรื่องนี้อย่างไร แต่ในขณะที่ค้นหาทางออนไลน์มีเพียงข้อมูลอ้างอิงเดียวที่ฉันพบได้ในหนังสือเล่มเดียวกันนั้น (เป็นชื่อที่รู้จักกันในชื่ออื่น) สำหรับฉันแล้วตรรกะของผู้เขียนดูเหมือนจะสมเหตุสมผลและดูเหมือนว่าเป็นการขยายตรรกะของรูปแบบ MVC ปกติ แต่อาจเป็นเพราะฉันไม่มีประสบการณ์มากกับรูปแบบ MVC ในทางปฏิบัติ (นอกเหนือจากการจู่โจมสู่การพัฒนา iOS ที่ฉันมี ประเภท MVV ที่ใช้แล้วที่มีbackbone.js (นั่นคือถ้าคุณพิจารณาว่าเป็น MVC ) ฉันหวังว่าอาจมีบางคนที่มีประสบการณ์มากกว่านั้นสามารถบอกได้ว่ามีข้อบกพร่อง / ปัญหาที่ชัดเจนเกี่ยวกับรูปแบบMVCSที่ฉันพลาดไปหรือไม่

10
มุมมองและโมเดลควรสื่อสารหรือไม่?
ตามหน้าวิกิพีเดียสำหรับสถาปัตยกรรม MVCมุมมองนั้นจะได้รับการแจ้งเตือนจากตัวแบบได้อย่างอิสระและยังมีอิสระในการสอบถามตัวแบบเกี่ยวกับสถานะปัจจุบันของมัน อย่างไรก็ตามตามหลักสูตรของ Paul Hegarty บน iOS 5 ที่ Stanford การบรรยายที่ 1 หน้า 18การโต้ตอบทั้งหมดจะต้องผ่านตัวควบคุมด้วย Model and View ที่ไม่ควรจะรู้จักกัน มันไม่ชัดเจนสำหรับฉันถ้าคำแถลงของ Hegarty จะต้องทำให้ง่ายขึ้นสำหรับหลักสูตร แต่ฉันอยากพูดว่าเขาตั้งใจออกแบบเช่นนี้ คุณจะอธิบายมุมมองตรงข้ามทั้งสองนี้ได้อย่างไร
33 design  mvc 

7
เป็นไปได้หรือไม่ที่ตรรกะทางธุรกิจจะไม่คืบคลานเข้ามาในมุมมอง?
ฉันได้พัฒนาโครงการเว็บแอพพลิเคชั่นหลายโครงการในช่วง 3 ปีที่ผ่านมาทั้งที่ทำงานส่วนตัวและที่ทำงานและฉันไม่สามารถคิดออกได้ว่าเป็นไปได้อย่างน้อยตรรกะทางธุรกิจบางอย่างที่ไม่สิ้นสุดในมุมมองของแอปพลิเคชัน ในกรณีส่วนใหญ่จะมีปัญหาเช่น "ถ้าผู้ใช้เลือกตัวเลือก x ดังนั้นแอปพลิเคชันจะต้องเปิดใช้งานเขาสามารถให้ข้อมูลสำหรับ y ถ้าไม่เช่นนั้น s / เขาควรจะให้ข้อมูล z" หรือดำเนินการ AJAX ซึ่งควรใช้การเปลี่ยนแปลงบางอย่างกับโมเดล แต่ไม่ยอมรับจนกว่าผู้ใช้จะร้องขออย่างชัดเจน นี่เป็นปัญหาที่ง่ายที่สุดที่ฉันพบและฉันไม่สามารถเข้าใจได้ว่าจะหลีกเลี่ยงตรรกะที่ซับซ้อนในมุมมองได้อย่างไร หนังสือส่วนใหญ่ที่ฉันได้อ่านอธิบาย MVC มักจะแสดงตัวอย่างเล็ก ๆ น้อย ๆ อย่างเช่นการดำเนินการ CRUD ที่เพิ่งอัปเดตข้อมูลบนเซิร์ฟเวอร์และแสดง แต่ CRUD ไม่ใช่กรณีของแอปพลิเคชันที่ร่ำรวยที่สุด เป็นไปได้ไหมที่จะมีมุมมองโดยไม่มีเหตุผลทางธุรกิจเลย?

9
อธิบาย MVC ให้ผู้ที่ไม่ใช่โปรแกรมเมอร์ [ปิด]
ฉันต้องการอธิบาย MVC ให้ผู้ที่ไม่ใช่โปรแกรมเมอร์ คือผู้จัดการของแผนกอื่น ๆ ในบริบทของรายงานความคืบหน้า หนึ่งในสิ่งที่ฉันทำคือ refactor codebase ของเราไปสู่การแยก MVC พวกเขาอาจถามแยก MVC คืออะไร? ทำไมพวกเขาอาจจำเป็นต้องถาม? หลังจากอ่านคำตอบทางเทคนิคอย่างเป็นธรรมเช่นนี้ MVC คืออะไรจริง ๆ ฉันไม่พอใจอย่างสิ้นเชิงเนื่องจากฉันจะคุยกับโปรแกรมเมอร์ที่ไม่ใช่ พวกเขาอาจพยักหน้า แต่พวกเขาอาจจะไม่เข้าใจว่ามันคืออะไรและทำไมมันถึงต้องการ ในความเป็นจริงฉันไม่เข้าใจสิ่งที่ MVC เป็นอย่างอื่นนอกจาก "การแยกข้อกังวลหน้าที่ฟังก์ชั่นคลาสบล็อกงานสิ่งต่าง ๆ เพื่อปรับปรุงความยืดหยุ่นในการเปลี่ยนแปลงซอฟต์แวร์" การแยกฐานข้อมูลออกจากมุมมองและมุมมองจากตรรกะทางธุรกิจโดยใช้เทคนิคเช่นเครื่องมือ DI และ OO และเทคนิคเป็นสิ่งที่ฉันคิดว่าเป็นการแยก MVC ดังนั้นครั้งต่อไปที่คุณกำลังอธิบาย MVC ให้กับผู้ที่ไม่ใช่โปรแกรมเมอร์ที่มีพื้นฐานด้านการขายและการบัญชีเช่นคุณจะบอกอะไรพวกเขา
31 mvc 

5
การตรวจสอบการอนุญาตของผู้ใช้จะเกิดขึ้นที่ใดและใน MVC และโดยใคร
ควรตรวจสอบการอนุญาตของผู้ใช้เกิดขึ้นในรุ่นหรือคอนโทรลเลอร์ และใครควรจัดการกับการตรวจสอบการอนุญาตวัตถุผู้ใช้หรือผู้ช่วยการจัดการบางอย่าง? มันควรจะเกิดขึ้นที่ไหน? การตรวจสอบในคอนโทรลเลอร์: class MyController { void performSomeAction() { if (user.hasRightPermissions()) { model.someAction(); } } ... การมีการตรวจสอบในคอนโทรลเลอร์ช่วยให้การดำเนินการเป็นแบบอย่างง่ายดังนั้นเราจึงสามารถเก็บตรรกะทั้งหมดไว้กับตัวควบคุมได้ ตรวจสอบในรูปแบบ: class MyModel { void someAction() { if (user.hasRightPermissions()) { ... } } ... โดยการใส่เช็คเข้าไปในโมเดลเราทำให้โมเดลนั้นมีความซับซ้อน แต่ก็ต้องแน่ใจว่าเราไม่อนุญาตให้ผู้ใช้ทำสิ่งที่พวกเขาไม่ควรจะอยู่ในคอนโทรลเลอร์ แล้วใครล่ะ เมื่อเราตัดสินในสถานที่แล้วใครควรทำการตรวจสอบ? ผู้ใช้งาน? Class User { bool hasPermissions(int permissionMask) { ... } ... แต่มันไม่ใช่ความรับผิดชอบของผู้ใช้ที่จะรู้ว่าเขาหรือเธอสามารถทำอะไรได้บ้างดังนั้นบางทีผู้ช่วยบางคน? Class UserManagement …
26 mvc  permissions 

4
ในรูปแบบ MVC ควรจัดการตรวจสอบความถูกต้อง?
ฉันพยายามสร้างเว็บแอปพลิเคชันที่ฉันพัฒนาขึ้นเพื่อใช้รูปแบบ MVC แต่ฉันไม่แน่ใจว่าควรตรวจสอบความถูกต้องในรูปแบบหรือไม่ ตัวอย่างเช่นฉันกำลังตั้งค่าแบบจำลองของฉันแบบนี้: class AM_Products extends AM_Object { public function save( $new_data = array() ) { // Save code } } คำถามแรก:ดังนั้นฉันสงสัยว่าวิธีการบันทึกของฉันควรจะเรียกใช้ฟังก์ชันการตรวจสอบความถูกต้องใน $ new_data หรือสมมติว่าข้อมูลได้รับการตรวจสอบแล้ว? นอกจากนี้หากมีการตรวจสอบความถูกต้องฉันคิดว่ารหัสบางรุ่นเพื่อกำหนดประเภทข้อมูลจะมีลักษณะดังนี้: class AM_Products extends AM_Object { protected function init() // Called by __construct in AM_Object { // This would match up to the database …
25 architecture  mvc 

6
ฉันควรใส่คำขอ API ไว้ที่ MVC ที่ไหน
ฉันกำลังสร้างเว็บแอปพลิเคชันโดยใช้รูปแบบ MVC ต่อไปนี้ชนิดของสถาปัตยกรรมนี้เราจะเห็นว่าวิธีการทั้งหมดที่ใช้ในการติดต่อกับฐานข้อมูลจะดำเนินการในรูปแบบ แต่จะเกิดอะไรขึ้นถ้าฉันต้องเรียกบริการที่ผู้อื่นเปิดเผยบนเว็บ ตัวอย่างเช่นฉันต้องการเข้าถึง Facebook API เพื่อรับผู้ติดตามทั้งหมดในหน้าของฉันดังนั้นฉันจะวางวิธีการเหล่านี้ไว้ที่ไหน เห็นได้ชัดว่ามุมมองที่ไม่เป็นความคิดที่ดีเพราะโมดูลนี้จะทุ่มเทให้กับงานนำเสนอที่ควบคุมไม่ควรนำมาใช้ในการดึงข้อมูล แต่รุ่นมักจะมีความมุ่งมั่นเท่านั้นที่จะมีปฏิสัมพันธ์กับฐานข้อมูล ดังนั้นคุณสามารถให้คำแนะนำฉันเกี่ยวกับสิ่งนั้นได้ไหม และโปรดคุณช่วยบอกฉันได้ไหมว่าฉันทำผิดพลาดเกี่ยวกับสถาปัตยกรรม MVC หรือไม่
25 mvc  api 

3
มันสมเหตุสมผลหรือไม่ที่จะสร้างแอปพลิเคชั่น (ไม่ใช่เกม) โดยใช้สถาปัตยกรรมส่วนประกอบ - เอนทิตี้ของระบบ?
ฉันรู้ว่าเมื่อสร้างแอปพลิเคชั่น (ดั้งเดิมหรือเว็บ) เช่นใน Apple AppStore หรือ Google Play app store นั้นเป็นเรื่องธรรมดามากที่จะใช้สถาปัตยกรรม Model-View-Controller อย่างไรก็ตามมันมีเหตุผลที่จะสร้างแอพพลิเคชั่นที่ใช้สถาปัตยกรรม Component-Entity-System ทั่วไปในเอ็นจิ้นเกมหรือไม่?

2
รูปแบบทางเลือกสำหรับการพัฒนาเว็บ? (ไม่ใช่ MVC) [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการ4 ปีที่แล้ว เร็ว ๆ นี้ผมได้อ่านบล็อกโพสต์บางประการเกี่ยวกับ MVC และวิธีการที่ไม่พอดีกับเว็บ ฉันได้เรียนรู้เกี่ยวกับรูปแบบทางเลือกเช่นRMR สถาปัตยกรรม ฉันอยากรู้ว่าคนอื่นใช้รูปแบบใดบนเว็บนอกเหนือจาก MVC นอกจากนี้หากมีกรอบที่ใช้รูปแบบโปรดโพสต์ลิงค์ไปที่มัน

1
เป็นวิธีปฏิบัติที่ดีในการเรียกใช้ฟังก์ชันคอนโทรลเลอร์จากคอนโทรลเลอร์อื่นหรือไม่?
ฉันมีกรณีที่ฉันจัดการกับตรรกะของการค้นหาในคอนโทรลเลอร์เดียวและฉันสร้างข้อมูลบางส่วนจากการค้นหาและกลับมาเป็นสถิติ เป็นวิธีปฏิบัติที่ดีในการเรียกใช้ฟังก์ชันคอนโทรลเลอร์จากคอนโทรลเลอร์อื่นหรือไม่? หรือผู้ควบคุมสองคนไม่ควร 'คุย'
23 mvc 

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

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