fbpx
วิกิพีเดีย

โมเดล-วิว-คอนโทรลเลอร์

Model-View-Controller (MVC) คือ สถาปัตยกรรมซอฟต์แวร์ชนิดหนึ่ง ซึ่งในขณะนี้ถือว่าเป็นแบบแผนสถาปัตยกรรม (architectural pattern) ที่ใช้ในสาขาวิศวกรรมซอร์ฟแวร์ รูปแบบ MVC ใช้เพื่อแยกส่วนซอฟต์แวร์ในส่วน ตรรกะเนื้อหา (domain logic) ได้แก่ความเข้าใจในระบบของผู้ใช้ และส่วนการป้อนข้อมูลและแสดงผล (GUI) ซึ่งช่วยให้การพัฒนา การทดสอบ และการดูแลรักษาซอฟต์แวร์ แยกออกจากกัน

โมเดล (Model) หมายถึง ส่วนของซอฟต์แวร์ที่ใช้ในการแปลการทำงานของระบบ ไปสู่สิ่งที่ระบบซอฟต์แวร์ได้ถูกออกแบบเอาไว้ ตรรกะเนื้อหาใช้เพื่อให้ความหมายแก่ข้อมูลดิบ (ยกตัวอย่างเช่น การคำนวณว่าวันนี้เป็นวันเกิดของผู้ใช้หรือไม่, หรือจำนวนเงินรวม ภาษี และค่าส่งสินค้า ในตะกร้าสินค้า) เมื่อโมเดลมีการเปลี่ยนแปลง จะมีการส่งคำเตือนให้แก่ วิว ที่เกี่ยวข้องเพื่อปรับค่า

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

วิว (View) แสดงผลค่าในโมเดลในรูปแบบที่เหมาะสมต่อการปฏิสัมพันธ์กับผู้ใช้ ในแต่ละโมเดลสามารถมีวิวได้หลายแบบ เพื่อใช้ในจุดประสงค์ที่ต่างกัน

คอนโทรลเลอร์ (Controller) รับข้อมูลจากผู้ใช้เข้ามา แล้วดำเนินการตอบสนองต่อข้อมูลนั้น โดยเรียกใช้ logic ต่างๆจากอ็อบเจกต์ในโมเดล และส่งข้อมูลผลลัพย์นั้นกลับไปยังส่วนแสดงผล เพื่อตอบกลับไปยังผู้ใช้ได้อย่างถูกต้อง

แอปพลิเคชันที่ใช้ MVC อาจจะเป็นกลุ่มของ โมเดล/วิว/คอนโทรลเลอร์ โดยแต่ละกลุ่มใช้ในงานต่างกันไป

MVC มักจะพบได้ในเว็บแอปพลิเคชันโดย วิว จะเป็น HTML หรือ XHTML ที่สร้างโดยแอปพลิเคชันนั้น ส่วนคอนโทรลเลอร์รับค่า GET หรือ POST เข้ามา แล้วเลือกติดต่อกับโมเดลในส่วนที่เกี่ยวข้องเพื่อตอบสนอง โมเดลซึ่งมี business rules จะทำการจัดการตามคำร้องขอนั้นๆ

ประวัติ

MVC ได้ถูกอธิบายครั้งแรกในปีคศ. 1979 โดย Trygve Reenskaug ซึ่งในระหว่างนั้นได้ทำงานเกี่ยวกับภาษา Smalltalk ที่บริษัท Xerox PARC. การนำไปใช้แบบดั้งเดิม ได้ถูกอธิบายอย่างละเอียดในเปเปอร์ที่สำคัญชื่อ "Applications Programming in Smalltalk-80: How to use Model–View–Controller".

หลังจากนั้นได้มีรูปแบบของ MVC แยกย่อยออกมาหลายแบบด้วยกัน ตัวอย่างเช่น Model View Presenter ถูกนำไปใช้ใน .NET Framework แต่ MVC แบบมาตรฐานก็ยังคงเป็นที่นิยมอยู่

Overview

แม้ว่า MVC จะมีรูปแบบต่างกันไป แต่ control flow มันจะเป็นดังนี้:

  1. ผู้ใช้ทำการตอบโต้ กับ user interface ในทางใดทางหนึ่ง (ยกตัวอย่างเช่น กดปุ่มเมาส์)
  2. คอนโทรลเลอร์ จัดการ event ที่เกิดขึ้นจาก user interface มักจะโดย handler ที่ได้สร้างเอาไว้ หรือ callback แล้วแปลง event เป็นการกระทำของผู้ใช้ที่เหมาะสม ซึ่งเข้าใจได้ด้วยโมเดล
  3. คอนโทรลเลอร์ แจ้งโมเดลถึงการกระทำของผู้ใช้ เช่นอาจจะทำให้เกิดการเปลี่ยนสถานะในโมเดล (ยกตัวอย่างเช่น คอนโทรลเลอร์ปรับปรุงตะกร้าสินค้าของผู้ใช้)
  4. วิว ถามโมเดลเพื่อที่จะสร้างการแสดงผลที่เหมาะสมแก่ผู้ใช้ (ยกตัวอย่างเช่น วิวแสดงรายการสินค้าในตะกร้าสินค้า) โดยวิวได้ข้อมูลมาจากโมเดล ในบางรุปแบบของ MVC คอนโทรลเลอร์อาจจะให้คำสั่งแก่วิวด้วย หรือบางรูปแบบ วิวจะได้รับการบอกจากโมเดลถึงการเปลี่ยนแปลง
  5. user interface รอการปฏิสัมพันธ์จากผู้ใช้ ซึ่งจะกลับเข้าสู่วงจรในขั้นแรก

ในบางรูปแบบของ MVC เช่นใน W3C XForms ใช้หลักการของ dependency graph เพื่อให้เกิดการปรับปรุงวิวโดยอัติโนมัติ เมื่อข้อมูลในโมเดลเปลี่ยนแปลง

ด้วยการแยกโมเดลและวิวออกจากกัน MVC ช่วยให้ความซับซ้อนในการออกแบบลดลง และเพิ่มความคล่องตัวและการนำโค้ดกลับมาใช้ใหม่ (Code reuse)

อ้างอิง

  1. Trygve M. H. Reenskaug/MVC—XEROX PARC 1978-79
  2. How to use Model–View–Controller (MVC)
  3. Boodhoo, Jean-Paul (August 2006). "Design Patterns: Model View Presenter". สืบค้นเมื่อ 2009-07-07.
  4. Complex controllers are often structured using the command pattern to encapsulate actions and simplify extension.

โมเดล, คอนโทรลเลอร, งก, ามภาษา, ในบทความน, ไว, ให, านและผ, วมแก, ไขบทความศ, กษาเพ, มเต, มโดยสะดวก, เน, องจากว, เด, ยภาษาไทยย, งไม, บทความด, งกล, าว, กระน, ควรร, บสร, างเป, นบทความโดยเร, วท, ดบทความน, อาจต, องการตรวจสอบต, นฉบ, ในด, านไวยากรณ, ปแบบการเข, ยน, การ. lingkkhamphasa inbthkhwamni miiwihphuxanaelaphurwmaekikhbthkhwamsuksaephimetimodysadwk enuxngcakwikiphiediyphasaithyyngimmibthkhwamdngklaw krann khwrribsrangepnbthkhwamodyerwthisudbthkhwamnixactxngkartrwcsxbtnchbb indaniwyakrn rupaebbkarekhiyn kareriyberiyng khunphaph hruxkarsakd khunsamarthchwyphthnabthkhwamidModel View Controller MVC khux sthaptykrrmsxftaewrchnidhnung sunginkhnanithuxwaepnaebbaephnsthaptykrrm architectural pattern thiichinsakhawiswkrrmsxrfaewr rupaebb MVC ichephuxaeykswnsxftaewrinswn trrkaenuxha domain logic idaekkhwamekhaicinrabbkhxngphuich aelaswnkarpxnkhxmulaelaaesdngphl GUI sungchwyihkarphthna karthdsxb aelakarduaelrksasxftaewr aeykxxkcakknomedl Model hmaythung swnkhxngsxftaewrthiichinkaraeplkarthangankhxngrabb ipsusingthirabbsxftaewridthukxxkaebbexaiw trrkaenuxhaichephuxihkhwamhmayaekkhxmuldib yktwxyangechn karkhanwnwawnniepnwnekidkhxngphuichhruxim hruxcanwnenginrwm phasi aelakhasngsinkha intakrasinkha emuxomedlmikarepliynaeplng camikarsngkhaetuxnihaek wiw thiekiywkhxngephuxprbkharabbsxftaewrhlayrabbichkarekbkhxmulthawr echn thankhxmul ephuxekbkhxmulehlani MVC imidkahndthungradbkarekhathungkhxmul ephraaepnthiekhaicknwaswnnicaxyuphayit hruxthukkhrxbkhlumdwyomedl omedlimidepnephiyngxxbecktthiichekhathungkhxmul aetinrabbsxftaewrelk sungmikhwamsbsxnnxycaimehnkhwamaetktangmaknkwiw View aesdngphlkhainomedlinrupaebbthiehmaasmtxkarptismphnthkbphuich inaetlaomedlsamarthmiwiwidhlayaebb ephuxichincudprasngkhthitangknkhxnothrlelxr Controller rbkhxmulcakphuichekhama aelwdaeninkartxbsnxngtxkhxmulnn odyeriykich logic tangcakxxbecktinomedl aelasngkhxmulphllphynnklbipyngswnaesdngphl ephuxtxbklbipyngphuichidxyangthuktxngaexpphliekhchnthiich MVC xaccaepnklumkhxng omedl wiw khxnothrlelxr odyaetlaklumichinngantangknipMVC mkcaphbidinewbaexpphliekhchnody wiw caepn HTML hrux XHTML thisrangodyaexpphliekhchnnn swnkhxnothrlelxrrbkha GET hrux POST ekhama aelweluxktidtxkbomedlinswnthiekiywkhxngephuxtxbsnxng omedlsungmi business rules cathakarcdkartamkharxngkhxnn prawti aekikh MVC idthukxthibaykhrngaerkinpikhs 1979 1 ody Trygve Reenskaug sunginrahwangnnidthanganekiywkbphasa Smalltalk thibristh Xerox PARC karnaipichaebbdngedim idthukxthibayxyanglaexiydinepepxrthisakhychux Applications Programming in Smalltalk 80 How to use Model View Controller 2 hlngcaknnidmirupaebbkhxng MVC aeykyxyxxkmahlayaebbdwykn twxyangechn Model View Presenter thuknaipichin NET Framework 3 aet MVC aebbmatrthankyngkhngepnthiniymxyu Overview aekikh aemwa MVC camirupaebbtangknip aet control flow mncaepndngni phuichthakartxbot kb user interface inthangidthanghnung yktwxyangechn kdpumemas khxnothrlelxr cdkar event thiekidkhuncak user interface mkcaody handler thiidsrangexaiw hrux callback aelwaeplng event epnkarkrathakhxngphuichthiehmaasm sungekhaiciddwyomedl khxnothrlelxr aecngomedlthungkarkrathakhxngphuich echnxaccathaihekidkarepliynsthanainomedl yktwxyangechn khxnothrlelxrprbprungtakrasinkhakhxngphuich 4 wiw thamomedlephuxthicasrangkaraesdngphlthiehmaasmaekphuich yktwxyangechn wiwaesdngraykarsinkhaintakrasinkha odywiwidkhxmulmacakomedl inbangrupaebbkhxng MVC khxnothrlelxrxaccaihkhasngaekwiwdwy hruxbangrupaebb wiwcaidrbkarbxkcakomedlthungkarepliynaeplng user interface rxkarptismphnthcakphuich sungcaklbekhasuwngcrinkhnaerkinbangrupaebbkhxng MVC echnin W3C XForms ichhlkkarkhxng dependency graph ephuxihekidkarprbprungwiwodyxtionmti emuxkhxmulinomedlepliynaeplngdwykaraeykomedlaelawiwxxkcakkn MVC chwyihkhwamsbsxninkarxxkaebbldlng aelaephimkhwamkhlxngtwaelakarnaokhdklbmaichihm Code reuse xangxing aekikh Trygve M H Reenskaug MVC XEROX PARC 1978 79 How to use Model View Controller MVC Boodhoo Jean Paul August 2006 Design Patterns Model View Presenter subkhnemux 2009 07 07 Complex controllers are often structured using the command pattern to encapsulate actions and simplify extension bthkhwamekiywkbkhxmphiwetxr xupkrntang hruxekhruxkhayniyngepnokhrng khunsamarthchwywikiphiediyidodyephimkhxmul duephimthi sthaniyxy ethkhonolyisarsnethsekhathungcak https th wikipedia org w index php title omedl wiw khxnothrlelxr amp oldid 5273146, wikipedia, วิกิ หนังสือ, หนังสือ, ห้องสมุด,

บทความ

, อ่าน, ดาวน์โหลด, ฟรี, ดาวน์โหลดฟรี, mp3, วิดีโอ, mp4, 3gp, jpg, jpeg, gif, png, รูปภาพ, เพลง, เพลง, หนัง, หนังสือ, เกม, เกม