Mvvm pattern සරලව

nkt

Well-known member
  • Aug 11, 2015
    4,286
    4,129
    113
    Mvvm pattern එක සරලව

    මම අද කියල දෙන්නේ mvvm (model-view-viewmodel) basics ටිකක්.
    programming කරන අය දන්නව ඇති app එකක code ලියද්දි හොද පැහැදිලි plan එකක් තියෙන්න ඕන කියල .. Windows app ලියද්දි භාවිතා කරන බොහොම ප්‍රසිද්ද pattern එක mvvm pattern එක ... ඉතින් මොකද්ද මේ mvvm pattern එක ..

    සැලකිය යුතුය්:= මම හිතනවා ඔබට windows programming/ c# ගැන මුලික දැනුමක් තිබේ කියා ..:yes:

    මෙතැනදී මුලික කරුණු 3ක් තියෙනවා .

    1.model
    2.viewmodel
    3.view

    ඒවගේම 4 හැටියට services ගන්න පුළුවන් .

    model

    මේක තමා අපේ business object එක .. අපි හිතමු අපේ app එක contact app එකක් කියල .. එතකොට මේකේ model එක හැටියට අපිට පුළුවන් contact object එකක් සලකන්න .. එකද තතියෙන්න පුළුවන් Name,Number වගේ properties..

    view

    view එක කියන්නේ අපේ app එකේ page එකක් ,, නැත්නම් window එකක් ..
    මෙතැනදී මෙයාගේ code behind file එක තිඑන්න පුළුවන් visuals සම්බන්ද code විතරය්.. business Logic තියෙන්න බෑ. මොකද mvvm pattern එක මූලධර්මයක් තමා view එක model එක ගැන මොනවත් දැනගන්න බෑ කියන එක ..

    viewmodel

    මේක තමා view එක හා model එක අතර ඉදගෙන එදෙක අතර ගනුදෙනු කරන්නේ . හරියට සමාදාන විනිශ්චයකාරයෙක් වගේ. මොකද view එක කැමති නෑ කෙලින්ම model එක ගැන දන ගන්න.. ඇත්තටම කිව්වොත් view එක දන්නේ නෑ model එකේ තියෙන දෙවෙල් කොහොමද පාවිච්චි කරන්නේ කියල. viewmodel එක තමා දන්නේ model එකේ තියෙන දේවල් අරගෙන view එකට තේරෙන විදියට සකස් කරන්න ..

    හිතන්න view එකට ඕන contact එකක් user ට පෙන්නන..හැබය් view එක දන්නේ නෑ contact එක කොහෙද තියෙන්නෙ , එකේ propertys මොනාද කියල ... දැන් තමා viewmodel එක වැඩ පෙන්නන්නේ.. viewmodel එක view එකට අවශ්‍ය contact එක තියෙන තැනකින් (database හෝ web service) අරගෙන එකේ තියෙන propertys view එකට තේරෙන විදියට සකස් කරනවා . නැත්නම් view එකට ලබාගන්න පුළුවන් විදියට එකේ properties expose කරනවා..

    ඒවගේම අපි හිතමු user contact එකක් edit කරලා save කර කියල .view එක දන්නේ නෑ මේක කොහොමද කරන්නේ කියල ..නමුත් viewmodel එක දන්නවා . ඉතින් view එක viewmodel එකට කියනව මෙන්න මේ contact එක save කරන්න ,,කරලා එකේ සාර්ථකත්වය ගැන මට කියන්න කියල .

    මෙතනදී තවත් දෙයක් මතක තියන්න ඕන මම උඩ expose කියන වචනය භාවිටකරේ හේතුවක් ඇතිව .. මොකද mvvm pattern එකේ තියෙන තවත් මුලධර්මයක් තමා viewmodel එක view එක ගැන මුකුත් දන්නේ නෑ කියන එක .නමුත් එක ප්‍රශ්නයක් වෙන්නේ නෑ ,, මොකද view එක දැනගන්න ඕන තමන්ට අවශ්‍ය viewmodel එක හොයාගන්න . ඒවගේම තමි view එක viewmodel එකට කතාකරන්න යොදාගන්නේ commands..(ICommand interface එක implement කරන classes).

    මේ විදියට අපිට මොනාද viewmodel එකක ඇතුලත් කරන්න ඕන.. හරිවිදියටම pattern එක අනුගමනය කරනවානම් view එක visuals වලට අදාළ දේවල් හැර අනෙක් සැම දේම viewmodel එකෙක් තියෙන්න ඕන ,,(data ,commands ආදිය)..


    services

    services කියන්නෙ viewmodel ගේ වැඩ වලට උදව් දෙන කෙනෙක්. ඒ කියන්නේ viewmodel ට කරන්න ඕනෑතරම් වැඩ තියෙන නිසා සමහර දේවල් වලට (උදා:- database එකක් හා සම්ම්බනද දේවල් ,, file එකක් open කිරීම ) අවධානය යොමු කරන්න එයාට බෑ. එක හින්ද ඒවගේ දේවල් වල logic අපි වෙනම තැනක තියෙනවා..(abstraction) මේවට තමි services කියන්නේ.. අපි services හදන කොට හැමවෙලාවෙම පුළුවන් තරම් උත්සහ කන්න ඕන ඒවා dynamic විදියට එනම් viewmodel එකක් මත යැපෙන්නේ නැති විදියට ඒවා හදන්න .. එතකොට අපිට පුළුවන් මේ service viewmodel හැම එකේම පාවිච්චි කරන්න.



    ඉතින් මේව තමි mvvm basics :D:D ,, ඉතින් අපි ඇත්තටම මොකටද මේ pattern එක අනුගමනය කරන්න ඕන?? ..

    මේ pattern එක අනුගමනය කරාම අපිට පුළුවන් අපේ visuals හා business logic වෙන් කරන්න (Seperation of Concerns).එක බොහොම වැදගත් දෙයක්. මොකද developers ල ගොඩක් ඉන්න group එකක් නම් ,, කට්ටියකට පුළුවන් වෙනම visuals ගැන වැඩ කරන්න , අනිත් අයට පුළුවන් logic ගැන වැඩ කරන්න .. මොකද මේ දෙගොල්ලෝ එකිනෙකා මත යැපෙන්නේ නෑ .. group එකකට විතරක් නෙමෙය් තනි developer කෙනෙකුට උනත් මේ pattern එක අනුගමනය කරන එක ගොඩක් වැදගත්.. එතකොට app එකක් හදද්දී අපිට එන ගොඩක් ගැටළු එබෙම විසදෙනවා ..අපිට අපේ business logic check කරන්න UI එක ඕන නෑ .. මොකද අපිට පුළුවන් අපේ viewmodel එක unit test වලට භාජනය කරන්න .. ඉතින් මෙක බොහොම වටින දෙයක්..


    ගොඩක් අය කියනවා mvvm pattern එක අමාරු දෙයක් කියල . හැබය් මූලධර්ම හරියට අවබෝධ කර ගත්තොත් එක හරිම ලේසි fun දෙයක් :P:P..

    ඉතින් මෙටික තමා අදට ..ඉදිරියේදී මම c# code වලිනුත් මේක තව පැහැදිලි කන්නනම්,,, තවත් article එකකින් හමුවෙමු.. මේකේ වැරදි මොනාහරි තියෙනවනම්
    ඒවා comment කරන්න,,
     
    Last edited:

    The_Killer

    Well-known member
  • Jan 20, 2014
    11,053
    2,200
    113
    WA, Straya 🇦🇺🦘
    www.elakiri.com
    viewmodel එක අපිට හදුන්වන්න පුළුවන් Presenter කියලා මම හිතන්නේ. එහෙම උනහම ඔයා කියපු දේ MVP (Model-View-Presenter) වෙන්නේ. මම ගොඩක් දන්නේ නම් නෑ. ඔයාගේ උත්සාහය අගය කරනවා.

    වැඩි විස්තර: What are MVP and MVC and what is the difference?
     
    Last edited:

    nkt

    Well-known member
  • Aug 11, 2015
    4,286
    4,129
    113
    viewmodel එක අපිට හදුන්වන්න පුළුවන් Presenter කියලා මම හිතන්නේ. එහෙම උනහම MVP (Model-View-Presenter) වෙන්නේ. මම ගොඩක් දන්නේ නම් නෑ, උත්සාහය අගය කරනවා.

    MVP/MVC (model-view-presenter/model-view-controller) කියන්නේ web apps programming වලදී යොදාගන්න patterns. MVVM කියන්නේ standalone app වලදී යොදාගන්න pattern එකක් .
     
    Last edited:

    The_Killer

    Well-known member
  • Jan 20, 2014
    11,053
    2,200
    113
    WA, Straya 🇦🇺🦘
    www.elakiri.com
    MVP/MVC (model-view-presenter/model-view-controller) කියන්නේ web apps programming වලදී යොදාගන්න patterns. MVVM කියන්නේ standalone app වලදී යොදාගන්න pattern එකක් .

    මම University එකේ MVP වලින් C# Standalone Application එකක් හැදුවනේ assignment එකකට.. :shocked: Assignment brief එකේමයි එහෙම තිබ්බේ කරන්න කියලා. අනේ මන්දා. පෙර කියූ පරිදි මාගේ දැනුම සීමිතය.. :sorry::sorry:
     

    nkt

    Well-known member
  • Aug 11, 2015
    4,286
    4,129
    113
    මම University එකේ MVP වලින් C# Standalone Application එකක් හැදුවනේ assignment එකකට.. :shocked: Assignment brief එකේමයි එහෙම තිබ්බේ කරන්න කියලා. අනේ මන්දා. පෙර කියූ පරිදි මාගේ දැනුම සීමිතය.. :sorry::sorry:

    මෙහෙමය් MVP යොදාගන්නවා User interface හදනකොටත්..
    https://msdn.microsoft.com/en-us/library/ff649571.aspx

    ඔයා මොකද්ද university එකේ කරපු degree එක ?.. මමත් යන්න බලාපොරොත්තුවෙන් තමා ඉන්නේ :yes::yes:
     
    Last edited:

    nkt

    Well-known member
  • Aug 11, 2015
    4,286
    4,129
    113
    MVVM වල viewmodel එකෙයි, MVC වල controller එකෙයි අතර වෙනස මොකක්ද?

    ලොකු වෙනසක් නෑ .. ප්‍රධාන වෙනස MVVM pattern එක යොදාගන්නේ silverlite/wpf/winRT/UWP apps හදනකොට .. MVC යොදාගන්නේ ASP.net apps හදනකොට. නමුත් දෙක එක සමාන නෑ. මම MVC ගැන ගැඹුරින් හදාරා නැත :D:D
     

    kolavari

    Well-known member
  • Aug 11, 2012
    33,746
    1
    25,655
    113
    කැළෑ පොජ්ජේ
    ලොකු වෙනසක් නෑ .. ප්‍රධාන වෙනස MVVM pattern එක යොදාගන්නේ silverlite/wpf/winRT/UWP apps හදනකොට .. MVC යොදාගන්නේ ASP.net apps හදනකොට. නමුත් දෙක එක සමාන නෑ. මම MVC ගැන ගැඹුරින් හදාරා නැත :D:D

    මම ඇහුවේ කන්සෙප්ට් එකේ වෙනස? :D:yes::yes: කොහොමහරි, MVC / MVVM කියන්නේ මචන් language specific දෙයක් නෙමෙයි නේ? එක ASP.නෙට් හරි ඔයා කියන ඒවම වෙන්න ඕනේ නැහැ නේ..:baffled:
     

    The_Killer

    Well-known member
  • Jan 20, 2014
    11,053
    2,200
    113
    WA, Straya 🇦🇺🦘
    www.elakiri.com
    මම ඇහුවේ කන්සෙප්ට් එකේ වෙනස? :D:yes::yes: කොහොමහරි, MVC / MVVM කියන්නේ මචන් language specific දෙයක් නෙමෙයි නේ? එක ASP.නෙට් හරි ඔයා කියන ඒවම වෙන්න ඕනේ නැහැ නේ..:baffled:

    ඒක Desing Pattern එකක් මචං. ඕක වැඩියෙන්ම භාවිතා වෙන්නේ C# ASP. NET වලදී වගේ. නමුත් PHP, Java වල උනත් පාවිච්චි කරන්න පුළුවන්.
     

    nkt

    Well-known member
  • Aug 11, 2015
    4,286
    4,129
    113
    මම ඇහුවේ කන්සෙප්ට් එකේ වෙනස? :D:yes::yes: කොහොමහරි, MVC / MVVM කියන්නේ මචන් language specific දෙයක් නෙමෙයි නේ? එක ASP.නෙට් හරි ඔයා කියන ඒවම වෙන්න ඕනේ නැහැ නේ..:baffled:

    මෙහෙමය් මේ ගොඩක් patterns microsoft ල develop කරපු ඒවා .. ඉතින් ඒවා ගොඩක්ම යොදාගන්නේ ඒගොල්ලන්ගේ languages/frameworks වල .. එක නිසා languages/frameworks තාමා ඒවාට උපරිම support එක දෙන්නේ .. උදා:= MVVM වලදී අත්‍යවශ්‍ය වන ICommand වැනි interface php වගේ ඒවගේ නෑ
     
    Last edited: