MVC ఆర్కిటెక్చర్ పరిచయం
ప్రతి ప్రోగ్రామర్కు తెలిసిన అత్యంత ప్రజాదరణ పొందిన అప్లికేషన్ ఆర్కిటెక్చర్ MVC . MVC అంటే మోడల్-వ్యూ-కంట్రోలర్ .
ఇది అప్లికేషన్ కాంపోనెంట్ల ఆర్కిటెక్చర్ వలె అప్లికేషన్ల నిర్మాణం కాదు, కానీ మేము ఈ సూక్ష్మభేదాన్ని తరువాత తిరిగి చేస్తాము. MVC అంటే ఏమిటి?
MVC అనేది అప్లికేషన్ డేటా మరియు కంట్రోల్ లాజిక్లను మూడు వేర్వేరు భాగాలుగా- మోడల్, వ్యూ మరియు కంట్రోలర్గా విభజించడానికి ఒక పథకం , తద్వారా ప్రతి భాగాన్ని స్వతంత్రంగా సవరించవచ్చు.
- మోడల్ (మోడల్) డేటాను అందిస్తుంది మరియు దాని స్థితిని మార్చడం ద్వారా కంట్రోలర్ ఆదేశాలకు ప్రతిస్పందిస్తుంది.
- మోడల్ మార్పులకు ప్రతిస్పందనగా వినియోగదారుకు మోడల్ డేటాను ప్రదర్శించడానికి వీక్షణ బాధ్యత వహిస్తుంది.
- కంట్రోలర్ (కంట్రోలర్) వినియోగదారు యొక్క చర్యలను వివరిస్తుంది, మార్పుల అవసరాన్ని మోడల్కు తెలియజేస్తుంది.
ఈ మోడల్ 1978 (!) సంవత్సరంలో తిరిగి కనుగొనబడింది. అవును, సరైన సాఫ్ట్వేర్ ఆర్కిటెక్చర్తో సమస్యలు 50 సంవత్సరాల క్రితం సంబంధితంగా ఉన్నాయి. అసలు ఈ నమూనా రేఖాచిత్రం ద్వారా ఎలా వివరించబడిందో ఇక్కడ ఉంది:
మోడల్ వారితో పని చేయడానికి డేటా మరియు పద్ధతులను అందిస్తుంది: డేటాబేస్కు ప్రశ్నలు, ఖచ్చితత్వం కోసం తనిఖీ చేయడం. మోడల్ వీక్షణ నుండి స్వతంత్రంగా ఉంటుంది (డేటాను ఎలా అందించాలో తెలియదు) మరియు కంట్రోలర్ (యూజర్ ఇంటరాక్షన్ పాయింట్లను కలిగి లేదు), డేటాకు యాక్సెస్ మరియు నిర్వహణను అందిస్తుంది.
మోడల్ దాని స్థితిని మార్చడం ద్వారా అభ్యర్థనలకు ప్రతిస్పందించే విధంగా నిర్మించబడింది మరియు “పరిశీలకుల” నోటిఫికేషన్ను నిర్మించవచ్చు. మోడల్, దృశ్యమాన ప్రాతినిధ్యం నుండి స్వతంత్రత కారణంగా, ఒక "నమూనా" కోసం అనేక విభిన్న ప్రాతినిధ్యాలను కలిగి ఉంటుంది .
మోడల్ నుండి అవసరమైన డేటాను పొందడం మరియు వినియోగదారుకు పంపడం కోసం వీక్షణ బాధ్యత వహిస్తుంది. వీక్షణ వినియోగదారు ఇన్పుట్ను ప్రాసెస్ చేయదు.
కంట్రోలర్ వినియోగదారు మరియు సిస్టమ్ మధ్య "కమ్యూనికేషన్" అందిస్తుంది. వినియోగదారు నుండి సిస్టమ్కు డేటాను నియంత్రిస్తుంది మరియు నిర్దేశిస్తుంది మరియు దీనికి విరుద్ధంగా. కావలసిన చర్యను అమలు చేయడానికి మోడల్ మరియు వీక్షణను ఉపయోగిస్తుంది.
దశాబ్దాలుగా ఈ మోడల్ కొద్దిగా అభివృద్ధి చెందిందనే వాస్తవంతో కొంత ఇబ్బంది ఉంది. అంటే, పేరు అలాగే ఉంది, కానీ భాగాల ప్రయోజనం మారడం ప్రారంభమైంది.
వెబ్లో MVC ఆర్కిటెక్చర్
MVC డిజైన్ నమూనా వెనుక ఉన్న ఆలోచన చాలా సులభం: మేము మా అప్లికేషన్లలోని విభిన్న ప్రవర్తనలకు సంబంధించిన బాధ్యతను స్పష్టంగా వేరు చేయాలి:
మోడల్- డేటా ప్రాసెసింగ్ మరియు అప్లికేషన్ లాజిక్.
వీక్షణ— ఏదైనా మద్దతు ఉన్న ఫార్మాట్లో వినియోగదారుకు డేటాను అందించడం.
కంట్రోలర్- వినియోగదారు అభ్యర్థనలను ప్రాసెస్ చేయడం మరియు తగిన వనరులను కాల్ చేయడం.
అప్లికేషన్ మూడు ప్రధాన భాగాలుగా విభజించబడింది, వీటిలో ప్రతి ఒక్కటి వేర్వేరు పనులకు బాధ్యత వహిస్తుంది. ఒక ఉదాహరణను ఉపయోగించి క్లయింట్-సర్వర్ అప్లికేషన్ యొక్క భాగాలను నిశితంగా పరిశీలిద్దాం.
కంట్రోలర్
వినియోగదారు బ్రౌజర్లోని పేజీలోని వివిధ అంశాలపై క్లిక్ చేస్తారు, దీని ఫలితంగా బ్రౌజర్ వివిధ HTTP అభ్యర్థనలను పంపుతుంది: GET, POST లేదా ఇతరాలు. కంట్రోలర్ పేజీ లోపల పని చేసే బ్రౌజర్ మరియు JS కోడ్ను చేర్చవచ్చు.
ఈ సందర్భంలో నియంత్రిక యొక్క ప్రధాన విధి అవసరమైన వస్తువులపై పద్ధతులను కాల్ చేయడం, వినియోగదారు పేర్కొన్న పనులను నిర్వహించడానికి వనరులకు ప్రాప్యతను నిర్వహించడం. సాధారణంగా, కంట్రోలర్ పని కోసం తగిన మోడల్ను పిలుస్తుంది మరియు తగిన వీక్షణను ఎంచుకుంటుంది.
మోడల్
విస్తృత కోణంలో మోడల్ అనేది డేటాతో పని చేయడానికి ఉపయోగించే డేటా మరియు నియమాలు - అవి కలిసి అప్లికేషన్ యొక్క వ్యాపార తర్కాన్ని రూపొందిస్తాయి. అప్లికేషన్ రూపకల్పన ఎల్లప్పుడూ అది పనిచేసే వస్తువుల నమూనాలను రూపొందించడంతో ప్రారంభమవుతుంది.
మనకు పుస్తకాలను విక్రయించే ఆన్లైన్ స్టోర్ ఉందని అనుకుందాం, అప్పుడు ఒక వ్యక్తి కేవలం అప్లికేషన్ యూజర్ మాత్రమేనా లేదా పుస్తక రచయిత కూడానా? మోడల్ రూపకల్పన సమయంలో ఈ ముఖ్యమైన ప్రశ్నలను తప్పక పరిష్కరించాలి.
ఇంకా నియమాల సెట్లు ఉన్నాయి: ఏమి చేయవచ్చు, ఏమి చేయలేము, ఏ డేటా సెట్లు ఆమోదయోగ్యమైనవి మరియు ఏవి కావు. రచయిత లేకుండా పుస్తకం ఉంటుందా? మరియు పుస్తకాలు లేని రచయిత? వినియోగదారు పుట్టిన తేదీ 300వ సంవత్సరంలో ఉండవచ్చా.
మోడల్ వినియోగదారు అభ్యర్థించిన డేటా (సందేశం, పుస్తక పేజీ, చిత్రాలు మొదలైనవి) యొక్క వీక్షణను కంట్రోలర్కు అందిస్తుంది. డేటా మోడల్ని మనం యూజర్కు ఎలా ప్రెజెంట్ చేయాలనుకున్నా అదే విధంగా ఉంటుంది. కాబట్టి, మేము డేటాను ప్రదర్శించడానికి అందుబాటులో ఉన్న ఏదైనా వీక్షణను ఎంచుకుంటాము.
మోడల్ మా అప్లికేషన్ లాజిక్లో చాలా ముఖ్యమైన భాగాన్ని కలిగి ఉంది , మేము వ్యవహరిస్తున్న సమస్యను పరిష్కరించే లాజిక్ (ఫోరమ్, షాప్, బ్యాంక్ మొదలైనవి). కంట్రోలర్ అప్లికేషన్ కోసం ఎక్కువగా సంస్థాగత తర్కాన్ని కలిగి ఉంటుంది (మీ ప్రాజెక్ట్ మేనేజర్ వలె).
చూడండి
మోడల్ నుండి స్వీకరించబడిన డేటాను సూచించడానికి వీక్షణ వివిధ మార్గాలను అందిస్తుంది. ఇది డేటాతో నిండిన టెంప్లేట్ కావచ్చు. అనేక విభిన్న వీక్షణలు ఉండవచ్చు మరియు ప్రస్తుత పరిస్థితికి ఏది ఉత్తమమో కంట్రోలర్ ఎంచుకుంటుంది.
వెబ్ అప్లికేషన్ సాధారణంగా కంట్రోలర్లు, మోడల్లు మరియు వీక్షణల సమితిని కలిగి ఉంటుంది. కంట్రోలర్ బ్యాకెండ్లో మాత్రమే ఉంటుంది, అయితే దాని లాజిక్ ఫ్రంటెండ్లో కూడా విస్తరించినప్పుడు అనేక కంట్రోలర్ల యొక్క వైవిధ్యం కూడా ఉండవచ్చు. ఈ విధానానికి మంచి ఉదాహరణ ఏదైనా మొబైల్ అప్లికేషన్.
వెబ్లో MVC ఉదాహరణ
మీరు పుస్తకాలను విక్రయించే ఆన్లైన్ స్టోర్ను అభివృద్ధి చేయాలని అనుకుందాం. వినియోగదారు ఈ క్రింది చర్యలను చేయవచ్చు: పుస్తకాలను వీక్షించండి, నమోదు చేయండి, కొనుగోలు చేయండి, ప్రస్తుత ఆర్డర్కు వస్తువులను జోడించండి, అతను ఇష్టపడే పుస్తకాలను గుర్తించి వాటిని కొనుగోలు చేయండి.
మీ అప్లికేషన్ అన్ని వ్యాపార లాజిక్లకు బాధ్యత వహించే మోడల్ను కలిగి ఉండాలి . మీకు అన్ని వినియోగదారు చర్యలను ప్రాసెస్ చేసే కంట్రోలర్ కూడా అవసరం మరియు వాటిని బిజినెస్ లాజిక్ నుండి మెథడ్ కాల్లుగా మారుస్తుంది. అయినప్పటికీ, ఒక నియంత్రిక పద్ధతి అనేక విభిన్న నమూనా పద్ధతులను పిలుస్తుంది.
మీకు వీక్షణల సెట్లు కూడా అవసరం: పుస్తకాల జాబితా, ఒక పుస్తకం గురించిన సమాచారం, షాపింగ్ కార్ట్, ఆర్డర్ల జాబితా. వెబ్ అప్లికేషన్ యొక్క ప్రతి పేజీ వాస్తవానికి ఒక ప్రత్యేక వీక్షణ, ఇది వినియోగదారుకు మోడల్ యొక్క నిర్దిష్ట అంశాన్ని ప్రదర్శిస్తుంది.
టైటిల్లను వీక్షించడానికి వినియోగదారుడు బుక్స్టోర్ సిఫార్సు చేసిన పుస్తకాల జాబితాను తెరిస్తే ఏమి జరుగుతుందో చూద్దాం. చర్యల మొత్తం క్రమాన్ని 6 దశల రూపంలో వివరించవచ్చు:
దశలు:
- వినియోగదారు "సిఫార్సు చేయబడిన" లింక్పై క్లిక్ చేస్తారు మరియు బ్రౌజర్ /పుస్తకాలు/సిఫార్సులకు అభ్యర్థనను పంపుతుంది .
- కంట్రోలర్ అభ్యర్థనను తనిఖీ చేస్తుంది : వినియోగదారు తప్పనిసరిగా లాగిన్ అయి ఉండాలి. లేదా మేము లాగిన్ కాని వినియోగదారుల కోసం పుస్తకాల సేకరణలను కలిగి ఉండాలి. కంట్రోలర్ అప్పుడు మోడల్కి కాల్ చేసి, వినియోగదారు Nకి సిఫార్సు చేయబడిన పుస్తకాల జాబితాను తిరిగి ఇవ్వమని అడుగుతుంది.
- మోడల్ డేటాబేస్ను యాక్సెస్ చేస్తుంది, అక్కడ నుండి పుస్తకాల గురించి సమాచారాన్ని తిరిగి పొందుతుంది: ప్రస్తుతం జనాదరణ పొందిన పుస్తకాలు, వినియోగదారు కొనుగోలు చేసిన పుస్తకాలు, అతని స్నేహితులు కొనుగోలు చేసిన పుస్తకాలు, అతని కోరికల జాబితా నుండి పుస్తకాలు. ఈ డేటా ఆధారంగా, మోడల్ 10 సిఫార్సు చేసిన పుస్తకాల జాబితాను రూపొందించి, వాటిని కంట్రోలర్కు అందిస్తుంది.
- కంట్రోలర్ సిఫార్సు చేయబడిన పుస్తకాల జాబితాను అందుకుంటుంది మరియు దానిని చూస్తుంది. ఈ దశలో, నియంత్రిక నిర్ణయాలు తీసుకుంటుంది! కొన్ని పుస్తకాలు ఉంటే లేదా జాబితా పూర్తిగా ఖాళీగా ఉంటే, అది అన్లాగ్ చేయని వినియోగదారు కోసం పుస్తకాల జాబితాను అభ్యర్థిస్తుంది. ప్రస్తుతం ప్రమోషన్ జరుగుతున్నట్లయితే, కంట్రోలర్ ప్రచార పుస్తకాలను జాబితాకు జోడించవచ్చు.
- వినియోగదారుకు ఏ పేజీని చూపించాలో కంట్రోలర్ నిర్ణయిస్తుంది. ఇది లోపం పేజీ కావచ్చు, పుస్తకాల జాబితాతో కూడిన పేజీ కావచ్చు, వినియోగదారు మిలియన్వ సందర్శకుడిగా మారినందుకు అభినందించే పేజీ కావచ్చు.
- సర్వర్ క్లయింట్కు కంట్రోలర్ ఎంచుకున్న పేజీ ( వీక్షణ ) ఇస్తుంది. ఇది అవసరమైన డేటా (యూజర్ పేరు, పుస్తకాల జాబితా)తో నిండి ఉంటుంది మరియు క్లయింట్కు వెళుతుంది.
- క్లయింట్ పేజీని స్వీకరిస్తుంది మరియు దానిని వినియోగదారుకు ప్రదర్శిస్తుంది.
ఈ విధానం యొక్క ప్రయోజనాలు ఏమిటి?
ప్రెజెంటేషన్ లాజిక్ (యూజర్ ఇంటర్ఫేస్) మరియు అప్లికేషన్ లాజిక్ (బ్యాకెండ్) యొక్క స్పష్టమైన విభజన MVC కాన్సెప్ట్ను ఉపయోగించడం ద్వారా మనకు లభించే అత్యంత స్పష్టమైన ప్రయోజనం.
రెండవ ప్రయోజనం సర్వర్ భాగాన్ని రెండుగా విభజించడం: స్మార్ట్ మోడల్ ( ఎగ్జిక్యూటర్ ) మరియు కంట్రోలర్ ( నిర్ణయ కేంద్రం ).
మునుపటి ఉదాహరణలో, నియంత్రిక మోడల్ నుండి సిఫార్సు చేయబడిన పుస్తకాల యొక్క ఖాళీ జాబితాను స్వీకరించి, దానితో ఏమి చేయాలో నిర్ణయించే క్షణం ఉంది. సిద్ధాంతపరంగా, ఈ తర్కాన్ని నేరుగా మోడల్లో ఉంచవచ్చు.
ముందుగా, సిఫార్సు చేయబడిన పుస్తకాలను అభ్యర్థిస్తున్నప్పుడు, జాబితా ఖాళీగా ఉంటే ఏమి చేయాలో మోడల్ నిర్ణయిస్తుంది. అప్పుడు నేను అదే స్థలంలో కోడ్ని జోడించాలి, ఇప్పుడు ప్రమోషన్ జరుగుతుంటే ఏమి చేయాలి, ఆపై మరిన్ని విభిన్న ఎంపికలు.
ప్రమోషన్ లేకుండా వినియోగదారు పేజీ ఎలా ఉంటుందో స్టోర్ అడ్మిన్ చూడాలనుకుంటున్నారని లేదా దీనికి విరుద్ధంగా, ఇప్పుడు ప్రమోషన్ లేదు, కానీ భవిష్యత్తులో ప్రమోషన్ ఎలా ప్రదర్శించబడుతుందో చూడాలని అతను కోరుతున్నాడు. మరియు దీనికి ఎటువంటి పద్ధతులు లేవు. అందువల్ల, వ్యాపార తర్కం (మోడల్) నుండి నిర్ణయ కేంద్రం (కంట్రోలర్) వేరు చేయాలని నిర్ణయించబడింది.
అప్లికేషన్ లాజిక్ నుండి వీక్షణలను వేరు చేయడంతో పాటు, MVC కాన్సెప్ట్ పెద్ద అప్లికేషన్ల సంక్లిష్టతను బాగా తగ్గిస్తుంది. కోడ్ మరింత నిర్మాణాత్మకంగా ఉంది, పరిష్కారాలను నిర్వహించడం, పరీక్షించడం మరియు తిరిగి ఉపయోగించడం సులభతరం చేస్తుంది.
MVC భావనను అర్థం చేసుకోవడం, డెవలపర్గా మీరు పుస్తకాల జాబితాను క్రమబద్ధీకరించడానికి ఎక్కడ జోడించాలో తెలుసుకుంటారు:
- డేటాబేస్ ప్రశ్న స్థాయిలో.
- వ్యాపార తర్కం (మోడల్) స్థాయిలో.
- వ్యాపార లాజిక్ స్థాయిలో (కంట్రోలర్).
- వీక్షణలో - క్లయింట్ వైపు.
మరియు ఇది అలంకారిక ప్రశ్న కాదు. ప్రస్తుతం, మీరు పుస్తకాల జాబితాను క్రమబద్ధీకరించడానికి కోడ్ను ఎక్కడ మరియు ఎందుకు జోడించాలి అనే దాని గురించి ఆలోచించండి.
క్లాసిక్ MVC మోడల్
MVC భాగాల మధ్య పరస్పర చర్య వెబ్ అప్లికేషన్లు మరియు మొబైల్ అప్లికేషన్లలో విభిన్నంగా అమలు చేయబడుతుంది. ఎందుకంటే వెబ్ యాప్ స్వల్పకాలికంగా ఉంటుంది, ఒక వినియోగదారు అభ్యర్థనను ప్రాసెస్ చేస్తుంది మరియు నిష్క్రమిస్తుంది, అయితే మొబైల్ యాప్ పునఃప్రారంభించకుండానే అనేక అభ్యర్థనలను ప్రాసెస్ చేస్తుంది.
వెబ్ అప్లికేషన్లు సాధారణంగా "పాసివ్" మోడల్ను ఉపయోగిస్తాయి, మొబైల్ అప్లికేషన్లు "యాక్టివ్" మోడల్ను ఉపయోగిస్తాయి. క్రియాశీల మోడల్, నిష్క్రియాత్మకంగా కాకుండా, మీరు సభ్యత్వాన్ని పొందేందుకు మరియు దానిలో మార్పుల నోటిఫికేషన్లను స్వీకరించడానికి అనుమతిస్తుంది. వెబ్ అప్లికేషన్లకు ఇది అవసరం లేదు.
వివిధ మోడళ్లలోని భాగాల పరస్పర చర్య ఇలా కనిపిస్తుంది:
మొబైల్ అప్లికేషన్లు (యాక్టివ్ మోడల్) ఈవెంట్లను మరియు ఈవెంట్ సబ్స్క్రిప్షన్ మెకానిజంను చురుకుగా ఉపయోగిస్తాయి . ఈ విధానంతో, వీక్షణ ( వీక్షణ ) మోడల్ మార్పులకు సభ్యత్వాన్ని పొందుతుంది. అప్పుడు, ఏదైనా సంఘటన జరిగినప్పుడు (ఉదాహరణకు, వినియోగదారు ఒక బటన్ను క్లిక్ చేస్తే), కంట్రోలర్ని అంటారు . ఇది డేటాను మార్చడానికి మోడల్కు ఆదేశాన్ని కూడా ఇస్తుంది .
కొంత డేటా మారినట్లయితే, మోడల్ ఈ డేటాను మార్చడం గురించి ఈవెంట్ను రూపొందిస్తుంది. ఈ ఈవెంట్కు సభ్యత్వం పొందిన అన్ని వీక్షణలు (దీని కోసం ఈ నిర్దిష్ట డేటాను మార్చడం ముఖ్యం) ఈ ఈవెంట్ను స్వీకరించి, వాటి ఇంటర్ఫేస్లో డేటాను నవీకరించండి.
వెబ్ అప్లికేషన్లలో, విషయాలు కొద్దిగా భిన్నంగా నిర్వహించబడతాయి. ప్రధాన సాంకేతిక వ్యత్యాసం ఏమిటంటే, క్లయింట్ సర్వర్ చొరవతో సర్వర్ వైపు సందేశాలను స్వీకరించలేరు .
అందువల్ల, వెబ్ అప్లికేషన్లోని కంట్రోలర్ సాధారణంగా వీక్షణకు ఎటువంటి సందేశాలను పంపదు, కానీ క్లయింట్కి కొత్త పేజీని ఇస్తుంది, ఇది సాంకేతికంగా కొత్త వీక్షణ లేదా కొత్త క్లయింట్ అప్లికేషన్ (ఒక పేజీకి మరొకటి గురించి ఏమీ తెలియకపోతే) .
ప్రస్తుతం, ఈ సమస్య క్రింది విధానాలను ఉపయోగించి పాక్షికంగా పరిష్కరించబడుతుంది:
- ముఖ్యమైన డేటాకు (నిమిషానికి ఒకసారి లేదా అంతకంటే ఎక్కువ) మార్పుల కోసం సర్వర్ను క్రమం తప్పకుండా పోలింగ్ చేస్తుంది.
- వెబ్సాకెట్లు క్లయింట్ను సర్వర్ సందేశాలకు సబ్స్క్రయిబ్ చేయడానికి అనుమతిస్తాయి.
- సర్వర్ వైపు నుండి వెబ్ పుష్ నోటిఫికేషన్లు.
- HTTP/2 ప్రోటోకాల్ క్లయింట్కు సందేశాలను పంపడాన్ని ప్రారంభించడానికి సర్వర్ను అనుమతిస్తుంది.
GO TO FULL VERSION