wait لطفا صبر کنید
02 بهمن 1395
صفحه اصلی  » مقالات
1393/11/12
7832
00

آشنایی با معماری MVC (بخش اول)

معماری MVC (Model-View-Controller) یک معماری نرم افزاری بمنظور جداسازی نمایش داده ها از ارتباط کاربر می باشد.

معماري MVC (Model-View-Controller)يك معماري نرم افزاري بمنظور جداسازي نمايش داده ها از ارتباط كاربر مي باشد.

بخش Model شامل داده هاي برنامه، قوانين تجاري، منطق و توابع برنامه مي باشد. يك View نيز مي تواند نمايش خروجي باشد، مثل يك نمودار و يا جدول. براي مجموعه يكساني از داده ها مي توان نمايش هاي متنوعي را داشت. به عنوان مثال مي توان يك نمايش نموداري براي مدير سيستم داشته و يك نمايش جدولي از همان داده ها را براي حسابداران ارائه داد. بخش Controller نيز در واقع به عنوان رابط بين دو بخش Model و View عمل مي كند.

 

·   Controller: به View مرتبط دستور مي دهد تا نوع نمايش Model را تغيير دهد (به عنوان مثال اسكرول كردن در يك داكيومنت). همچنين مي تواند به Model دستور دهد تا حالت خود را بروز كند (به عنوان مثال ويرايش كردن يك داكيومنت).

·   Model: تغيير وضعيت خود را به دو بخش ديگر اعلام مي كند. بدين ترتيب بخش View نمايش بروز شده را ارائه دهد و بخش Controller نيز مجموعه دستورات خود را بروز مي كند.

·    View: اين بخش داده هاي مورد نياز خود براي توليد يك نمايش را از بخش مدل دريافت مي كند.

شايد اين سوال پيش بيايد كه چه نيازي به طي اين همه مراحل براي رسيدن نتيجه و نمايش آن به كاربر مي باشد. اما خدمتي كه اين مدل ارائه مي دهد، جداسازي مفاهيم و قابل استفاده مجدد بودن كد مي باشد. جداسازي مفاهيم كمك مي كند تا بتوان سيستم را بسيار راحت تر تغيير و يا توسعه داد.

به عنوان مثال فرض كنيد برنامه اي نوشته و آن را به مشتريان تحويل داده ايد. پس از مدتي از شما خواسته مي شود كه امكانات ديگري به برنامه اضافه گردد. به عنوان مثال علاوه بر نمايشهاي جدولي، نمايش هاي نموداري و امكان ذخيره سازي در فايلها نيز اضافه گردند. در اين صورت اگر براي دسترسي به داده هاي مورد نياز هر فرم به صورت مستقيم با پايگاه داده ارتباط برقرار شده باشد، تغييرات و توسعه هاي آتي در نرم افزار به سختي و با مشكل همراه خواهد بود. در حاليكه استفاده از معماري MVC اين مشكل را حل و امكان توسعه نرم افزارها را راحت تر مي كند.

در معماري MVC روند كلي برنامه به اين شكل است كه كاربر تقاضاي خود را از طريق واسط هاي برنامه نويسي از بخش View درخواست مي كند. بخش View در خواست ها را به بخشController  فرستاده و اين بخش با برقراري ارتباط با بخش Model درخواست هاي كاربر را پردازش كرده و پس از پايان پردازش زماني كه خروجي درخواست داده شده آماده گرديد، بخش Controller بخش View را آگاه مي سازد تا خود را بر اساس تغييرات جديد كه اصطلاحا در معماري MVC به آن حال Model مي گويند، بروز كند. در واقع چيزي كه باعث مي شود تا بخش Controller به بخشView  اطلاع دهد كه بايد حالت جديد Model را دريافت كند و خود را Update كند اين است كه بخش View بايد قبلا خودش را در بخش Model اصطلاحا Register كرده باشد كه البته عمل Register كردن توسط بخش Controller انجاام مي گيرد.

به عنوان يك مثال ساده بسياري از برنامه نويسان زماني كه در فرم Login برنامه، كاربر كلمه عبور خود را وارد مي‎‎كند، در همان فرم Login اقدام به چك كردن پسورد مبني بر صحت آن و . . . مي كنند. كه اين عمل در معماري  MVCقابل قبول نيست! در واقع براي حل اين مسئله در معماري MVC، در فرم Login هنگامي كه كاربر كلمه عبور را وارد كرد و دكمه Login يا ورود را زد، كلمه عبور داده شده بدون هيچ گونه اعمالي اعم از Encrypt كردن و . . . به بخش هاي ديگر فرستاده مي شود و فقط يك نتيجه ساده مبني بر اين كه كاربر اجازه ورود دارد يا خير را از بخش هاي ديگر دريافت ميكند كه بر اساس ان اجازه ورود كاربر به برنامه داده ميشود.

امروزه فريم ورك هاي زيادي وجود دارند كه امكان پياده سازي معماري MVC را در برنامه هاي تحت وب فراهم مي كنند. فريم ورك هاي MVC اوليه تقريبا تمام سه بخش Model، View و Controller را در سمت سرور پياده مي كردند. در اين فريم ورك ها درخواست كاربر به كنترلر ارسال شده و پاسخ آن به صورت يك صفحه و يا فرم از view دريافت مي شد. پس از احساس نياز به كم كردن بار سرورها فريم ورك هايي چون JavascriptMVC و Backbone ارائه گرديدند كه امكان اجراي بخش هاي از معماري MVC را بر روي كلاينت ها فراهم كردند.