එම්වීපී සහ එම්වීසී යනු කුමක්ද සහ වෙනස කුමක්ද?


2140

බොහෝ මෙවලම් මඟින් ඔබව දිරිමත් කරන RAD (ඇදගෙන යාම සහ වින්‍යාස කිරීම) ක්‍රමයෙන් ඔබ්බට බලන විට, ආදර්ශ-දර්ශන-පාලක , ආදර්ශ-දර්ශන-ඉදිරිපත් කරන්නා සහ ආදර්ශ-දර්ශන-දර්ශන මොඩලය යනුවෙන් හැඳින්වෙන මෝස්තර රටා තුනක් ඔබට දැකගත හැකිය . මගේ ප්‍රශ්නයට කොටස් තුනක් ඇත:

  1. මෙම රටාවන් ආමන්ත්‍රණය කරන ගැටළු මොනවාද?
  2. ඒවා සමාන වන්නේ කෙසේද?
  3. ඒවා වෙනස් වන්නේ කෙසේද?


2
IDK, නමුත් මුල් MVC සඳහා යැයි කියනු ලැබේ, එය කුඩා වල භාවිතා කිරීමට අදහස් කරන ලදී. සෑම බොත්තමක්ම, ලේබලයක් යනාදියටම තමන්ගේම දර්ශනයක් සහ පාලක වස්තුවක් තිබුණි, නැතහොත් අවම වශයෙන් බොබ් මාමා කියා සිටින්නේ එයයි. මම හිතන්නේ ඔහු කතා කළේ ස්මාල්ටෝක් ගැන. යූ ටියුබ් හි ඔහුගේ කතා දෙස බලන්න, ඒවා සිත් ඇදගන්නා සුළු ය.
still_dreaming_1


2
ප්‍රධාන වෙනස වන්නේ එම්වීසී හි පාලකය විසින් ආකෘතියේ සිට දර්ශනයට කිසිදු දත්තයක් ලබා නොදීමයි. ආකෘතියෙන් දත්ත ලබා ගැනීමට එය දර්ශනයට දැනුම් දෙයි. කෙසේ වෙතත්, එම්වීපී හි, දර්ශනය සහ ආකෘතිය අතර කිසිදු සම්බන්ධයක් නොමැත. ඉදිරිපත් කරන්නා විසින්ම මොඩලයෙන් අවශ්‍ය ඕනෑම දත්තයක් ලබා ගෙන එය දර්ශනය සඳහා දර්ශනයට යොමු කරයි. සියලුම ගෘහ නිර්මාණ රටාවන්හි ඇන්ඩ්‍රොයිඩ් නියැදියක් සමඟ මේ සඳහා වැඩි විස්තර මෙහි ඇත: digigene.com/category/android/android-architecture
අලි නෙම්

ඔවුන් කැඳවා ඇත ගෘහ නිර්මාණ රටාවන් නොවන නිර්මාණ රටා . ඔබට වෙනස දැන ගැනීමට අවශ්‍ය නම් මෙය
හසන් එල්-හෙෆ්නාවි

Answers:


2004

ආදර්ශ-දර්ශන-ඉදිරිපත් කරන්නා

දී වයස් භේදයක් , ඉදිරිපත්කරන්නාගේ දසුන සඳහා UI ව්යාපාර තර්කනය අඩංගු වේ. දර්ශන නියෝජිතයාගේ සියලුම ආයාචනා කෙලින්ම ඉදිරිපත් කරන්නා වෙත. ඉදිරිපත් කරන්නා ද දර්ශනයෙන් කෙලින්ම විසන්ධි කර අතුරු මුහුණතක් හරහා ඒ සමඟ කතා කරයි. මෙය ඒකක පරීක්ෂණයකදී දර්ශනය සමච්චලයට ලක් කිරීමට ඉඩ දීමයි. එම්වීපී හි එක් පොදු ලක්ෂණයක් නම් ද්වි-මාර්ග යැවීම විශාල ප්‍රමාණයක් තිබිය යුතු බවයි. උදාහරණයක් ලෙස, යමෙකු "සුරකින්න" බොත්තම ක්ලික් කළ විට, සිදුවීම් හසුරුවන්නා ඉදිරිපත් කරන්නාගේ "OnSave" ක්‍රමයට යොමු කරයි. සුරැකීම සම්පුර්ණ වූ පසු, ඉදිරිපත් කරන්නා පසුව එහි අතුරු මුහුණත හරහා දර්ශනය නැවත අමතනු ඇත, එවිට දර්ශනය සුරැකීම අවසන් වී ඇති බව පෙන්විය හැකිය.

MVP වෙබ් පෝරමවල වෙන්වූ ඉදිරිපත් කිරීමක් ලබා ගැනීම සඳහා ඉතා ස්වාභාවික රටාවකි. හේතුව, දර්ශනය සැමවිටම නිර්මාණය කරනු ලබන්නේ ASP.NET ධාවන වේලාවෙනි. ප්‍රභේද දෙකම ගැන ඔබට වැඩි විස්තර දැනගත හැකිය .

මූලික වෙනස්කම් දෙකක්

උදාසීන දර්ශනය: දර්ශනය හැකිතාක් ගොළු වන අතර එය පාහේ ශුන්‍ය තර්කනයක් අඩංගු වේ. ඉදිරිපත් කරන්නා දර්ශනය සහ ආකෘතිය සමඟ කතා කරන මධ්‍යම මිනිසෙකි. දර්ශනය සහ ආකෘතිය සම්පූර්ණයෙන්ම එකිනෙකාගෙන් ආරක්ෂා වේ. මාදිලිය විසින් සිදුවීම් මතු කළ හැකි නමුත්, දර්ශනය යාවත්කාලීන කිරීම සඳහා ඉදිරිපත් කරන්නා ඒවාට දායක වේ. උදාසීන දර්ශනය තුළ සෘජු දත්ත බන්ධනයක් නොමැත, ඒ වෙනුවට දර්ශනය මඟින් දත්ත සැකසීමට ඉදිරිපත් කරන්නා භාවිතා කරන සැකසුම් ගුණාංග නිරාවරණය කරයි. සියලුම රාජ්යයන් කළමනාකරණය කරනු ලබන්නේ ඉදිරිපත් කරන්නා තුළ මිස දර්ශනයෙන් නොවේ.

  • Pro: උපරිම පරීක්ෂණ හැකියාව මතුපිට; දර්ශනය සහ ආකෘතිය පිරිසිදු ලෙස වෙන් කිරීම
  • කොන්: ඔබ සියලු දත්ත ඔබ විසින්ම කරන බැවින් වැඩි වැඩ (උදාහරණයක් ලෙස සියලුම සැකසුම් ගුණාංග).

අධීක්ෂණ පාලකය: ඉදිරිපත් කරන්නා පරිශීලක අභිනයන් හසුරුවයි. දර්ශනය සෘජුවම දත්ත බන්ධනය හරහා ආකෘතියට බැඳේ. මෙම අවස්ථාවෙහිදී, එය ආකෘතියෙන් බැහැරව දර්ශනය වෙත යොමු කිරීම ඉදිරිපත් කරන්නාගේ කාර්යය වේ. බොත්තමක් එබීම, සංචලනය වැනි අභිනයන් සඳහා ඉදිරිපත් කරන්නාගේ තර්කනය ද අඩංගු වේ.

  • ප්‍රෝ: දත්ත සමුදාය උල්ලං by නය කිරීමෙන් කේත ප්‍රමාණය අඩු වේ.
  • කොන්: පරීක්‍ෂා කළ හැකි අඩු පෘෂ් is යක් ඇත (දත්ත බන්ධනය නිසා), සහ එය සෘජුවම මොඩලයට කථා කරන බැවින් දර්ශනය තුළ සංවර්‍ධනය අඩුය.

ආදර්ශ-දර්ශන-පාලකය

තුළ MVC , පාලක දැක්ම විට අයදුම් පැටවුම් ඇතුළු කිසිදු ක්රියාමාර්ගයක් ප්රතිචාර ප්රදර්ශනය කිරීමට වන තීරණය කිරීම සඳහා වගකිව යුතු වේ. මෙය MVP ට වඩා වෙනස් වන අතර එහිදී ක්‍රියාවන් දර්ශනය හරහා ඉදිරිපත් කරන්නා වෙත ගමන් කරයි. MVC හි, දර්ශනයේ සෑම ක්‍රියාවක්ම පාලකයකුගේ ඇමතුමක් සමඟ ක්‍රියාවක් සමඟ සම්බන්ධ වේ. වෙබයේ සෑම ක්‍රියාවකටම ප්‍රතිචාර දක්වන පාලකයෙකු සිටින අනෙක් පැත්තෙන් URL එකකට ඇමතුමක් ඇතුළත් වේ. එම පාලකය එහි සැකසුම් සම්පුර්ණ කළ පසු, එය නිවැරදි දර්ශනය ලබා දෙනු ඇත. යෙදුමේ ජීවිත කාලය පුරාම අනුක්‍රමය එලෙසම පවතී:

    දර්ශනයේ ක්‍රියාව
        -> පාලක අමතන්න
        -> පාලක තර්කනය
        -> පාලකය දර්ශනය නැවත ලබා දෙයි.

MVC හි ඇති තවත් එක් විශාල වෙනසක් නම් දර්ශනය සෘජුවම ආකෘතියට සම්බන්ධ නොවීමයි. දැක්ම හුදෙක් විදැහුම් වන අතර එය සම්පූර්ණයෙන්ම අස්ථායි. එම්වීසී ක්‍රියාවට නැංවීමේදී දර්ශනය සාමාන්‍යයෙන් පිටුපස ඇති කේතයේ කිසිදු තර්කනයක් නොමැත. මෙය එම්වීපීයට පරස්පර වන අතර එය අත්‍යවශ්‍ය වේ, මන්දයත් දර්ශනය ඉදිරිපත් කරන්නාට පවරන්නේ නැතිනම් එය කිසි විටෙකත් කැඳවනු නොලැබේ.

ඉදිරිපත් කිරීමේ ආකෘතිය

බැලීමට තවත් එක් රටාවක් වන්නේ ඉදිරිපත් කිරීමේ ආකෘතියයිරටාව. මෙම රටාව තුළ ඉදිරිපත් කරන්නෙකු නොමැත. ඒ වෙනුවට දර්ශනය කෙලින්ම ඉදිරිපත් කිරීමේ ආකෘතියකට බැඳේ. ඉදිරිපත් කිරීමේ ආකෘතිය දර්ශනය සඳහා විශේෂයෙන් සකසන ලද ආකෘතියකි. මෙයින් අදහස් කරන්නේ යමෙකු කිසි විටෙකත් ඩොමේන් මොඩලයක් මත නොතබන දේපල නිරාවරණය කළ හැකි බැවින් එය වෙන් කිරීම උල්ලං be නය කිරීමක් බවයි. මෙම අවස්ථාවෙහිදී, ඉදිරිපත් කිරීමේ ආකෘතිය වසම් ආකෘතියට බැඳී ඇති අතර, එම ආකෘතියෙන් එන සිදුවීම් වලට දායක විය හැකිය. දර්ශනය පසුව ඉදිරිපත් කිරීමේ ආකෘතියෙන් එන සිදුවීම් වලට දායක වන අතර ඒ අනුව යාවත්කාලීන වේ. ඉදිරිපත් කිරීමේ ආකෘතියට ක්‍රියාවන් ක්‍රියාත්මක කිරීම සඳහා දර්ශනය භාවිතා කරන විධානයන් නිරාවරණය කළ හැකිය. මෙම ප්‍රවේශයේ ඇති වාසිය නම්, දර්ශනය සඳහා සියලු හැසිරීම් අගමැති විසින් සම්පුර්ණයෙන්ම සංයුක්ත කර ඇති බැවින් ඔබට අවශ්‍යයෙන්ම කේතය පිටුපසින් ඉවත් කළ හැකිය.Model-View-ViewModel .

ඒ නිසා එය මේ ඉදිරිපත් ආදර්ශ ගැන MSDN හි ලිපිය තුල හා කොටසක් WPF සඳහා සංයුක්ත අයදුම් මාර්ගෝපදේශ ගැන (හිටපු ප්රිස්ම්) වෙන් ඉදිරිපත් කිරිම


28
කරුණාකර ඔබට මෙම වාක්‍ය ඛණ්ඩය පැහැදිලි කළ හැකිද? මෙය MVP ට වඩා වෙනස් වන අතර එහිදී ක්‍රියාවන් දර්ශනය හරහා ඉදිරිපත් කරන්නා වෙත ගමන් කරයි. MVC හි, දර්ශනයේ සෑම ක්‍රියාවක්ම පාලකයකුගේ ඇමතුමක් සමඟ ක්‍රියාවක් සමඟ සම්බන්ධ වේ. මට නම්, එය එකම දෙයකි, නමුත් මට විශ්වාසයි ඔබ වෙනස් දෙයක් විස්තර කරන බව.
Panzercrisis

16
AnPanzercrisis කතුවරයා අදහස් කළේ මෙයදැයි මට විශ්වාස නැත, නමුත් මෙය ඔවුන් පැවසීමට උත්සාහ කළ බව මම සිතමි. මෙම පිළිතුර මෙන් - stackoverflow.com/a/2068/74556 , MVC හි පාලක ක්‍රම පදනම් වී ඇත්තේ හැසිරීම් මත ය - වෙනත් වචන වලින් කිවහොත්, ඔබට තනි පාලකයෙකුට විවිධ අදහස් (නමුත් එකම හැසිරීම) සිතියම් ගත කළ හැකිය. එම්වීපී හි, ඉදිරිපත් කරන්නා දර්ශනයට සමීපව සම්බන්ධ වන අතර සාමාන්‍යයෙන් එහි ප්‍රති results ලය වන්නේ සිතියම්ගත කිරීම එකකට එකකට වඩා සමීප වීමයි, එනම් දර්ශන ක්‍රියාව එහි අනුරූප ඉදිරිපත් කරන්නාගේ ක්‍රමයට අනුරූප වේ. ඔබ සාමාන්‍යයෙන් වෙනත් දර්ශනයක ක්‍රියාවන් වෙනත් ඉදිරිපත් කරන්නෙකුගේ (වෙනත් දෘෂ්ටි කෝණයකින්) සිතියම් ගත නොකරයි.
ඩස්ටින් කෙන්ඩල්

2
ලැබුනු URL ඉල්ලීම් (සමහර විට පරිශීලකයින් විසින් කරනු ලැබේ) MVCවැනි වෙබ් රාමු මඟින් බොහෝ විට භාවිතා කරන බව සලකන්නLaravel . Controllerසහ ජනනය කරන ලද HTML Viewසේවාදායකයා වෙත යවනු ලැබේ - එබැවින්, Viewඑය පසුපෙළේ කොටසක් වන අතර පරිශීලකයාට කිසි විටෙකත් කෙලින්ම එයට ප්‍රවේශ විය නොහැකි අතර, ඔබ ප්‍රතිවිරුද්ධ තැනක අත්විඳින්නේ නම් එය එම්වීසී දිගුවක් ලෙස සලකන්න (හෝ උල්ලං .නය කිරීමක්). An පැන්සර්ක්‍රිසිස්, මෙය MVP( Androidමෙහෙයුම් පද්ධතියේ භාවිතා වන ආකාරයට ) වෙනස් වන actions route through the View to the Presenterඅතර පරිශීලකයාට access ජු ප්‍රවේශයක් ඇත View.
Top-Master

456

මෙය මෙම මෝස්තර රටාවන්හි බොහෝ ප්‍රභේදයන්ගේ අතිශය සරල කිරීමකි, නමුත් මේ දෙක අතර ඇති වෙනස්කම් ගැන සිතා බැලීමට මා කැමතිය.

එම්වීසී

එම්වීසී

එම්වීපී

රූප විස්තරය මෙහි ඇතුළත් කරන්න


10
මෙය ක්‍රමලේඛයේ විශිෂ්ට නිරූපණයකි, ඉදිරිපත් කරන්නාගේ API වෙතින් ඕනෑම GUI ආශ්‍රිත (දේවල් බලන්න) වියුක්ත කිරීම සහ සම්පූර්ණ හුදකලාව පෙන්වයි. එක් සුළු කරුණක්: එක් ඉදිරිපත් කිරීමකට වඩා එක් ඉදිරිපත් කරන්නෙකු පමණක් සිටින තැන ප්‍රධාන ඉදිරිපත් කරන්නෙකු භාවිතා කළ හැකි නමුත් ඔබේ රූප සටහන පිරිසිදු ය. IMO, MVC / MVP අතර ඇති විශාලතම වෙනස නම්, වර්තමාන 'දර්ශන තත්ත්වය' (දත්ත බැලීම) ප්‍රදර්ශනය කිරීම හැර වෙනත් කිසිම දෙයකින් දර්ශනය මුළුමනින්ම අවලංගු කිරීමට MVP උත්සාහ කරන අතරම ආදර්ශ වස්තු පිළිබඳ කිසිදු දැනුමක් ලබා ගැනීමට ඉඩ නොදීමයි. මේ අනුව අතුරු මුහුණත්, එම තත්වය එන්නත් කිරීම සඳහා එහි සිටිය යුතුය.

4
හොඳ පින්තූරයක්. මම එම්වීපී ගොඩක් පාවිච්චි කරනවා, ඒ නිසා මම එක කරුණක් කියන්න කැමතියි. මගේ අත්දැකීම් අනුව, ඉදිරිපත් කරන්නන් නිතර නිතර එකිනෙකා සමඟ කතා කළ යුතුය. ආකෘති (හෝ ව්‍යාපාර වස්තු) සඳහා ද එය සත්‍ය වේ. ඔබේ එම්වීපී පින්තූරයේ ඇති සන්නිවේදනයේ මෙම අතිරේක “නිල් රේඛා” නිසා, ඉදිරිපත් කරන්නා-ආදර්ශ සම්බන්ධතා තරමක් පැටලී යා හැකිය. එමනිසා, මම එකින් එක ඉදිරිපත් කරන්නා-ආදර්ශ සම්බන්ධතාවයක් එදිරිව එක සිට බොහෝ දක්වා තබා ගැනීමට නැඹුරු වෙමි. ඔව්, එයට මාදිලියේ අමතර නියෝජිත ක්‍රම කිහිපයක් අවශ්‍ය වේ, නමුත් මාදිලියේ API වෙනස් වුවහොත් හෝ නැවත ප්‍රතිනිර්මාණය කිරීම අවශ්‍ය නම් එය බොහෝ හිසරදය අඩු කරයි.
splungebob

3
MVC උදාහරණය වැරදියි; දර්ශන සහ පාලකයන් අතර දැඩි 1: 1 සම්බන්ධතාවයක් ඇත. නිර්වචනය අනුව, පාලකය විසින් මිනිස් අභිනය ආදානය අර්ථ නිරූපණය කරන්නේ ආකෘතිය සඳහා සිදුවීම් නිපදවීමට සහ තනි පාලනයක් සඳහා එක හා සමානව බැලීමට ය. වඩාත් සරලව, MVC තනි විජට් සමඟ පමණක් භාවිතා කිරීමට අදහස් කරන ලදී. එක් විජට් එකක්, එක් දර්ශනයක්, එක් පාලනයක්.
සැමුවෙල් ඒ. ෆල්වෝ II

3
@ සැමුවෙල් ඒ.ෆල්වෝයි සැමවිටම නොවේ, 1: ASP.NET MVC හි පාලකයන් සහ අදහස් අතර බොහෝ දේ ඇත: stackoverflow.com/questions/1673301/…
StuperUser

4
UstSuperUser - මම එය ලියන විට මා සිතන්නේ කුමක්දැයි විශ්වාස නැත. ඔබ නිවැරදියි, ඇත්ත වශයෙන්ම, මා ලියා ඇති දේ දෙස ආපසු හැරී බලන විට, මා ප්‍රකාශ කිරීමට අපොහොසත් වූ වෙනත් සන්දර්භයක් මගේ මනසෙහි තිබේදැයි මට සිතිය යුතුය. නිවැරදි කිරීම සඳහා ස්තූතියි.
සැමුවෙල් ඒ. ෆල්වෝ II

422

ටික වේලාවකට පෙර මම මේ ගැන බ්ලොග් කර, ටොඩ් ස්නයිඩර්ගේ විශිෂ්ට පෝස්ට් එක උපුටා දක්වමින් මේ දෙක අතර වෙනස :

රටා අතර ඇති ප්‍රධාන වෙනස්කම් මෙන්න:

එම්වීපී රටාව

  • දර්ශනය ආකෘතියට වඩා ලිහිල්ව සම්බන්ධ වේ. ආකෘතිය දර්ශනයට බැඳීම සඳහා ඉදිරිපත් කරන්නා වගකිව යුතුය.
  • දර්ශනය සමඟ අන්තර්ක්‍රියා කිරීම අතුරු මුහුණතක් හරහා සිදුවන නිසා ඒකක පරීක්ෂණයට පහසුය
  • සාමාන්‍යයෙන් ඉදිරිපත් කරන්නන්ගේ සිතියම එකින් එක බලන්න. සංකීර්ණ දසුන් බහු ඉදිරිපත් කරන්නන් සිටිය හැකිය.

MVC රටාව

  • පාලකය හැසිරීම් මත පදනම් වන අතර ඒවා අදහස් හරහා බෙදා ගත හැකිය
  • කුමන දර්ශනය පෙන්විය යුතුද යන්න තීරණය කිරීම සඳහා වගකිව යුතුය

එය වෙබයේ මට සොයාගත හැකි හොඳම පැහැදිලි කිරීම වේ.


15
මෙම අවස්ථා දෙකෙහිම සමස්ත ලක්ෂ්‍යය මුළුමනින්ම විසුරුවා හැරීම සඳහා දෘෂ්ටි කෝණයෙන් ආකෘතියට වැඩි හෝ අඩු වශයෙන් සම්බන්ධ වන්නේ කෙසේදැයි මට තේරෙන්නේ නැත. ඔබ කිසියම් වැරැද්දක් පැවසූ බව මම ඇඟවුම් නොකරමි - ඔබ අදහස් කරන දේ ගැන ව්‍යාකූල විය.
බිල් කේ

18
stpst: එම්වීපී සමඟ එය සැබවින්ම 1 දසුන = 1 ඉදිරිපත් කරන්නා ය. MVC සමඟ, පාලකවරයාට විවිධ අදහස් පාලනය කළ හැකිය. ඒක තමයි, ඇත්තටම. "ටැබ්" මාදිලිය සමඟ සෑම ටැබ් එකකටම තමන්ගේම ඉදිරිපත් කරන්නෙකු සිටින බව සිතන්න.
ජෝන් ලිම්ජැප්

4
මුලින් පාලක වර්ග දෙකක් තිබේ: ඔබ විවිධ අදහස් හරහා බෙදා ගත යුතු යැයි පැවසූ, සහ විශේෂිත අදහස් ඇති අය, ප්‍රධාන වශයෙන් අදහස් කරන්නේ හවුල් පාලකයේ අතුරුමුහුණත අනුවර්තනය කිරීමයි.
ඇක්සර්

1
On ජෝන් ලිම්ජැප් කෙසේ වෙතත් එක් දෘෂ්ටියකින් අදහස් කරන්නේ කුමක්ද? IOS වැඩසටහන්කරණයේ සන්දර්භය තුළ, එය එක් තිරයක් ද? මෙය iOS පාලකය MVC වලට වඩා MVP වලට සමාන කරයිද? (අනෙක් අතට ඔබට
තිරයකට

2
එම්වීසී පිළිබඳ වෙල් ටොඩ්ගේ රූපසටහන් නිදර්ශනය දර්ශනය සහ ආකෘතිය විසන්ධි කිරීමේ අදහසට සම්පූර්ණයෙන්ම පටහැනිය. ඔබ රූප සටහන දෙස බැලුවහොත්, එය පවසන්නේ ආදර්ශ යාවත්කාලීන කිරීම් (ආදර්ශයේ සිට දර්ශනය දක්වා ඊතලය). මොඩලය දර්ශනය සමඟ කෙලින්ම අන්තර්ක්‍රියා කරන පද්ධතියක් යනු කවර විශ්වයකද?
අළු

260

සන්නිවේදන ප්‍රවාහය නිරූපණය කරන නිදර්ශන මෙන්න

රූප විස්තරය මෙහි ඇතුළත් කරන්න

රූප විස්තරය මෙහි ඇතුළත් කරන්න


44
MVC රූප සටහන සම්බන්ධයෙන් මට ප්‍රශ්නයක් තිබේ. දත්ත ලබා ගැනීම සඳහා දර්ශනය පිටවන කොටස මට නොලැබේ .මම සිතන්නේ පාලකය අවශ්‍ය දත්ත සමඟ දර්ශනය වෙත යොමු කරනු ඇති බවයි.
බ්‍රයන් රිසෝ

54
පරිශීලකයෙකු බොත්තමක් ක්ලික් කළහොත්, එය දර්ශනය සමඟ අන්තර්ක්‍රියා නොකරන්නේ කෙසේද? එම්වීසී හි මෙන් මට දැනේ, පරිශීලකයා පාලකයට වඩා දර්ශනය සමඟ අන්තර් ක්‍රියා කරයි
ජොනතන්

5
මෙය පැරණි පිළිතුරක් බව මම දනිමි - නමුත් කිසිවෙකුට @ ජොනතන්ලීඩර්ස් පොයින්ට් එකෙන් ප්‍රතිචාර දැක්විය හැකිද? ඔබ සුවිශේෂී කේතීකරණයක් නොකළේ නම් මම ජයග්‍රාහී පසුබිමකින් පැමිණෙන්නෙමි, ඔබ UI / View ක්ලික් කළ විට වෙනත් ඕනෑම දෙයකට පෙර එම ක්ලික් කිරීම පිළිබඳ දැනුමක් ලැබේ. අවම වශයෙන්, මා දන්නා තරමින්?
රොබ් පී.

6
ObRobP. මම හිතන්නේ මේ ආකාරයේ ප්‍රස්ථාර සෑම විටම ඉතා සංකීර්ණ හෝ ඉතා සරල විය හැකිය. එම්වීපී ප්‍රස්ථාරයේ ඉමෝ ප්‍රවාහය එම්වීසී යෙදුමක් සඳහා ද සත්‍ය වේ. භාෂා විශේෂාංග (දත්ත බන්ධන / නිරීක්ෂකයා) මත පදනම්ව වෙනස්කම් තිබිය හැකි නමුත් අවසානයේ අදහස වන්නේ යෙදුමේ දත්ත / තර්කනයෙන් දර්ශනය විකේතනය කිරීමයි.
ලූකා ෆුල්බියර්

15
@JonathanLeaders පිරිස් ඇත්තටම ඔවුන් "MVC" කියන විට මනස වෙනස් දේවල්. මෙම වගුව නිර්මාණය කළ පුද්ගලයාට සම්භාව්‍ය වෙබ් එම්වීසී මතකයේ තිබිය හැකි අතර, එහිදී “පරිශීලක ආදානය” යනු HTTP ඉල්ලීම් වන අතර “පරිශීලකයා වෙත ආපසු පැමිණීම” යනු විදැහුම් කරන ලද HTML පිටුවකි. එබැවින් සම්භාව්‍ය වෙබ් එම්වීසී යෙදුමේ කතුවරයකුගේ දෘෂ්ටිකෝණයෙන් පරිශීලකයෙකු සහ දර්ශනයක් අතර ඕනෑම අන්තර්ක්‍රියාකාරිත්වයක් “නොපවතී”.
cubuspl42

171

වයස් භේදයක් වේ නොහැකි අවශ්යයෙන්ම දැක්ම භාර කොහෙද තත්වයක් (උදාහරණයක් Taligent ගේ වයස් භේදයක් බලන්න).
“එය හුදු දර්ශනයක්” (ප්‍රායෝගික ක්‍රමලේඛකයා) ට පටහැනි බැවින් මිනිසුන් තවමත් මෙය රටාවක් ලෙස (භාරව බලන්න) රටාවක් ලෙස දේශනා කිරීම අවාසනාවකි. "එය නිකම්ම දර්ශනයක්" යනුවෙන් සඳහන් වන්නේ පරිශීලකයාට පෙන්වන අවසාන දර්ශනය යෙදුමේ ද්විතියික සැලකිල්ලක් බවයි. මයික්රොසොෆ්ට් සමාගමේ වයස් භේදයක් රටාව දසුන් නැවත භාවිතයට වඩා දුෂ්කර හා කෙරෙන්නේය පහසුවෙන්ම නරක පුරුදු දිරිමත් සිට නිදහසට කරුණු මයික්රොසොෆ්ට් සමාගමේ නිර්මාණ.

පරිපූර්ණව කිවහොත්, එම්වීපී ක්‍රියාවට නැංවීම සඳහා එම්වීසී හි යටින් පවතින උත්සුකයන් සත්‍ය වන අතර වෙනස්කම් මුළුමනින්ම පාහේ අර්ථාන්විත ය. දර්ශනය (දත්ත පෙන්වන), පාලකය (පරිශීලක අන්තර්ක්‍රියා ආරම්භ කිරීම සහ පාලනය කිරීම) සහ ආකෘතිය (යටින් පවතින දත්ත සහ / හෝ සේවා) අතර ඇති ගැටළු වෙන් කිරීම ඔබ අනුගමනය කරන තාක් කල් ඔබ MVC හි ප්‍රතිලාභ අත්කර ගනී. . ඔබ ප්‍රතිලාභ ලබා ගන්නේ නම් ඔබේ රටාව MVC, MVP හෝ අධීක්ෂණ පාලකයද යන්න සැබවින්ම සැලකිලිමත් වන්නේ කවුද? එකම සැබෑ රටාව එම්වීසී ලෙස පවතී, ඉතිරිය එහි වෙනස් රසයන් පමණි.

මෙම එකිනෙකට වෙනස් ක්‍රියාත්මක කිරීම් ගණනාවක් සවිස්තරාත්මකව ලැයිස්තුගත කරන මෙම අතිශය සිත්ගන්නාසුලු ලිපිය සලකා බලන්න . ඔවුන් සියල්ලන්ම මූලික වශයෙන් එකම දේ කරන නමුත් තරමක් වෙනස් බව ඔබට සටහන් විය හැකිය.

මා පෞද්ගලිකව සිතන්නේ එම්වීපී මෑතකදී ආකර්ශනීය යෙදුමක් ලෙස නැවත හඳුන්වා දී ඇත්තේ යමක් ඇත්ත වශයෙන්ම එම්වීසී ද නැද්ද යන්න තර්ක කරන අර්ථකථන මහා මෝඩයන් අතර තර්ක අඩු කිරීමට හෝ මයික්‍රොසොෆ්ට් වේගවත් යෙදුම් සංවර්ධන මෙවලම් සාධාරණීකරණය කිරීමට ය. මගේ පොත්වල ඇති මෙම හේතු දෙකම වෙනම නිර්මාණ රටාවක් ලෙස එහි පැවැත්ම සාධාරණීකරණය නොකරයි.


28
MVC / MVP / MVVM / etc අතර ඇති වෙනස්කම් ගැන මම පිළිතුරු සහ බ්ලොග් කිහිපයක් කියවා ඇත්තෙමි. ඇත්ත වශයෙන්ම, ඔබ ව්‍යාපාරයට බැස ඇති විට, එය සියල්ලම එක හා සමානයි. ඔබට අතුරු මුහුණතක් තිබේද නැද්ද යන්න සහ ඔබ සෙටරයක් ​​භාවිතා කරන්නේද යන්න (හෝ වෙනත් භාෂා අංගයක්) ඇත්ත වශයෙන්ම වැදගත් නොවේ. මෙම රටාවන් අතර වෙනස උපත ලැබුවේ සංකල්පයේ කාරණයකට වඩා විවිධ රාමු ක්‍රියාත්මක කිරීමේ වෙනසෙනි.
මයිකල්

6
මම පසුව එම්වීපී රටාව විරෝධී රටාවක් ලෙස නොකියමි, ".. ඉතිරි [එම්වීපී ද ඇතුළුව] [එම්වීසී] හි වෙනස් රසයන් පමණි ..", එයින් ගම්‍ය වන්නේ එම්වීපී රටා විරෝධී රටාවක් නම්, එම්වීසී විය ... එය වෙනස් රාමුවක ප්‍රවේශය සඳහා රසයක් පමණි. (දැන් සමහර විශේෂිත වයස් භේදයක් නිර්මාණයන් සමහර කට වඩා අඩු හෝ වැඩි යෝග්ය විය හැකි විශේෂිත විවිධ කාර්යයන් සඳහා MVC නිර්මාණයන් ...)

@ ක්විබ්බ්ල්සෝම්: “මම පෞද්ගලිකව සිතන්නේ එම්වීපී මෑතකදී නැවත හඳුන්වා දී ඇත්තේ ආකර්ශනීය යෙදුමක් ලෙස පමණක් වන අතර එය යමක් ඇත්ත වශයෙන්ම එම්වීසී ද නැද්ද යන්න තර්ක කරන අර්ථකථන මහා මෝඩයන් අතර තර්ක අඩු කිරීමට ය. […] මගේ පොත්වල මෙම හේතු දෙකම එහි පැවැත්ම සාධාරණීකරණය නොකරයි. වෙනම නිර්මාණ රටාවක්. ” . එය පැහැදිලි කිරීමට තරම් වෙනස් වේ. එම්වීපී හි, දර්ශනය පූර්ව නිශ්චිත අතුරු මුහුණතක් සපුරාලන ඕනෑම දෙයක් විය හැකිය (එම්වීපී හි දර්ශනය ස්වාධීන අංගයකි). MVC හි, පාලකය සෑදී ඇත්තේ විශේෂිත දර්ශනයක් සඳහා ය (relation ාතීන්ගේ ආරෝපණයන් යමෙකුට වෙනත් යෙදුමක් වටිනවා යැයි හැඟේ නම්).
හිබු 57

6
Ib Hibou57, MVC දර්ශනය අතුරු මුහුණතක් ලෙස සඳහන් කිරීමෙන් හෝ විවිධ අදහස් කිහිපයක් සඳහා සාමාන්‍ය පාලකයක් නිර්මාණය කිරීමෙන් වළක්වා ගැනීමට කිසිවක් නැත.
Quibblesome

1
සැමුවෙල් කරුණාකර ඔබ කතා කරන්නේ කුමක් ද යන්න පැහැදිලි කරන්න. එම්වීසී "නව නිපැයුම්" කළ කණ්ඩායමේ ඉතිහාසය ඔබ මට නොකියන්නේ නම් මම ඔබේ පා about ය ගැන ඇදහිය නොහැකි තරම් සැක සහිතය. ඔබ වින්ෆෝම් ගැන කතා කරන්නේ නම්, වෙනත් දේ කිරීමේ ක්‍රම තිබේ. මම වින්ෆෝම් ව්‍යාපෘති නිර්මාණය කර ඇති අතර එහිදී පාලක බන්ධන පාලනය කරනු ලබන්නේ පාලක විසින් මිස “තනි පාලනයන්” නොවේ.
Quibblesome

111

MVP: දර්ශනය භාරව ඇත.

දර්ශනය, බොහෝ විට, එහි ඉදිරිපත් කරන්නා නිර්මාණය කරයි. ඉදිරිපත් කරන්නා ආකෘතිය සමඟ අන්තර් ක්‍රියා කරන අතර අතුරු මුහුණතක් හරහා දර්ශනය හසුරුවනු ඇත. දර්ශනය සමහර විට ඉදිරිපත් කරන්නා සමඟ අන්තර්ක්‍රියා කරනු ඇත, සාමාන්‍යයෙන් යම් අතුරු මුහුණතක් හරහා. මෙය ක්‍රියාත්මක කිරීමට පහළට පැමිණේ; ඔබට ඉදිරිපත් කරන්නාට ක්‍රම ඇමතීමට අවශ්‍යද? නැතහොත් ඉදිරිපත් කරන්නා සවන් දෙන සිදුවීම් දැකීමට ඔබට අවශ්‍යද? එය මෙයට තල්ලු වේ: ඉදිරිපත් කරන්නා ගැන දැක්ම දනී. දර්ශනය ඉදිරිපත් කරන්නාට පැවරේ.

MVC: පාලකය භාරව සිටී.

කිසියම් සිදුවීමක් / ඉල්ලීමක් මත පදනම්ව පාලකය නිර්මාණය කර හෝ ප්‍රවේශ වේ. පාලකය පසුව සුදුසු දර්ශනයක් නිර්මාණය කරන අතර දර්ශනය තවදුරටත් වින්‍යාස කිරීම සඳහා ආකෘතිය සමඟ අන්තර් ක්‍රියා කරයි. එය පහතට තල්ලු වේ: පාලකය දර්ශනය නිර්මාණය කර කළමනාකරණය කරයි; දර්ශනය පාලකයට වහලෙකි. දර්ශනය පාලකය ගැන නොදනී.


3
"දර්ශනය පාලකය ගැන නොදනී." මම හිතන්නේ ඔබ අදහස් කරන්නේ ආකෘතිය සමඟ කෙලින්ම සම්බන්ධයක් නැති බවයි?
නෙළුම් සටහන්

2
දර්ශනය කිසි විටෙකත් ඊතර් එකේ ආකෘතිය ගැන නොදැන සිටිය යුතුය.
බ්‍රයන් ලේහි

4
Rian බ්‍රයන්: “දර්ශනය බොහෝ විට එය ඉදිරිපත් කරන්නා නිර්මාණය කරයි.” . ඉදිරිපත් කරන්නා විසින් ආකෘතිය සහ දර්ශනය යන දෙකම දියත් කිරීමත් සමඟ මම බොහෝ දුරට ප්‍රතිවිරුද්ධ දෙය දුටුවෙමි. හොඳයි, දර්ශනය ඉදිරිපත් කරන්නා ද දියත් කළ හැකි නමුත් එම කරුණ සැබවින්ම වඩාත්ම සුවිශේෂී නොවේ. වඩාත්ම වැදගත් දෙය පසුව ජීවිත කාලය තුළ සිදු වේ.
හිබු 57

2
වැඩිදුර විස්තර කිරීම සඳහා ඔබේ පිළිතුර සංස්කරණය කිරීමට ඔබට අවශ්‍ය විය හැකිය: දර්ශනය පාලකය ගැන නොදන්නා බැවින්, පරිශීලකයා තිරය මත දකින 'දෘශ්‍ය' අංග මත (එනම් දර්ශනය) සිදුකරන පරිශීලක ක්‍රියා පාලකවරයාට සන්නිවේදනය කරන්නේ කෙසේද? ...
අළු

77

රූප විස්තරය මෙහි ඇතුළත් කරන්න

MVC (ආදර්ශ දර්ශන පාලකය)

ආදානය පළමුවෙන්ම පාලක වෙත යොමු කරනු ලැබේ, දර්ශනය නොවේ. එම ආදානය පැමිණෙන්නේ පිටුවක් සමඟ අන්තර්ක්‍රියා කරන පරිශීලකයෙකුගෙන් විය හැකි නමුත් එය හුදෙක් බ්‍රව්සරයකට විශේෂිත යූආර්එල් එකක් ඇතුළත් කිරීමෙන් විය හැකිය. කෙසේ වෙතත්, එහි පාලකය යම් ක්‍රියාකාරීත්වයක් ඉවත් කිරීම සඳහා අන්තර් සම්බන්ධිත වේ. පාලකය සහ දැක්ම අතර බොහෝ සම්බන්ධකම් තිබේ. එයට හේතුව එක් පාලකය විසින් ක්‍රියාත්මක කරනු ලබන මෙහෙයුම මත පදනම්ව ඉදිරිපත් කිරීමට විවිධ අදහස් තෝරා ගත හැකි බැවිනි. පාලකයේ සිට දර්ශනය දක්වා එක් මාර්ග ඊතලයක් සටහන් කරන්න. මෙයට හේතුව දර්ශනයට පාලකය පිළිබඳ දැනුමක් හෝ සඳහනක් නොමැති වීමයි. පාලකය විසින් ආදර්ශය පසුපසට යවයි, එම නිසා දර්ශනය සහ අපේක්ෂිත ආකෘතිය ඒ තුළට ලබා දීම අතර දැනුමක් ඇත, නමුත් පාලකවරයා එය ඉටු නොකරයි.

එම්වීපී (ආදර්ශ දර්ශන ඉදිරිපත් කරන්නා)

ආදානය ආරම්භ වන්නේ ඉදිරිපත් කරන්නා නොව දර්ශනයෙනි. දර්ශනය සහ ආශ්‍රිත ඉදිරිපත් කරන්නා අතර එකින් එක සිතියම් ගත කිරීමක් ඇත. දර්ශනය ඉදිරිපත් කරන්නා වෙත යොමු කිරීමක් දරයි. ඉදිරිපත් කරන්නා දර්ශනයෙන් අවුලුවන සිදුවීම් වලට ද ප්‍රතික්‍රියා කරයි, එබැවින් එය සම්බන්ධ වී ඇති දර්ශනය පිළිබඳ දැනුවත්භාවය. ඉදිරිපත් කරන්නා විසින් ආකෘතිය යාවත්කාලීන කරන ලෙස ඉල්ලා සිටින ක්‍රියාවන් මත පදනම්ව එය යාවත්කාලීන කරයි, නමුත් දර්ශනය ආදර්ශය නොදැන සිටියි.

වැඩි විස්තර සඳහා විමර්ශන


නමුත් MVPරටාව අනුව, යෙදුම පළමු වරට පටවන විට, පළමු දර්ශනය පූරණය කිරීමට ඉදිරිපත් කරන්නා වගකිව යුතු නොවේද? උදාහරණයක් ලෙස අපි ෆේස්බුක් අයදුම්පත් පටවන විට, පිවිසුම් පිටුව පූරණය කිරීමට ඉදිරිපත් කරන්නා වගකිව යුතු නොවේද?
වයිපර්

2
MVC හි මාදිලියේ සිට බැලීමට සබැඳියක්? මෙම සබැඳිය ලබා දී ඇති විට මෙය 'විසන්ධි කරන ලද' පද්ධතියක් වන්නේ කෙසේද යන්න පැහැදිලි කිරීම සඳහා ඔබේ පිළිතුර සංස්කරණය කිරීමට ඔබට අවශ්‍ය විය හැකිය. ඉඟිය: ඔබට එය දුෂ්කර විය හැකිය. තවද, ඔවුන්ගේ මුළු ජීවිත කාලයම වැරදි ලෙස ගණනය කර ඇති බව පා er කයා සතුටින් පිළිගනු ඇතැයි ඔබ නොසිතන්නේ නම්, පරිශීලකයා තිරයේ ඇති 'දෘශ්‍ය' අංග සමඟ අන්තර්ක්‍රියා කළද, එම්.වී.සී. හි පළමු වරට පාලකය හරහා ක්‍රියා කරන්නේ ඇයිද යන්න විස්තර කිරීමට ඔබට අවශ්‍ය විය හැකිය. බලන්න), සැකසීම පිටුපස ඇති සමහර වියුක්ත ස්ථරයක් නොවේ.
අළු

3
මෙය පැහැදිලිවම වැරදියි ... එම්වීසී හි, ආකෘතිය කිසි විටෙකත් දෘෂ්ටිය සමඟ කෙලින්ම කථා නොකරයි. ඔවුන් දන්නේ නැහැ අනිත් එකක් තියෙනවා කියලා. පාලකය යනු ඒවා එකට තබා ගන්නා මැලියම් ය
මෙගා මෑන්ක්ස්

1
මම Ash ෂ් සහ මෙගා මෑන්එක්ස් සමඟ එකඟ වෙමි. MVC රූප සටහනේ, ඊතලය විය යුත්තේ දර්ශනයේ සිට ආදර්ශය දක්වා (හෝ ViewModel, හෝ DTO) මිස මාදිලියේ සිට දර්ශනය දක්වා නොවේ; මොඩලය දර්ශනය ගැන නොදන්නා නමුත් දර්ශනය ආකෘතිය ගැන දනී.
Jboy Flaga

57

ප්‍රශ්නයට බොහෝ පිළිතුරු ඇත, නමුත් පැහැදිලිවම සරල පිළිතුරක් සැසඳීමේ දී සරල පිළිතුරක් අවශ්‍ය බව මට හැඟුණි. MVP සහ MVC යෙදුමක පරිශීලකයෙකු චිත්‍රපට නාමයක් සොයන විට මා කළ සාකච්ඡාව මෙන්න:

පරිශීලකයා: ක්ලික් කරන්න ක්ලික් කරන්න…

බලන්න : ඒ කවුද? [ එම්වීපී | MVC ]

පරිශීලක: මම සෙවුම් බොත්තම මත ක්ලික් කළෙමි…

බලන්න : හරි, තත්පරයක් ඉන්න…. [ එම්වීපී | MVC ]

( බලන්න ඇමතුම් ඉදිරිපත් කිරීම | පාලක [...) වයස් භේදයක් | MVC ]

බලන්න : හේ ඉදිරිපත් කරන්නා | පාලකය , පරිශීලකයෙකු සෙවුම් බොත්තම මත ක්ලික් කර ඇත, මා කුමක් කළ යුතුද? [ එම්වීපී | MVC ]

ඉදිරිපත් කරන්නා | පාලක : හේයි වීව් , එම පිටුවේ කිසියම් සෙවුම් පදයක් තිබේද? [ එම්වීපී | MVC ]

නරඹන්න : ඔව්,… මෙන්න එයයි… “පියානෝ” [ එම්වීපී | MVC ]

ඉදිරිපත් කරන්නා : ස්තූතියි දසුන් ,… මේ අතර මම මොඩලයේ සෙවුම් පදය සොයමින් සිටිමි , කරුණාකර ඔහුට / ඇයට ප්‍රගති තීරුවක් පෙන්වන්න [ MVP | MVC ]

( ඉදිරිපත් කිරීම | පාලක ආරාධනා ආදර්ශ ...) [ වයස් භේදයක් | MVC ]

ඉදිරිපත් කරන්නා | පාලක : හේයි මොඩල් , ඔබට මෙම සෙවුම් යෙදුමට කිසියම් ගැලපීමක් තිබේද?: “පියානෝ” [ එම්වීපී | MVC ]

ආකෘතිය : හේ ඉදිරිපත් කරන්නා | පාලකය , මට පරීක්ෂා කිරීමට ඉඩ දෙන්න… [ එම්වීපී | MVC ]

( මොඩලය චිත්‍රපට දත්ත ගබඩාවට විමසීමක් කරයි…) [ එම්වීපී | MVC ]

( ටික මොහොතකට පසු ... )

-------------- එම්වීපී සහ එම්වීසී අපසරනය වීමට පටන් ගන්නා ස්ථානය මෙයයි ---------------

මාදිලිය : මම ඔබ වෙනුවෙන් ලැයිස්තුවක් සොයා ගත්තා, ඉදිරිපත් කරන්නා , මෙන්න එය JSON හි ඇත [[{"නම": "පියානෝ ගුරු", "වර්ෂය": 2001}, name "නම": "පියානෝ", "වර්ෂය": 1993} ] ”[ එම්වීපී ]

ආකෘතිය : යම් ප්‍රති result ලයක් ඇත, පාලකය . මම මගේ ක්ෂේත්‍රයේ ක්ෂේත්‍ර විචල්‍යයක් නිර්මාණය කර එහි ප්‍රති .ලයෙන් පුරවා ඇත්තෙමි. එහි නම "searchResultsList" [ MVC ]

( ඉදිරිපත් කරන්නා | පාලක ස්තූතියි ආදර්ශය සහ නැවත දර්ශනය වෙත පැමිණේ ) [ MVP | MVC ]

ඉදිරිපත් කරන්නා : දර්ශනය බලා සිටීම ගැන ස්තූතියි , මම ඔබට ගැලපෙන ප්‍රති results ල ලැයිස්තුවක් සොයා ගෙන ඒවා ඉදිරිපත් කළ හැකි ආකෘතියකින් සකස් කළෙමි: ["පියානෝ ගුරු 2001", "පියානෝ 1993"]. කරුණාකර එය සිරස් ලැයිස්තුවක පරිශීලකයාට පෙන්වන්න. කරුණාකර දැන් ප්‍රගති තීරුව සඟවන්න [ MVP ]

පාලක : බලා ස්තුතියි දැක්ම , මම ඉල්ලා ඇත මාදිලිය ඔබගේ සෙවුම් විමසුම ගැන. එය පවසන්නේ එය ගැලපෙන ප්‍රති results ල ලැයිස්තුවක් සොයාගෙන ඇති අතර ඒවා "searchResultsList" නම් විචල්‍යයක ගබඩා කර ඇති බවයි. ඔබට එය එතැනින් ලබා ගත හැකිය. කරුණාකර දැන් ප්‍රගති තීරුව සඟවන්න [ MVC ]

බලන්න : බොහොම ස්තූතියි ඉදිරිපත් කරන්නා [ එම්වීපී ]

නරඹන්න : ස්තූතියි "පාලක" [ එම්වීසී ] (දැන් දර්ශනය විසින්ම ප්‍රශ්න කරනු ලැබේ: මා විසින් ලබාගත් ප්‍රති results ල මාදිලියෙන් පරිශීලකයා වෙත ඉදිරිපත් කරන්නේ කෙසේද? චිත්‍රපටයේ නිෂ්පාදන වර්ෂය පළමු හෝ අවසාන වශයෙන් පැමිණිය යුතුද ...? සිරස් හෝ තිරස් ලැයිස්තුවක සිටිය හැකිද? ...)

නඩුවේ ඔයා තමයි උනන්දුවක්, මම යෙදුම ගෘහ නිර්මාණ රටාවන් ගැන පළ වූ ලිපි මාලාවක් ලියන කර ඇත (MVC, වයස් භේදයක්, MVVP, පිරිසිදු, ගෘහ නිර්මාණ ශිල්පය, ...) එය Github සමග ප්රතිමිලදී ගැනීම් මෙතන . ඇන්ඩ්‍රොයිඩ් සඳහා නියැදිය ලියා ඇතත්, යටින් පවතින මූලධර්ම ඕනෑම මාධ්‍යයකට යොදා ගත හැකිය.


මූලික වශයෙන් ඔබ කියන්නට උත්සාහ කරන්නේ පාලක දර්ශන තර්කනය ක්ෂුද්‍ර කළමනාකරණය කරයිද? ඉතින් එය සිදුවන්නේ කුමක්ද සහ දර්ශන මත ඉදිරිපත් කිරීමෙන් දර්ශනය අඳුරු කරයි?
රාඩු

Ad රාඩු, නැත, එය ක්ෂුද්‍ර කළමනාකරණය නොවේ, ඉදිරිපත් කරන්නා කරන්නේ දර්ශනය නිෂ්ක්‍රීය හෝ ගොළු බවට පත් කිරීමෙනි
අලි නෙම්

4
නිසි MVC එකක, දර්ශනය පාලකයේ ක්‍රියාකාරීත්වය ඉල්ලා සිටින අතර ආකෘතියේ දත්ත වෙනස්වීම් වලට සවන් දෙයි. දර්ශනය පාලකයෙන් දත්ත ලබා නොගන්නා අතර පාලකය දර්ශනය කිරීමට දර්ශනය නොකිය යුතුය, නිදසුනක් ලෙස, පැටවීමේ දර්ශකයක්. නිසි MVC මඟින් දර්ශන කොටස ප්‍රතිස්ථාපනය කිරීමට ඉඩ ලබා දේ. දර්ශන කොටසෙහි දර්ශන තර්කනය ඇත, එයට පැටවීමේ දර්ශකයක් ඇතුළත් වේ. දර්ශනය මඟින් උපදෙස් (පාලකයේ), පාලකය විසින් ආකෘතියේ දත්ත වෙනස් කරයි, සහ ආකෘතිය එහි දත්තවල වෙනස්කම් ගැන සවන්දෙන්නන්ට දැනුම් දෙයි, එවැනි එක් සවන්දෙන්නෙකු දර්ශනය වේ.
ටොමී ඇන්ඩර්සන්

35
  • MVP = ආදර්ශ-දර්ශන-ඉදිරිපත් කරන්නා
  • MVC = ආදර්ශ-දර්ශන-පාලකය

    1. ඉදිරිපත් කිරීමේ රටා දෙකම. මොඩලයක් (වසම් වස්තු සිතන්න), ඔබේ තිරය / වෙබ් පිටුව (දර්ශනය) සහ ඔබේ UI හැසිරිය යුතු ආකාරය (ඉදිරිපත් කරන්නා / පාලකය) අතර පරායත්තතාවයන් ඒවා වෙන් කරයි.
    2. ඔවුන් සංකල්පයට තරමක් සමාන ය, ජනතාව රසය අනුව ඉදිරිපත් කරන්නා / පාලකය වෙනස් ආකාරයකින් ආරම්භ කරති.
    3. වෙනස්කම් පිළිබඳ විශිෂ්ට ලිපියක් මෙහි ඇත. වඩාත්ම කැපී පෙනෙන කාරණය නම් MVC රටාවෙහි දර්ශනය යාවත්කාලීන කරන මාදිලිය තිබීමයි.

2
VIEw යාවත්කාලීන කරන ආකෘතිය. මෙය තවමත් විසන්ධි කරන ලද පද්ධතියක් ද?
අළු

35

ආදර්ශ-දර්ශන-පාලකය

MVC යනු මෘදුකාංග යෙදුමක ගෘහ නිර්මාණ ශිල්පය සඳහා රටාවකි. එය යෙදුම් තර්කනය කොටස් තුනකට වෙන් කරයි, මොඩියුලරිටි සහ සහයෝගීතාවයේ පහසුව සහ නැවත භාවිතා කිරීම ප්‍රවර්ධනය කරයි. එමඟින් යෙදුම් වඩාත් නම්‍යශීලී වන අතර පුනරාවර්තන වලට සාදරයෙන් පිළිගනී. එය යෙදුමක් පහත සඳහන් කොටස් වලට වෙන් කරයි:

  • දත්ත සහ ව්‍යාපාර තර්කනය හැසිරවීමේ ආකෘති
  • පරිශීලක අතුරුමුහුණත සහ යෙදුම හැසිරවීම සඳහා පාලකයන්
  • අදහස් චිත්රක පරිශීලක අතුරුමුහුණත් වස්තූන් හා ඉදිරිපත් හැසිරවීමේ

මෙය තව ටිකක් පැහැදිලි කිරීම සඳහා, සරල සාප්පු ලැයිස්තු යෙදුමක් ගැන සිතමු. අපට අවශ්‍ය වන්නේ මේ සතියේ අපට මිලදී ගැනීමට අවශ්‍ය එක් එක් අයිතමයේ නම, ප්‍රමාණය සහ මිල ලැයිස්තුවකි. MVC භාවිතයෙන් මෙම ක්‍රියාකාරිත්වය සමහරක් ක්‍රියාත්මක කරන්නේ කෙසේදැයි අපි පහත විස්තර කරමු.

රූප විස්තරය මෙහි ඇතුළත් කරන්න

ආදර්ශ-දර්ශන-ඉදිරිපත් කරන්නා

  • මෙම ආකෘතිය මතය (පරිශීලක අතුරු මුහුණත) දිස් වේ එම දත්ත වේ.
  • මෙම දැක්ම ප්රදර්ශනය දත්ත (ආදර්ශ) සහ මාර්ග පරිශීලක විධාන (සිදුවීම්) ඉදිරිපත්කරන්නාගේ බව දත්ත මත ක්රියා කිරීමට බව අතුරු මුහුණතක් වේ. දර්ශනයට සාමාන්‍යයෙන් එහි ඉදිරිපත් කරන්නාට යොමු දැක්වීමක් ඇත.
  • මෙම ඉදිරිපත් කිරීම "මධ්යම-මිනිසා" යනු (MVC දී පාලක විසින් ඉටු) සහ, දැක්ම හා ආදර්ශ දෙකටම යොමු වේ. “ආදර්ශ” යන වචනය නොමඟ යවන බව කරුණාවෙන් සලකන්න . එය ආකෘතියක් ලබා ගන්නා හෝ හසුරුවන ව්‍යාපාරික තර්කනය විය යුතුය . උදාහරණයක් ලෙස: ඔබට දත්ත සමුදා වගුවක දත්ත ගබඩාවක් ගබඩා කර තිබේ නම් සහ ඔබේ දර්ශනයට පරිශීලකයින්ගේ ලැයිස්තුවක් ප්‍රදර්ශනය කිරීමට අවශ්‍ය නම්, ඉදිරිපත් කරන්නාට ඔබේ දත්ත සමුදා ව්‍යාපාර තර්කනය (DAO වැනි) වෙත යොමු කිරීමක් තිබේ. පරිශීලකයින්ගේ.

ඔබට සරල ක්‍රියාත්මක කිරීමක් සහිත නියැදියක් බැලීමට අවශ්‍ය නම් කරුණාකර මෙම GitHub සටහන පරීක්ෂා කරන්න

දත්ත සමුදායකින් පරිශීලකයින්ගේ ලැයිස්තුවක් විමසීමේ සහ ප්‍රදර්ශනය කිරීමේ සංයුක්ත කාර්ය ප්‍රවාහයක් මේ ආකාරයට ක්‍රියා කළ හැකිය: රූප විස්තරය මෙහි ඇතුළත් කරන්න

මොකක්ද මේ වෙනස අතර MVC හා වයස් භේදයක් රටාවන්?

MVC රටාව

  • පාලකය හැසිරීම් මත පදනම් වන අතර ඒවා අදහස් හරහා බෙදා ගත හැකිය

  • කුමන දර්ශනය පෙන්විය යුතුද යන්න තීරණය කිරීම සඳහා වගකිව යුතුය (ඉදිරිපස පාලක රටාව)

එම්වීපී රටාව

  • දර්ශනය ආකෘතියට වඩා ලිහිල්ව සම්බන්ධ වේ. ආකෘතිය දර්ශනයට බැඳීම සඳහා ඉදිරිපත් කරන්නා වගකිව යුතුය.

  • දර්ශනය සමඟ අන්තර්ක්‍රියා කිරීම අතුරු මුහුණතක් හරහා සිදුවන නිසා ඒකක පරීක්ෂණයට පහසුය

  • සාමාන්‍යයෙන් ඉදිරිපත් කරන්නන්ගේ සිතියම එකින් එක බලන්න. සංකීර්ණ දසුන් බහු ඉදිරිපත් කරන්නන් සිටිය හැකිය.


2
mvc හි දර්ශනය සහ ආකෘතිය අතර connection ජු සම්බන්ධයක් නොමැත. ඔබේ රූප සටහන වැරදියි.
Özgür

33

මතක තබා ගත යුතු කරුණ නම් විවිධ වර්ගයේ එම්වීපී ද ඇති බවයි. ෆෝලර් රටාව දෙකට කැඩී ඇත - උදාසීන දර්ශනය සහ අධීක්ෂණ පාලකය.

උදාසීන දසුන භාවිතා කරන විට, ඔබේ දර්ශනය සාමාන්‍යයෙන් යටි යටි විජට් එකට වඩා අඩු හෝ වැඩි වශයෙන් දේපල සිතියම් ගත කරන සියුම් අතුරු මුහුණතක් ක්‍රියාත්මක කරයි. උදාහරණයක් ලෙස, ඔබට නම සහ ලිපිනය වැනි ගුණාංග සහිත ICustomerView එකක් තිබිය හැකිය.

ඔබගේ ක්‍රියාත්මක කිරීම මේ වගේ දෙයක් විය හැකිය:

public class CustomerView : ICustomerView
{
    public string Name
    { 
        get { return txtName.Text; }
        set { txtName.Text = value; }
    }
}

ඔබේ ඉදිරිපත් කරන්නා පන්තිය ආකෘතියට කථා කර එය දර්ශනයට "සිතියම්" කරනු ඇත. මෙම ප්‍රවේශය "උදාසීන දර්ශනය" ලෙස හැඳින්වේ. වාසිය නම් දර්ශනය පරීක්ෂා කිරීම පහසු වන අතර UI වේදිකා අතර (වෙබ්, වින්ඩෝස් / එක්ස්ඒඑම්එල්, ආදිය) ගමන් කිරීම පහසුය. අවාසිය නම් ඔබට දත්ත සමුදාය වැනි දේ උත්තේජනය කළ නොහැකි වීමයි ( WPF සහ Silverlight වැනි රාමු තුළ එය සැබවින්ම බලවත් ය ).

එම්වීපී හි දෙවන රසය අධීක්ෂණ පාලකයයි. එවැනි අවස්ථාවකදී ඔබේ දර්ශනයට පාරිභෝගිකයා නමින් දේපලක් තිබිය හැකි අතර එය නැවත UI විජට් වෙත දත්ත සමුදායක් වේ. දර්ශනය සමමුහුර්තකරණය කිරීම සහ ක්ෂුද්‍ර කළමනාකරණය කිරීම ගැන ඔබ සිතිය යුතු නැති අතර, අධීක්ෂණ පාලකවරයාට අවශ්‍ය විටදී පියවරෙන් පියවර උදව් කළ හැකිය.

එම්වීපී හි තුන්වන “රසය” (හෝ යමෙකු එය වෙනම රටාවක් ලෙස හඳුන්වනු ඇත) ඉදිරිපත් කිරීමේ ආකෘතිය (හෝ සමහර විට ආදර්ශ-දර්ශන-දර්ශන මොඩලය ලෙස හැඳින්වේ). එම්වීපී හා සසඳන විට ඔබ එම් සහ පී එක පන්තියකට ඒකාබද්ධ කරයි. ඔබේ UI විජට් දත්ත වලට බැඳී ඇති ඔබේ පාරිභෝගික වස්තුව ඔබ සතුව ඇත, නමුත් ඔබට "IsButtonEnabled", හෝ "IsReadOnly" වැනි අතිරේක UI-spesific ක්ෂේත්‍රද ඇත.

මම හිතන්නේ UI ගෘහ නිර්මාණ ශිල්පයට මම සොයාගත් හොඳම සම්පත වන්නේ ජෙරමි මිලර් විසින් The Build Your Own CAB ශ්‍රේණි පටුනෙහි කළ බ්ලොග් සටහන් මාලාවයි . ඔහු එම්වීපී හි සියලුම රසයන් ආවරණය කළ අතර ඒවා ක්‍රියාත්මක කිරීම සඳහා සී # කේතය පෙන්වීය.

යූකාඩ් හි සිල්වර් ලයිට් ඕවර් සන්දර්භය තුළ මා මොඩල්-වීව්-වීව් මොඩල් රටාව ගැන බ්ලොග් කර ඇත නැවත බැලුවෙමි: වීව් මොඩල් රටාව ක්‍රියාත්මක කිරීම .


25

ඔවුන් සෑම කෙනෙකුම විවිධ ගැටළු වලට විසඳුම් ලබා දෙන අතර පහත දැක්වෙන දෙයක් ලබා ගැනීම සඳහා එකට එකතු විය හැකිය

ඒකාබද්ධ රටාව

ද ඇත මෙහි MVC, වයස් භේදයක් හා MVVM සම්පූර්ණ සංසන්දනය


1
දේවල් ඕනෑවට වඩා සංකීර්ණ කරනවා වෙනුවට, ඔබට එම ප්‍රශ්නයට පිළිතුරු දිය හැකිය. අපෙන් බහුතරයක් මෙහි සිටින්නේ එබැවිනි. Mvp සහ mvc අතර සංසන්දනය සඳහා සෙවූ අතර මෙහි නැවත හරවා යවා ඇති අතර ඔබ කතා කරන්නේ OP හා සම්බන්ධ නොවන එම ගෘහ නිර්මාණ ශිල්පයේ එකමුතුකම ගැන ය.
ෆරීඩ්

18

මෙම රාමු දෙකම උත්සුකයන් වෙන් කිරීම අරමුණු කරයි - නිදසුනක් ලෙස, දත්ත ප්‍රභවයක් (ආකෘතිය) සමඟ අන්තර්ක්‍රියා කිරීම, යෙදුම් තර්කනය (හෝ මෙම දත්ත ප්‍රයෝජනවත් තොරතුරු බවට හැරවීම) (පාලක / ඉදිරිපත් කරන්නා) සහ දර්ශන කේතය (බලන්න). සමහර අවස්ථාවල දත්ත ප්‍රභවයක් ඉහළ මට්ටමේ සාරාංශයක් බවට පත් කිරීමට ද ආකෘතිය භාවිතා කළ හැකිය. මෙයට හොඳ උදාහරණයක් වන්නේ එම්වීසී ස්ටෝර්ෆ්‍රන්ට් ව්‍යාපෘතියයි .

එම්වීසී එදිරිව එම්වීපී අතර ඇති වෙනස්කම් පිළිබඳව මෙහි සාකච්ඡාවක් තිබේ .

වෙනස වන්නේ MVC යෙදුමක සාම්ප්‍රදායිකව දැක්ම සහ පාලකය ආකෘතිය සමඟ අන්තර්ක්‍රියා කරන නමුත් එකිනෙකා සමඟ නොවේ.

එම්වීපී මෝස්තරවලට ඉදිරිපත් කරන්නා ආකෘතියට ප්‍රවේශ වන අතර දර්ශනය සමඟ අන්තර් ක්‍රියා කරයි.

ASP.NET MVC යනු මෙම නිර්වචන අනුව MVP රාමුවක් වන බැවින් පාලක විසින් කිසිදු දර්ශනයක් නොමැති අදහස් ජනනය කිරීම සඳහා ආකෘතියට ප්‍රවේශ වන හෙයින් (පාලක විසින් සපයනු ලබන විචල්‍යයන් පෙන්වයි).

සමහර විට ASP.NET MVC MVP වෙතින් වෙනස පිළිබඳ අදහසක් ලබා ගැනීමට, ස්කොට් හැන්සල්මන්ගේ මෙම MIX ඉදිරිපත් කිරීම බලන්න .


7
MVC සහ MVP යනු රටා මිස රාමු නොවේ. ඔබ අවංකව සිතන්නේ නම්, එම මාතෘකාව .NET රාමුව ගැන විය, එය හරියට "අන්තර්ජාලය" ඇසීම හා එය IE ගැන සිතීම වැනි ය.
tereško

2008 දී පළමු වරට නැවත ඇසූ අවස්ථාවේ සිට මෙම ප්‍රශ්නය සැලකිය යුතු ලෙස විකාශනය වී ඇති බව විශ්වාසයි. මීට අමතරව, මගේ පිළිතුර දෙස ආපසු හැරී බලන විට (මෙය මීට වසර 4 කට පෙර විය, එබැවින් මට ඔබට වඩා වැඩි සන්දර්භයක් නොමැත) මම සාමාන්‍යයෙන් ආරම්භ කරමි කොන්ක්‍රීට් උදාහරණයක් ලෙස .NET MVC භාවිතා කරන්න.
මැට් මිචෙල්

13

දෙකම ඉදිරිපත් කිරීම් සහ ව්‍යාපාර තර්කනය වෙන් කිරීමට උත්සාහ කරන රටාවන් වන අතර ව්‍යාපාර තර්කනය UI අංශ වලින් වෙන් කරයි

වාස්තු විද්‍යාත්මකව, එම්වීපී යනු පිටු පාලක පාදක ප්‍රවේශය වන අතර එම්වීසී යනු ඉදිරිපස පාලක පදනම් කරගත් ප්‍රවේශයකි. එහි අර්ථය වන්නේ එම්වීපී සම්මත වෙබ් පෝරමයේ පිටු ජීවන චක්‍රය පිටුපස ඇති ව්‍යාපාරික තර්කනය උපුටා ගැනීමෙනි. වෙනත් වචන වලින් කිවහොත්, http ඉල්ලීමට සේවය සපයන්නේ පිටුවයි. වෙනත් වචන වලින් කිවහොත්, එම්වීපී අයිඑම්එච්ඕ යනු වෙබ් පෝරම පරිණාමීය වර්ධනයක්. පිටුව පැටවීමට පෙර පාලක පන්තිය විසින් ඉල්ලීම වලක්වනු ලැබීම නිසා MVC ක්‍රීඩාව සම්පූර්ණයෙන්ම වෙනස් කරයි, ව්‍යාපාර තර්කනය එහි ක්‍රියාත්මක වන අතර පාලක සැකසීමේ අවසාන ප්‍රති result ලයක් ලෙස පිටුවට දැමූ දත්ත ("නරඹන්න") අර්ථයෙන්, MVC පෙනුම (අවම වශයෙන් මට) MVP හි පාලක රසය අධීක්ෂණය කිරීමට බොහෝ දේ රවුටින් එන්ජිම සමඟ වැඩි දියුණු කරයි

මේ දෙකම TDD සක්‍රීය කරන අතර එහි අවාසි සහ උඩු යටිකුරු ඇත.

ඔවුන්ගෙන් එක් අයෙකු තෝරා ගන්නේ කෙසේද යන්න පිළිබඳ තීරණය IMHO පදනම් විය යුත්තේ යමෙකු ASP NET වෙබ් පෝරම ආකාරයේ වෙබ් සංවර්ධනය සඳහා කොපමණ කාලයක් ආයෝජනය කර ඇත්ද යන්න මතය. යමෙකු වෙබ් පෝරම වලින් තමා හොඳ යැයි සිතන්නේ නම්, මම යෝජනා කරන්නේ එම්වීපී ය. පිටු ජීවන චක්‍රය වැනි දේ ගැන කෙනෙකුට එතරම් පහසුවක් දැනෙන්නේ නැත්නම් එම්වීසී මෙතැනට යා හැකි මාර්ගයක් විය හැකිය.

මෙන්න මේ මාතෘකාව පිළිබඳ වැඩි විස්තර සපයන තවත් බ්ලොග් පෝස්ට් සබැඳියක්

http://blog.vuscode.com/malovicn/archive/2007/12/18/model-view-presenter-mvp-vs-model-view-controller-mvc.aspx


9

මම එම්වීපී සහ එම්වීසී යන දෙකම භාවිතා කර ඇති අතර සංවර්ධකයින් වශයෙන් අප රටාවන් දෙකෙහිම තාක්ෂණික වෙනස්කම් කෙරෙහි අවධානය යොමු කළද IMHO හි එම්වීපී සඳහා වන කරුණ අන් සියල්ලටම වඩා දරුකමට හදා ගැනීමේ පහසුව හා සම්බන්ධ වේ.

මම දැනටමත් වෙබ් ආකෘති සංවර්ධන ශෛලිය පිළිබඳ හොඳ පසුබිමක් ඇති කණ්ඩායමක වැඩ කරන්නේ නම් MVC ට වඩා MVP හඳුන්වා දීම පහසුය. මෙම තත්වය තුළ එම්වීපී ඉක්මන් ජයග්‍රහණයක් යැයි මම කියමි.

මගේ අත්දැකීම් මට කියා සිටින්නේ වෙබ් පෝරමවල සිට එම්වීපී දක්වාත් පසුව එම්වීපී සිට එම්වීසී දක්වාත් කණ්ඩායමක් ගෙනයාම සාපේක්ෂව පහසු බවය; වෙබ් පෝරමවල සිට එම්වීසී වෙත මාරුවීම වඩා දුෂ්කර ය.

මගේ මිතුරෙකු එම්වීපී සහ එම්වීසී ගැන පළ කළ ලිපි මාලාවකට සබැඳියක් මම මෙහි තබමි.

http://www.qsoft.be/post/Building-the-MVP-StoreFront-Gutthrie-style.aspx


8

එම්වීපී හි දර්ශනය ඉදිරිපත් කරන්නාගෙන් දත්ත උකහා ගන්නා අතර එය ආකෘතියෙන් දත්ත උකහා ගන්නා අතර සාමාන්‍යකරණය කරයි. එම්වීසී හි පාලකය ආකෘතියෙන් දත්ත ඇද ගන්නා අතර දර්ශනය තල්ලු කරයි.

එම්වීපී හි ඔබට විවිධ වර්ගයේ ඉදිරිපත් කරන්නන් සමඟ වැඩ කරන තනි දර්ශනයක් සහ විවිධ බහුවිධ අදහස් සමඟ වැඩ කරන තනි ඉදිරිපත් කරන්නෙකු සිටිය හැකිය.

MVP සාමාන්‍යයෙන් මයික්‍රොසොෆ්ට් WPF බන්ධන රාමුව හෝ HTML5 සහ ජාවා සඳහා විවිධ බන්ධන රාමු වැනි යම් ආකාරයක බන්ධන රාමුවක් භාවිතා කරයි.

එම රාමු තුළ, UI / HTML5 / XAML, එක් එක් UI මූලද්‍රව්‍යය පෙන්වන ඉදිරිපත් කරන්නාගේ දේපළ කුමක්දැයි දැන සිටියි, එබැවින් ඔබ ඉදිරිපත් කරන්නෙකුට දර්ශනයක් බැඳ තබන විට, දර්ශනය ගුණාංග සොයන අතර ඒවායින් දත්ත ලබා ගන්නේ කෙසේද සහ කෙසේද පරිශීලකයා විසින් UI හි අගය වෙනස් කළ විට ඒවා සැකසීමට.

උදාහරණයක් ලෙස, මාදිලිය මෝටර් රථයක් නම්, ඉදිරිපත් කරන්නා යම් ආකාරයක මෝටර් රථ ඉදිරිපත් කරන්නෙකු වන අතර, මෝටර් රථ ගුණාංග (වර්ෂය, නිෂ්පාදකයා, ආසන ආදිය) දර්ශනයට නිරාවරණය කරයි. 'කාර් මැකර්' යනුවෙන් හැඳින්වෙන පෙළ ක්ෂේත්‍රයට ඉදිරිපත් කරන්නාගේ දේපළ ප්‍රදර්ශනය කිරීමට අවශ්‍ය බව දැක්ම දනී.

ඔබට පසුව විවිධාකාර ඉදිරිපත් කරන්නාගේ දර්ශනයට බැඳිය හැකිය, සියල්ලටම මේකර් දේපළ තිබිය යුතුය - එය ගුවන් යානයක, දුම්රියේ හෝ කුමක් හෝ විය හැකිය, දර්ශනය ගණන් ගන්නේ නැත. එකඟ වූ අතුරු මුහුණතක් ක්‍රියාත්මක කරන තාක් කල්, දර්ශනය ඉදිරිපත් කරන්නාගෙන් දත්ත ලබා ගනී.

මෙම බන්ධන රාමුව, ඔබ එය ඉවත් කළහොත්, එය ඇත්ත වශයෙන්ම පාලකය :-)

එම්වීසී හි පරිණාමයක් ලෙස ඔබට එම්වීපී දෙස බැලිය හැකිය.

MVC විශිෂ්ටයි, නමුත් ගැටළුව වන්නේ සාමාන්‍යයෙන් එහි පාලකය දර්ශනයකට අනුව වීමයි. පාලක A විසින් දර්ශන A හි ක්ෂේත්‍ර සැකසෙන්නේ කෙසේදැයි දනී. දැන් ඔබට B ආකෘතියේ දත්ත ප්‍රදර්ශනය කිරීමට View A අවශ්‍ය නම්, B ආකෘතිය දැන ගැනීමට ඔබට පාලක A අවශ්‍ය වේ, නැතහොත් අතුරු මුහුණතක් සහිත වස්තුවක් ලබා ගැනීමට ඔබට පාලක A අවශ්‍ය වේ - එය සමාන ය එම්වීපී බන්ධන නොමැතිව පමණි, නැතහොත් පාලක බී හි යූඅයි සෙට් කේතය නැවත ලිවිය යුතුය.

නිගමනය - එම්වීපී සහ එම්වීසී යන දෙකම යූඅයි රටා විසන්ධි කරයි, නමුත් එම්වීපී සාමාන්‍යයෙන් එම්වීසී යටින් ඇති බන්ධන රාමුවක් භාවිතා කරයි. THUS MVP MVC ට වඩා ඉහළ වාස්තු විද්‍යාත්මක මට්ටමක පවතින අතර MVC ට වඩා ඉහළින් ඇති ආවරණ රටාවකි.


6

මගේ නිහතමානී කෙටි දැක්ම: එම්වීපී විශාල පරිමාණයන් සඳහා වන අතර එම්වීසී කුඩා පරිමාණයන් සඳහා වේ. එම්වීසී සමඟ, මට සමහර විට දැනෙන්නේ එම් සහ කෙලින්ම බැඳී ඇති තනි අවිනිශ්චිත සං component ටකයක දෙපැත්තක් වී සහ සී දැකිය හැකි අතර, පහළට යන විට අනිවාර්යයෙන්ම මෙය වැටෙනු ඇත U යූඅයි පාලක සහ පාදක විජට් වැනි කෙටි පරිමාණයන්ට ය. මෙම මට්ටමේ කැටිති මට්ටමේ දී, එම්වීපී එතරම් තේරුමක් නැත. ඊට පටහැනිව විශාල පරිමාණයකට ගිය විට, නිසි අතුරුමුහුණත වඩාත් වැදගත් වේ, නිසැකවම වගකීම් පැවරීම හා සමාන වේ, මෙහි එම්වීපී පැමිණේ.

අනෙක් අතට, මාපට ඇඟිල්ලක මෙම පරිමාණ රීතිය, එම්වීපී වලට වඩා එම්වීසී ක්‍රියාවට නැංවීම පහසු යැයි පෙනෙන වෙබ් අඩවි මෙන්, වේදිකා ලක්ෂණ, සංරචක අතර යම් ආකාරයක සම්බන්ධතාවයකට කැමති වන විට බර අඩු විය හැකිය.


4

මම හිතන්නේ අර්වින් වැන්ඩර්වොක්ගේ (සහ ඒ සමඟ ඇති ලිපිය ) එම්වීසී, එම්වීපී සහ එම්වීවීඑම්, ඒවායේ සමානකම් සහ ඒවායේ වෙනස්කම් පිළිබඳ හොඳම පැහැදිලි කිරීම වේ. මෙම ලිපිය මේ ලිපියේ මාතෘකාව "MVC" යන වචනය සහ "වයස් භේදයක්" අන්තර්ගත නොවන නිසා "MVC, වයස් භේදයක්, සහ MVVM" මත විමසුම් සඳහා සෙවුම් යන්ත්ර ප්රතිපල පෙන්නුම් නැත; නමුත් එය හොඳම පැහැදිලි කිරීම යැයි මම සිතමි.

MVC, MVP සහ MVVM පැහැදිලි කරන රූපය - අර්වින් වැන්ඩර්වොක් විසිනි

( බොබ් මාටින් මාමා සිය එක් කතාවක දී පැවසූ දෙයට ද මෙම ලිපිය ගැලපේ: එම්වීසී මුලින් නිර්මාණය කර ඇත්තේ කුඩා UI සංරචක සඳහා මිස පද්ධතියේ ගෘහ නිර්මාණ ශිල්පය සඳහා නොවේ)


3

MVC හි බොහෝ සංස්කරණ ඇත, මෙම පිළිතුර ස්මාල්ටෝක් හි මුල් MVC ගැන ය. කෙටියෙන් කිවහොත් එය එසේ ය mvc vs mvp හි රූපය

මෙම කථාව droidcon NYC 2017 - ගෘහ නිර්මාණ සංරචක සමඟ පිරිසිදු යෙදුම් නිර්මාණය එය පැහැදිලි කරයි

රූප විස්තරය මෙහි ඇතුළත් කරන්න රූප විස්තරය මෙහි ඇතුළත් කරන්න


6
MVC හි ආකෘතිය කිසි විටෙකත් දෘෂ්ටියෙන් කෙලින්ම කැඳවනු
නොලැබේ

5
මෙය සාවද්‍ය පිළිතුරකි. නොමඟ නොයන්න. ඕරෝඩි ලියන පරිදි, දර්ශනය සහ ආකෘතිය අතර අන්තර්ක්‍රියාකාරිත්වයක් නොමැත.
ෂෝන් මේහාන්

MVC රූපය සාවද්‍ය හෝ වඩාත්ම නොමඟ යවන සුළුය, කරුණාකර මෙම පිළිතුර කෙරෙහි අවධානය යොමු නොකරන්න.
ජේ

2
1 ජය 1 බී “නිවැරදි” යැයි ඔබ සිතන්නේ කුමක්ද? මෙම පිළිතුර මුල් එම්වීසී ගැන ය. වේදිකාවට අනුවර්තනය වීම සඳහා වෙනස් කරන ලද තවත් බොහෝ MVC (iOS වැනි) ඇත, කියන්නUIKit
onmyway133

ඊතල වලින් අදහස් කරන්නේ කුමක්ද?
problemmofficer

3

සරලම පිළිතුර නම් දර්ශනය ආකෘතිය සමඟ අන්තර්ක්‍රියා කරන ආකාරයයි. එම්වීපී හි දර්ශනය යාවත්කාලීන කරනු ලබන්නේ ඉදිරිපත් කරන්නා විසිනි, එය දර්ශනය සහ ආකෘතිය අතර අතරමැදියෙකු ලෙස ක්‍රියා කරයි. ඉදිරිපත් කරන්නා දර්ශනයෙන් ආදානය ලබා ගන්නා අතර එය ආකෘතියෙන් දත්ත ලබා ගන්නා අතර පසුව අවශ්‍ය ඕනෑම ව්‍යාපාර තර්කනයක් සිදු කර දර්ශනය යාවත්කාලීන කරයි. MVC හි මාදිලිය පාලකය හරහා ආපසු යෑමට වඩා කෙලින්ම දර්ශනය යාවත්කාලීන කරයි.


මම පහත් කොට සලකමි, මක්නිසාද යත්, ආකෘතිය එම්වීසී හි දර්ශනය ගැන කිසිවක් නොදන්නා නිසා සහ ඔබ ලියන විට එය කෙලින්ම යාවත්කාලීන කිරීමට නොහැකි බැවිනි.
ගැටළුකරු

1
විකිපීඩියාවේ MVC දෙස බලන්න, එය හරියටම ක්‍රියාත්මක වන්නේ එලෙසයි.
ක්ලයිව් ජෙෆ්රීස්

1
පා readers කයන් කැමති වුවත් නැතත්, ගොග්ලිං මගින් සොයාගත හැකි බොහෝ ප්‍රභවයන් පවසන්නේ එම්වීසී හි දර්ශනය ආකෘතියේ යාවත්කාලීන කිරීම් සඳහා දායක වන බවයි. හා සමහර අවස්ථා වලදී පවා හැකි විය පාලකය සහ ඒ නිසා පතා මෙවැනි යාවත්කාලීන. ඔබ එයට අකමැති නම්, එම ලිපි ගැන පැමිණිලි කරන්න, නැතහොත් එකම නීත්‍යානුකූල මූලාශ්‍රය යැයි ඔබ සිතන 'බයිබලය' සඳහන් කරන්න, එහි ඇති අනෙක් තොරතුරු යලි යලි යොමු කිරීම වෙනුවට පිළිතුරු පහත් කිරීම වෙනුවට!
underscore_d

1
වචන නියත වශයෙන්ම වැඩිදියුණු කළ හැකි නමුත්, දර්ශනය MVC හි ආකෘතියේ වෙනස්කම් වලට දායක වන බව සත්‍යයකි. ආකෘතියට MVC හි දර්ශනය දැන ගැනීමට අවශ්‍ය නොවේ.
elysium කා දැමීය

3

නැත මේ ඔහු කෙටියෙන් පැහැදිලි එහිදී අංකල් බොබ් සිට ලස්සන වීඩියෝ MVC සහ වයස් භේදයක් අවසානයේ.

IMO, MVP යනු MVC හි වැඩිදියුණු කළ අනුවාදයක් වන අතර එහිදී ඔබ පෙන්වන්නේ කුමක් ද යන්න (දත්ත) ඔබ දක්වන ආකාරය (දර්ශනය) වෙතින් මූලික වශයෙන් වෙන් කරයි. ඉදිරිපත් කරන්නාට ඔබේ යූඅයි හි ව්‍යාපාරික තර්කනය ඇතුළත් වන අතර, ඉදිරිපත් කළ යුතු දත්ත ව්‍යංගයෙන් පනවන අතර ගොළු දර්ශන ආකෘති ලැයිස්තුවක් ඔබට ලබා දේ. දත්ත පෙන්වීමට කාලය පැමිණි විට, ඔබ ඔබේ දර්ශනය (බොහෝ විට එකම හැඳුනුම්පත ඇතුළත් කර) ඔබේ ඇඩැප්ටරයට ඇතුළත් කර අවම වශයෙන් කේත ප්‍රමාණයක් හඳුන්වා දී ඇති (දර්ශන කට්ටල භාවිතා කරමින්) එම දර්ශන ආකෘති භාවිතා කරමින් අදාළ දර්ශන ක්ෂේත්‍ර සකස් කරන්න. එහි ප්‍රධාන වාසිය නම් තිරස් ලැයිස්තුවක හෝ සිරස් ලැයිස්තුවක අයිතම පෙන්වීම වැනි බොහෝ / විවිධ අදහස් වලට එරෙහිව ඔබේ UI ව්‍යාපාර තර්කනය පරීක්ෂා කළ හැකිය.

MVC හි, අපි විවිධ ස්ථර මැලියම් කිරීම සඳහා අතුරුමුහුණත් (මායිම්) හරහා කතා කරමු. පාලකය යනු අපගේ ගෘහ නිර්මාණ ශිල්පයට ප්ලග් ඉන් එකක් වන නමුත් පෙන්විය යුතු දේ පැනවීමට එවැනි සීමාවක් නොමැත. ඒ අර්ථයෙන් ගත් කල, එම්වීපී යනු ඇඩැප්ටරයන් හරහා පාලකයට ප්ලග් කළ හැකි අදහස් සංකල්පයක් සහිත එම්වීසී ය.

මෙය වඩා හොඳ උපකාරී වනු ඇතැයි මම බලාපොරොත්තු වෙමි.


2
බොබ් මාමාගේ වැදගත් කරුණ: මුලින් ට්‍රිග්ව් රීන්ස්කොග් විසින් සොයා ගන්නා විට, එම්වීසී යන්නෙන් අදහස් කළේ එක් එක් විජට් සඳහා සම්පූර්ණ ස්වරූපය නොවේ.
බැසිල් බෝර්ක්

2

Action-Domain-Responder ( ADR ) ගැන ඔබට අමතක විය .

ඉහත සමහර ග්‍රැෆික්ස් වල පැහැදිලි කර ඇති පරිදි, MVC හි ආකෘතිය සහ දර්ශනය අතර relationship ජු සම්බන්ධතාවයක් / සම්බන්ධයක් ඇත. පාලකය මත ක්‍රියාවක් සිදු කරනු ලබන අතර එය ආදර්ශය මත ක්‍රියාවක් සිදු කරයි . දී ඇති බවයි පියවර ආදර්ශ , ප්රතික්රියාවක් පුපුරවා හරිනු ඇත තුළ දැක්ම . මෙම දැක්ම , හැම විටම විට යාවත්කාලීන කරන ආදර්ශ මෙරට රාජ්ය වෙනස්කම්.

MVC නිර්මාණය කරන ලද්දේ 70 දශකයේ අග භාගයේ බවත්, වෙබය නිර්මාණය කර ඇත්තේ 80 අග භාගයේ / 90 දශකයේ මුල් භාගයේ බවත් සමහරු අමතක කරති . MVC මුලින් නිර්මාණය කළේ වෙබය සඳහා නොව ඩෙස්ක්ටොප් යෙදුම් සඳහා ය. , ආකෘතිය සහ දැක්ම එකට පවතිනු ඇත.

අපි තවමත් එකම නම් කිරීමේ සම්මුතීන් ( ආකෘති-දර්ශන-පාලකය ) භාවිතා කරන වෙබ් රාමු ( උදා: ලාරවෙල් ) භාවිතා කරන හෙයින්, එය MVC විය යුතු යැයි අපි සිතීමට නැඹුරු වෙමු, නමුත් එය ඇත්ත වශයෙන්ම වෙනත් දෙයකි.

ඒ වෙනුවට, ක්‍රියා-වසම්-ප්‍රතිචාරකයා දෙස බලන්න . ප්රබන්ධයේ දී, පාලක ක ලැබෙන ක්රියාකාරී තුළ මෙහෙයුමක් ඉටු වනු ඇත, ආදර්ශ / වසම් . මෙතෙක්, එකම. වෙනස නම්, එය එම මෙහෙයුමේ ප්‍රතිචාරය / දත්ත එක්රැස් කර විදැහුම්කරණය සඳහා ප්‍රතිචාරකයෙකුට ( උදා:) යවයිview() . එකම අංගයක් මත නව ක්‍රියාවක් ඉල්ලා සිටින විට, පාලකය නැවත කැඳවනු ලබන අතර, චක්‍රය නැවත නැවත සිදු වේ. ADR හි, ආකෘතිය / වසම සහ දර්ශනය අතර කිසිදු සම්බන්ධයක් නොමැත ( ප්‍රතිග්‍රාහකයාගේ ප්‍රතිචාරය ).

සටහන: විකිපීඩියාවෙහි සඳහන් වන්නේ, “ කෙසේ වෙතත්, සෑම ADR ක්‍රියාවක්ම වෙනම පන්ති හෝ වසා දැමීම් මගින් නිරූපණය කෙරේ. ” මෙය අනිවාර්යයෙන්ම සත්‍ය නොවේ . ක්‍රියා කිහිපයක්ම එකම පාලකය තුළ තිබිය හැකි අතර රටාව තවමත් එසේමය.


1
  • MVC හි, View හි UI කොටස ඇත, පාලකය යනු දර්ශනය සහ ආකෘතිය අතර මැදිහත්කරු වන අතර ආකෘතිය ව්‍යාපාර තර්කනය අඩංගු වේ.
  • එම්වීපී හි, දර්ශනය තුළ යූඅයි සහ ඉදිරිපත් කරන්නා ක්‍රියාත්මක කිරීම යන දෙකම අඩංගු වේ. මෙහි සිට ඉදිරිපත් කරන්නා අතුරු මුහුණතක් පමණක් වන අතර ආකෘතිය එකම වේ, එනම් ව්‍යාපාර තර්කනය අඩංගු වේ.

-1

එම්වීපී

MVP යනු ආදර්ශ - දර්ශන- ඉදිරිපත් කරන්නා යන්නයි. මෙය 2007 මුල් භාගයේදී මයික්‍රොසොෆ්ට් විසින් ස්මාර්ට් සේවාලාභී වින්ඩෝස් යෙදුම් හඳුන්වා දුන් පින්තූරයකට පැමිණියේය.

ඉදිරිපත් කරන්නෙකු එම්වීපී හි අධීක්ෂණ කාර්යභාරයක් ලෙස ක්‍රියා කරන අතර එය දර්ශන සිදුවීම් සහ ව්‍යාපාර තර්කනය ආකෘති වලින් බැඳී ඇත.

දර්ශන අතුරුමුහුණතකින් ඉදිරිපත් කරන්නා තුළ සිදුවීම් සිදුවීම් බන්ධනය ක්‍රියාත්මක වේ.

දර්ශනය පරිශීලක යෙදවුම් සඳහා ආරම්භකයා වන අතර පසුව සිදුවීම් ඉදිරිපත් කරන්නාට පවරන අතර ඉදිරිපත් කරන්නා සිදුවීම් බන්ධන හසුරුවන අතර ආකෘති වලින් දත්ත ලබා ගනී.

වාසි: දර්ශනය සතුව ඇත්තේ UI පමණක් කිසිදු තර්කනයක් නොවේ ඉහළ මට්ටමේ පරීක්ෂණ හැකියාවකි

අවාසි: සිදුවීම් බන්ධන ක්‍රියාත්මක කිරීමේදී බිට් සංකීර්ණ හා වැඩි වැඩ

එම්වීසී

MVC යනු ආදර්ශ-දර්ශන-පාලකයයි. ආකෘති නිර්මාණය කිරීම සහ බන්ධන ආකෘති සමඟ අදහස් ඉදිරිපත් කිරීම පාලකගේ වගකීම වේ.

පාලකය ආරම්භකයා වන අතර එය ඉදිරිපත් කළ යුත්තේ කුමන මතයද යන්න තීරණය කරයි.

වාසි: තනි වගකීම් මූලධර්මය අවධාරණය කිරීම ඉහළ මට්ටමේ පරීක්ෂණ හැකියාව

අවාසි: සමහර විට එකම පාලකය තුළ විවිධ අදහස් දැක්වීමට උත්සාහ කරන්නේ නම් පාලකයන් සඳහා වැඩිපුර වැඩ කිරීම.

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.