MVC

MVC ဆိုတာကတော့ Model View Controller ဆိုတာ သိပြီးသားပြီးသားပါ။ ဒါပေမယ့် MVC ကို programming နဲ့ ရောထွေးနေကြတယ်။ MVC ဆိုတာ pattern တစ်ခုပါ။ Software Engineering မှာ အသုံးပြုတဲ့ architectural pattern လို့ဆိုရလိမ့်မယ်။ ဒါကြောင့် သူ့ကို Language တစ်ခုနဲ့ တစ်ခု အသုံးပြုပုံမတူဘူး။ နောက်ပြီး framework တစ်ခုနဲ့ တစ်ခု အသုံးပြုပုံမတူဘူး။ ဒါပေမယ့် သဘောတရားနဲ့ အနှစ်သာရကတော့ အတူတူပဲ။ CodeIgniter ရေးတတ်တာနဲ့ MVC ဆိုတာ ဒီလို ရေးရပါလားလို့ ထင်ရင်တော့ မဟုတ်ပါ။ CodeIgniter မှာ MVC ကို ရေးပုံနဲ့ Symfony မှာ ရေးပုံက မတူဘူး။ နောက်ပြီး iPhone SDK ကလည်း MVC ပဲ။ ဒါပေမယ့် တည်ဆောက်ပုံတွေ မတူဘူး။

နောက်ပြီး MVC သုံးလို့ မြန်သွားတယ်လို့ အများကပြောကြတဲ့အခါမှာ process တွေ မြန်သွားတာကိုပြောတာမဟုတ်ဘူး။ ဥပမာ။။ ဒီစာမျက်နှာ ၁ မိနစ်နဲ့တက်လာရမှာကို စက္ကန့် ၃၀ ကတည်းနဲ့ တက်လာတယ်လို့ ဆိုလိုတာမဟုတ်ပါဘူး။ Workflow တွေ မြန်လာတယ်။ နောက်ပြီး မလိုအပ်တာတွေ လျော့သုံးလာနိုင်တယ်။ Duplicate work တွေ လျော့ချနိုင်လာတယ်။ အဲဒါတော့ project တစ်ခုလုံး မြန်မြန်ပြီးလာနိုင်တာကို ပြောတာပါ။ နောက်ပြီးတော့ MVC က programming language ရဲ့ Addon လည်း မဟုတ်ပါဘူး။ အပေါ်မှာ ပြောခဲ့သလို architectural pattern ပါ။

MVC ဘယ်လိုအလုပ်လုပ်လဲ
MVC လို့ဆိုပေမယ့် တကယ်တန်း အလုပ်လုပ်သွားတာကတော့ CMCV လို့ ဆိုရမယ် ထင်တယ်။ အများအားဖြင့် CMCV ပုံစံနဲ့ အလုပ်လုပ်သွားတယ်။ တချို့ framework တွေကျပြန်တော့လည်း CMV နဲ့ အလုပ်လုပ်သွားတယ်။ အောက်က ပုံလေး ကို တချက်လောက် ကြည့်လိုက်ပါ။

အရင်ဆုံး site တစ်ခုကို သွားပြီဆိုပါတော့။ CodeIgniter မှာ ဆိုရင်

http://www.mysite.com/index.php/mycontroller/myaction

ဆိုပြီး ခေါ်လိုက်တယ်။

mycontroller ဆိုတာက controller ကို ခေါ်လိုက်ပြီးတော့ myaction ကတော့ controller ထဲမှာ ရှိတဲ့ function name ကို လှမ်းခေါ်လိုက်တာပါ။

ရှင်းသွားအောင် ဂဏန်း ၂ လုံး ပေါင်းတာကို MVC နဲ့ ရှင်းပြပါမယ်။

http://www.mystie.com/index.php/math/sum/5/6

အဲဒါဆိုရင် math controller ထဲက sum ဆိုတဲ့ function ကို ခေါ်လိုက်တယ်။ sum ဆိုတဲ့ function ကနေ 5 နဲ့ 6 ကို ယူလိုက်တယ်။

ဒါက အဆင့် ၁ ပေါ့။

အဆင့် ၂ မှာ ပြထားသလို Model ကို ခေါ်မယ်။ math model ကို ကျွန်တော် တို့ ခေါ်လိုက်မယ်။ math model ထဲမှာ sum function ရှိမယ်။ အဲဒီအတွက် function parameter ၂ ခု ပေးလိုက်မယ်။ ပြီးတော့ အဖြေ return လာမယ်။ ဒီလိုလေးပေါ့။

$this->load->model(‘math_M’);

$data['sumresult']=$this->math_M->sum(5,6);

အဆင့် ၃ မှာ ပြထားသလို model က process လုပ်ပြီးတော့ controller ကို return ပြန်လိုက်တယ်။ အဆင့် ၄ မှ ပြထားတဲ့ အတိုင်း ကျွန်တော်တို့တွေ view ကို ခေါ်ပြီး view ကနေ result ကို ပြလိုက်တယ်။

$this->load->view(‘result_view’,$data);

ဒါဆိုရင် result view ကို user က မြင်လိုက်ရပြီ။ ဒါက MVC အလုပ်လုပ်သွားပုံပါ။ တစ်ချို့ framework တွေက controller ကနေ view လှမ်းခေါ်ခွင့်ပေးထားသလို Model ကနေ view ကို လှမ်းခေါ်ခွင့်ပေးထားတာတွေ ရှိပါတယ်။

အဲဒီ လို MVC လုပ်လိုက်တဲ့အတွက်ကြောင့် Designer က Design ပြင်တဲ့အခါမှာ ဒီဘက်က code တွေကို လာမထိခိုက်တော့ဘူး။ အဲလိုပဲ အချို့ core function ပြင်တဲ့အခါမှာ model ကိုပဲ ပြင်ရတဲ့အတွက် address ပြောင်းသွားတာတို့ မရှိတော့ဘူး။ နောက်ပြီး controller တစ်ခုမှာ model က တစ်ခုထက် မက ရှိတတ်တဲ့အတွက် လိုအပ်တဲ့ model ကိုပဲ ပြင်ရုံပဲ။

တနည်းပြောရရင် code collaboration လုပ်ဆောင်ရာမှာ အဆင်ပြေလာတာပေါ့။ သူလည်း သူ့အပိုင်း သူပြင်။ ကိုယ်လည်း ကိုယ့်အပိုင်း ကိုယ်ပြင်ပေါ့။ Developer ပြင်နေလို့ Designer က Design ပြင်လို့မရဘူးဆိုပြီး မရှိတော့ဘူး။ နောက်ပြီး ရှိပြီးသား Model တွေကို controller မှာ လှမ်းခေါ်လိုက်ရုံပဲ။ အဲဒီအတွက် Code Duplication တွေလျော့ကျစေပါတယ်။

အခုနောက်ပိုင်းမှာ framework တော်တော်များများ MVC သုံးလာကြပါပြီ။ .NET လည်း MVC သုံးလာကြပါပြီ။ CodeIgniter မှာဆိုရင် MVC ကနေ HMVC အဓိ ပြောင်းလဲ အသုံးပြုလာကြတာကို တွေ့ရပါတယ်။ ဒါကြောင့် Web Developer တစ်ယောက် အနေနဲ့ MVC ဆိုတာ ဘာလဲဆိုတာကိုတော့ အနည်းနဲ့ အများသိထားခြင်းအားဖြင့် MVC သုံးထားတဲ့ Framework တွေကို အသုံးပြုတဲ့အခါမှာ တီးမိခေါက်မိပါလိမ့်မယ်။

One thought on “MVC

  1. Pingback: Ahkeno » Blog Archive » MVC

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>