മോഡൽ–വ്യൂ–കൺട്രോളർ
മോഡൽ-വ്യൂ-കൺട്രോളറിൻ്റെ (MVC) ഡിസൈൻ പാറ്റേണിൻ്റെ പരസ്പരബന്ധിതമായ മൂന്ന് ഘടകങ്ങൾ ഇവയാണ്[1]:
- മോഡൽ: ആപ്ലിക്കേഷൻ്റെ ഡാറ്റയും ബിസിനസ് ലോജിക്കും നിയന്ത്രിക്കുന്നു. ഇത് ഡാറ്റാബേസുമായി സംവദിക്കുകയും ഡാറ്റയുമായി ബന്ധപ്പെട്ട പ്രവർത്തനം കൈകാര്യം ചെയ്യുകയും ചെയ്യുന്നു.
- വ്യൂ: ഡാറ്റയും യൂസർ ഇൻ്റർഫേസും പ്രദർശിപ്പിക്കുന്നു. മോഡലിൻ്റെ ഡാറ്റ ഉപയോക്താവിന് വായിക്കാവുന്നതും സംവേദനാത്മകവുമായ ഫോർമാറ്റിൽ അവതരിപ്പിക്കുക എന്നത് ഇതിന്റെ ഉത്തരവാദിത്വമാണ്.
- കൺട്രോളർ: യൂസർ ഇൻപുട്ട് കൈകാര്യം ചെയ്യുന്നു, മോഡലുമായി സംവദിക്കുന്നു, വ്യൂ അപ്ഡേറ്റ് ചെയ്യുന്നു. ഇത് മൂലം ആപ്ലിക്കേഷൻ്റെ ഒഴുക്ക് നിയന്ത്രിക്കുകയും ഉപയോക്താക്കളിൽ നിന്ന് ഇൻപുട്ട് എടുക്കുകയും മോഡലിന് നിർദ്ദേശം നൽകുകയും ആ ഇൻപുട്ടിനെ അടിസ്ഥാനമാക്കിയുള്ള പ്രവർത്തനങ്ങൾ നടത്തുകയും ചെയ്യുന്നു[2][3].
ഡെസ്ക്ടോപ്പ് ആപ്പുകൾക്കാണ് ഈ ഡിസൈൻ പാറ്റേൺ ആദ്യം ഉപയോഗിച്ചത് എന്നാൽ ഇപ്പോൾ വെബ് ഡെവലപ്മെൻ്റിൽ ഇത് സാധാരണമാണ്. ലാറവേൽ, ജാങ്കോ(Django), റൂബി ഓൺ റെയിൽസ് തുടങ്ങിയ ജനപ്രിയ ചട്ടക്കൂടുകൾ കോഡിംഗ് കൂടുതൽ സംഘടിതവും കാര്യക്ഷമവുമാക്കാൻ എംവിസി ഉപയോഗിക്കുന്നു[4].
ചരിത്രം
[തിരുത്തുക]സോഫ്റ്റ്വെയറിനെ മൂന്ന് ഭാഗങ്ങളായി വിഭജിക്കുന്നതിനുള്ള ആദ്യകാല രീതിയായിരുന്നു എംവിസി(മോഡൽ-വ്യൂ-കൺട്രോളർ): ഡാറ്റ കൈകാര്യം ചെയ്യുക (മോഡൽ), യൂസർ ഇൻ്റർഫേസ് കാണിക്കുക (വ്യൂ), ഉപയോക്തൃ പ്രവർത്തനങ്ങൾ പ്രോസസ്സ് ചെയ്യുക (കൺട്രോളർ). ആദ്യകാല ഗ്രാഫിക്കൽ യൂസർ ഇൻ്റർഫേസുകൾ നിർമ്മിക്കുന്നതിനും നിയന്ത്രിക്കുന്നതിനും ഇത് സഹായിച്ചു. എംവിസിയുടെ ഓരോ ഭാഗത്തിനും വ്യക്തമായ പങ്കുണ്ട് ഇത് മൂലം സോഫ്റ്റ്വയറിനെക്കുറിച്ച് കൃത്യമായി മനസ്സിലാക്കുന്നതിന് സഹായിക്കുന്നു[5].
1970-കളുടെ അവസാനത്തിൽ സെറോക്സ് പാർക്കിൽ സ്മോൾടോക്-79 പ്രോജക്ടിനായി ജോലി ചെയ്യുന്നതിനിടെയാണ് ട്രിഗ്വ് റീൻസ്കാഗ് എംവിസി പാറ്റേൺ സൃഷ്ടിച്ചത്. ധാരാളം ഡാറ്റ ഉപയോഗിച്ച് ഉപയോക്താക്കൾക്ക് പ്രോഗ്രാമുകൾ ഓർഗനൈസുചെയ്യുന്നതിനുള്ള ഒരു ലളിതമായ മാർഗം കണ്ടെത്തണമെന്ന് അദ്ദേഹം ആഗ്രഹിച്ചു. അദ്ദേഹത്തിൻ്റെ ആദ്യ രൂപകൽപ്പനയ്ക്ക് നാല് ഭാഗങ്ങൾ ഉണ്ടായിരുന്നു: മോഡൽ, വ്യൂ, തിങ്, എഡിറ്റർ. മറ്റ് ഡെവലപ്പർമാരുമായി സംസാരിച്ചതിന് ശേഷം, നമ്മൾ ഇന്ന് ഉപയോഗിക്കുന്ന മോഡൽ-വ്യൂ-കൺട്രോളർ ഘടനയിലേക്ക് അവർ അതിനെ മാറ്റി[6][7][8]:{{{1}}}.
എംവിസി ഡിസൈനിൽ, മോഡൽ പ്രോഗ്രാമിൻ്റെ ഡാറ്റ കൈകാര്യം ചെയ്യുന്നു, അതേസമയം വ്യൂ ആ ഡാറ്റ ഉപയോക്താവിന് കാണിച്ച് കൊടുക്കുകയും ഉപയോക്തൃ പ്രവർത്തനങ്ങൾ മോഡലിലേക്ക് തിരികെ അയയ്ക്കുകയും ചെയ്യുന്നു. കൺട്രോളർ സ്ക്രീനിൽ ഒന്നിലധികം കാഴ്ചകൾ(views) ഓർഗനൈസ് ചെയ്യുകയും യൂസർ ഇൻപുട്ട് നിയന്ത്രിക്കുകയും ചെയ്യുന്നു, അത് ശരിയായ സ്ഥലത്തേക്ക് അയയ്ക്കുന്നുവെന്ന് ഉറപ്പാക്കുന്നു. കൂടാതെ, കാഴ്ചകൾ പരിഷ്ക്കരിക്കുന്നതിന് ഉപയോഗിക്കുന്ന ഒരു പ്രത്യേക തരം കൺട്രോളറാണ് എഡിറ്റർ. ഡാറ്റ, ഡിസ്പ്ലേ, ഉപയോക്താവിന്റെ ഇടപെടലുകൾ എന്നിവ വേർതിരിച്ച് പ്രോഗ്രാം ഓർഗനൈസുചെയ്യാൻ ഈ ഘടന സഹായിക്കുന്നു.
സ്മോൾടോക്ക്-80-ൽ, എംവിസി സിസ്റ്റം മെച്ചപ്പെടുത്തിയ സോഫ്റ്റ്വയർ വെർഷനാണ്. ബട്ടണുകൾ പോലെയുള്ള സാധാരണ വിജറ്റുകൾക്കുള്ള റെഡിമെയ്ഡ് പതിപ്പുകൾക്കൊപ്പം വ്യൂ, കൺട്രോളർ എന്നിവയ്ക്കായുള്ള ടെംപ്ലേറ്റുകൾ ഇത് നൽകുന്നു. വ്യൂ ഉപയോക്താക്കൾക്ക് വിവരങ്ങൾ എന്തൊക്കെയാണെന്ന് കാണിക്കുന്നു, ഒപ്പം കൺട്രോളർ ഉപയോക്താക്കളെ അതുമായി സംവദിക്കാൻ അനുവദിക്കുന്നു. വ്യൂ ഒരു മോഡ(ഡാറ്റ)ലേക്ക് ലിങ്ക് ചെയ്തിരിക്കുന്നു, എന്നാൽ ആ മോഡൽ എങ്ങനെയായിരിക്കുമെന്ന് പ്രോഗ്രാമർമാർ തീരുമാനിക്കുന്നു. സ്മോൾടോക്ക്-80-ൽ ഒരു എംവിസി ഇൻസ്പെക്ടർ ഉൾപ്പെടുന്നു, ഇത് എളുപ്പത്തിൽ മനസ്സിലാക്കുന്നതിനായി ഡവലപ്പർമാരെ മോഡൽ, വ്യൂ, കൺട്രോളർ എന്നിവ ഒരുമിച്ച് കാണാൻ അനുവദിക്കുന്ന ഒരു ടൂളാണ്[9].
1988-ൽ, സെറോക്സ് പാർക്കിൽ നിന്നുള്ള രണ്ട് മുൻ ജീവനക്കാർ ദി ജേണൽ ഓഫ് ഒബ്ജക്റ്റ് ടെക്നോളജി(JOT)-യിൽ ഒരു ലേഖനം എഴുതി, അത് സ്മോൾടോക്ക്-80 ഡെവലപ്പർമാർക്കുള്ള ഒരു പ്രോഗ്രാമിംഗ് ശൈലിയും മെത്തഡോളജിയുമായി എംവിസിയെ അവതരിപ്പിച്ചു. അവരുടെ പതിപ്പ് യഥാർത്ഥ ആശയത്തിൽ നിന്ന് വ്യത്യസ്തമായിരുന്നു. അവരുടെ എംവിസി പതിപ്പിൽ, സ്ക്രീനിൽ എല്ലാം കാണിക്കുന്നതിന് വ്യൂ ഉപയോഗിക്കുന്നു, കൂടാതെ ഉപയോക്തൃ പ്രവർത്തനങ്ങൾ കൈകാര്യം ചെയ്യുന്നതിന് കൺട്രോളർ തിരശ്ശീലയ്ക്ക് പിന്നിൽ പ്രവർത്തിച്ചു. കൺട്രോളർ ഒന്നോ അതിലധികമോ വ്യൂകൾ കൈകാര്യം ചെയ്യുകയും എല്ലാം സുഗമമായി നടക്കുന്നുണ്ടെന്ന് ഉറപ്പാക്കാൻ ഒരൊറ്റ മോഡൽ (ഡാറ്റ) ഉപയോഗിച്ച് പ്രവർത്തിക്കുകയും ചെയ്തു[10].
എംവിസി പാറ്റേൺ (മോഡൽ–വ്യൂ–കൺട്രോളർ) കാലക്രമേണ മാറി, ഇത് എച്ച്എംവിസി (ഹൈരാർക്കിക്കൽ എംവിസി), എംവിഎ (മോഡൽ–വ്യൂ–അഡാപ്റ്റർ), എംവിപി (മോഡൽ–വ്യൂ–പ്രസൻ്റർ), എംവിവിഎം (മോഡൽ–വ്യൂ–വ്യൂമോഡൽ) എന്നിങ്ങനെയുള്ള പുതിയ പതിപ്പുകളിലേക്ക് നയിച്ചു. ഒരേ അടിസ്ഥാന എംവിസി ആശയം ഉപയോഗിക്കുന്നതിനുള്ള വ്യത്യസ്ത വഴികൾ മാത്രമാണിത്, എന്നാൽ അവ വ്യത്യസ്ത തരത്തിലുള്ള പ്രോഗ്രാമുകൾക്കും സാഹചര്യങ്ങൾക്കും അനുയോജ്യമാണ്[11].
1996-ൽ നെക്സ്റ്റ്(NeXT) വെബ്ഒബജക്ട്സ്(WebObjects) അവതരിപ്പിച്ചതിനുശേഷം എംവിസി (മോഡൽ-വ്യൂ-കൺട്രോളർ) പാറ്റേൺ വെബ് ആപ്ലിക്കേഷനുകളിൽ കൂടുതൽ വ്യാപകമായി ഉപയോഗിച്ചു. വെബ്ഒബജക്ട്സ് പിന്നീട് ജാവയിലേക്ക് പോർട്ട് ചെയ്തപ്പോൾ, അത് ജാവ ഡെവലപ്പർമാർക്കിടയിൽ എംവിസിയെ ജനപ്രിയമാക്കി. സ്പ്രിംഗ്(2002-ൽ പുറത്തിറങ്ങി) പോലുള്ള ചട്ടക്കൂടുകൾ ജാവയും എംവിസിയും തമ്മിലുള്ള ബന്ധം കൂടുതൽ ശക്തിപ്പെടുത്തി.
മാർട്ടിൻ ഫൗളർ എംവിസിയെ വിശദീകരിച്ചു: ഒരു ഉപയോക്താവ് ഒരു അഭ്യർത്ഥന നടത്തുമ്പോൾ, കൺട്രോളർ അത് നേടുകയും, മോഡൽ (ഡാറ്റ കൈകാര്യം ചെയ്യുന്ന) എന്തുചെയ്യണമെന്ന് ചോദിക്കുകയും തുടർന്ന് റിസൾട്ട് ഇതിലേക്ക് അയയ്ക്കുകയും ചെയ്യുന്നു. വ്യൂ (ഇത് ഉപയോക്താവിന് വിവരങ്ങൾ കാണിക്കുന്നു). ഈ രീതിയിൽ, ഓരോ ഭാഗത്തിനും അതിൻ്റേതായ ജോലിയുണ്ട്, കാര്യങ്ങൾ ചിട്ടയോടെ നിലനിൽക്കുകയും ചെയ്യുന്നു. ലളിതമായി പറഞ്ഞാൽ, റൂബി ഓൺ റെയിൽസ് ഇതുപോലെയാണ് പ്രവർത്തിക്കുന്നത്: നിങ്ങൾ ഒരു വെബ് പേജിൽ എന്തെങ്കിലും ക്ലിക്ക് ചെയ്യുമ്പോൾ (വ്യൂ), അത് സെർവറിലേക്ക് ഒരു അഭ്യർത്ഥന അയയ്ക്കുന്നു. സെർവറിന് ഒരു കൺട്രോളർ ഉണ്ട്, അത് മോഡലിൽ നിന്ന് ആവശ്യമായ ഡാറ്റ കണ്ടെത്തുകയും വെബ് പേജിൽ കാണിക്കുന്നതിനായി ആ വിവരങ്ങൾ തിരികെ അയക്കുകയും ചെയ്യുന്നു. ഇത് എല്ലാം ഓർഗനൈസുചെയ്ത് കൈകാര്യം ചെയ്യാൻ എളുപ്പമാക്കുന്നു[12]. ജാംഗോ ഫ്രെയിംവർക്കിൽ(ജൂലൈ 2005-ൽ രൂപംകൊണ്ടു, പൈത്തൺ പ്രോഗ്രാമിംഗ് ഭാഷയിൽ പ്രോഗ്രാം തയ്യാറാക്കുന്നു), വ്യൂ മോഡലിൽ (ഡാറ്റാബേസ് കൈകാര്യം ചെയ്യുന്ന) നിന്ന് ഡാറ്റ നേടുന്നു, തുടർന്ന് ആ ഡാറ്റ ഒരു ടെംപ്ലേറ്റിലേക്ക് കൈമാറുന്നു. ഒരു വെബ്പേജ് പോലെ ഉപയോക്താവിന് വിവരങ്ങൾ പ്രദർശിപ്പിക്കുന്നത് ടെംപ്ലേറ്റ് ആണ്. ഈ സമീപനത്തെ "മോഡൽ-ടെംപ്ലേറ്റ്-വ്യൂ" (MTV) എന്ന് വിളിക്കുന്നു, എന്നാൽ എംവിസി പാറ്റേണിന് സമാനമായി പ്രവർത്തിക്കുന്നു[13]. റെയിൽസും ജാങ്കോയും വെബ് ഡെവലപ്മെൻ്റ് വേഗത്തിലും കാര്യക്ഷമമായും പ്രവർത്തിക്കുന്നതിൽ ശ്രദ്ധ കേന്ദ്രീകരിച്ചു, ഡെവലപ്പർമാരെ വേഗത്തിൽ ആപ്ലിക്കേഷനുകൾ സൃഷ്ടിക്കാൻ അനുവദിക്കുന്നു. ഇത് എംവിസി പാറ്റേണിൻ്റെ ഉപയോഗം വൻകിട കമ്പനികൾക്കപ്പുറത്തേക്കും ചെറിയ പ്രോജക്ടുകളിലേക്കും സ്റ്റാർട്ടപ്പുകളിലേക്കും വ്യാപിപ്പിക്കാൻ സഹായിച്ചു.
അവലംബം
[തിരുത്തുക]- ↑ "The Principles of Clean Architecture by Uncle Bob Martin". YouTube. 15 December 2015.
- ↑ Reenskaug, Trygve; Coplien, James O. (20 മാർച്ച് 2009). "The DCI Architecture: A New Vision of Object-Oriented Programming". Artima Developer. Archived from the original on 23 മാർച്ച് 2009. Retrieved 3 ഓഗസ്റ്റ് 2019.
More deeply, the framework exists to separate the representation of information from user interaction.
- ↑ Burbeck (1992): "... the user input, the modeling of the external world, and the visual feedback to the user are explicitly separated and handled by three types of object."
- ↑ Davis, Ian. "What Are The Benefits of MVC?". Internet Alchemy. Retrieved 2016-11-29.
- ↑ Model–View–Controller History. C2.com (2012-05-11). Retrieved on 2013-12-09.
- ↑ Notes and Historical documents from Trygve Reenskaug, inventor of MVC.
- ↑ "A note on DynaBook requirements", Trygve Reenskaug, 22 March 1979, SysReq.pdf.
- ↑ Fowler, Martin (2003). Patterns of Enterprise Application Architecture. Pearson Education, Inc. ISBN 0-321-12742-0.
- ↑ Goldberg, Adele (1984). Smalltalk-80: The Interactive Programming Environment. Addison-Wesley. ISBN 0-201-11372-4.
- ↑ Krasner, Glenn E.; Pope, Stephen T. (Aug–Sep 1988). "A cookbook for using the model–view controller user interface paradigm in Smalltalk-80". The Journal of Object Technology. 1 (3). SIGS Publications: 26–49. Also published as "A Description of the Model–View–Controller User Interface Paradigm in the Smalltalk-80 System" (Report), ParcPlace Systems; Retrieved 2012-06-05.
- ↑ The evolution of MVC and other UI architectures from Martin Fowler.
- ↑ "Ruby on Rails Guides". Retrieved March 19, 2022.
- ↑ "Django FAQ: Django appears to be a MVC framework, but you call the Controller the "view", and the View the "template". How come you don't use the standard names?". Retrieved March 19, 2022.