Mvc mtv
@code_crafters


معماری MVC
معماری MVC مدت زیادیه که وجود داشته ولی از زمان ظهور اینترنت رشد زیادی داشته به این دلیل که بهترین راه طراحی اپلیکیشن های کلاینت – سرور هست و اکثر فریمورک های محبوب هم از این معماری استفاده میکنند و اگر در طراحی وب اپ هاتون از این معماری استفاده نمیکنید احتمالا دارید راه رو اشتباه میرید.
مفهوم معماری MVC خیلی ساده هست :
- حرف M که مخفف مدل هست یک مدل یا نمایشی از دیتای شما هست، دیتای واقعی شما نیست بلکه ظاهری از اون هست.این مدل به شما اجازه میده که دیتا رو از درون دیتابیس بیرون بکشید ( همون پول کردن) بدون اینکه مجبور باشید با پیچیدگی های یک دیتابیس سر و کله بزنید. این مدل معمولا یک لایه انتزاعی اراعه میده که شما میتونید از یک مدل برای چندین دیتابیس استفاده کنید.
- حرف V که مخفف ویو هست، چیزیه که شما میبینید. در واقع مدل شما رو اراعه میده. توی کامپیوتر شما، ویو چیزیه که شما توی براوزرتون میبیند یا حتی یک رابط کاربری واسه یک اپ دسکتاپ. همچنین ویو یک اینترفیسی رو به شما اراعه میده یک میتونید اینپوت های کاربر رو دریافت کنید
- حرف C که مخفف کنترلر هست در واقع جریان اطلاعات بین مدل و ویو رو کنترل میکنه. از منطق برنامه ریزی شده استفاده میکنه تا تصمیم بگیره که مدل چه اطلاعاتی رو باید از دیتابیس پول بکنه و چه اطلاعاتی باید پاس داده بشه به ویو، همچنین اطلاعات رو از کاربر از طریق ویو میگیره و تصمیم میگیره که چه بیزینس لاجیکی باید پیاده سازی بشه : با تغییر دادن ویو یا تغییر دیتا از طریق مدل یا هر دو.
جایی کار دشوار میشه که تفسیر های ادم ها از کارهایی که قراره در هر لایه انجام بشه متفاوت هست، مثلا یک نفر میگه فلان فانکشن باید تو ویو باشه و نفر دیگه میگه اتفاقا باید در کنترلر باشه.
شما به عنوان یک برنامه نویس که داری کارت رو انجام میدی نباید به این چیز ها اهمیت بدی چون در اخر اهمیتی نداره.
تا زمانی که متوجه بشی جنگو چطور معماری MVC پیاده سازی میکنه شما ازادی هر کاری بکنی.
جنگو تا حد زیادی از معماری MVC پیروی میکنه، اگرچه از منطق خودش توی پیاده سازی استفاده میکنه، چون کنترلر رو خود فریمورک جنگو هندل میکنه و بیشتر اتفاقات جنگو داخل مدل ها، تمپلیت ها و ویو ها رخ میده.
معمولا از جنگو، به عنوان یک فریمورک MTV یاد میکنند : Model Template Veiw
مدل در اینجا مانند همان مدل MVC و به لایه دیتا دسترسی داره. این لایه هرچیزی که مربوط به دیتا هست رو در بر داره : چجوری بهشون دسترسی داشته باشه - چجوری اعتبارسنجی بشن – چه رفتاری داشته باشه و ارتباط بین داده ها به چه شکل باشند.
تمپلیت هم مثل ویو در معماری MVC که لایه اراعه دهنده هست اما با این تفاوت که اینجا نحوه نمایش دادن دیتا هم برای ما مهم هست و به طور کل تمام چیزهایی که برای نمایش دادن اطلاعات روی براوزر شما هست رو به عهده داره.
ویو هم مانند کنترلر در MVC هست که لایه بیزینس لاجیک هست و یک کامپوننت مهم حساب میشه. لایه بیزینس لاجیک یعنی پروسس کردن دیتا و پیاده سازی قوانین بیزینس رو پیاده سازی میکنه، همچنین یک پل ارتباطی بین مدل و تمپلیت هست که امنیت و پرفورمنس اپلیکیشن رو تقویت میکنه.
@code_crafters