PDA

View Full Version : معماری نرم افزارهای Rails



Hibernate
دوشنبه 10 اردیبهشت 1386, 17:46 عصر
معماری نرم افزارهای Rails

یکی از ویژگیهای جالب Rails این است یک سری شرایط را در ساختار نرم افزار تحمیل میکند و البته باید بگویم این شرایط به طرز عجیبی توسعه نرم افزار را آسان و خیلی آسان میکند. حال ببینیم چرا؟

Models، View و Controllers
در سال 1979 Trygve Reenskaugبا ساختار جدیدی در توسعه نرم افزارهای کاربردی ظهور کرد. در طرح او برنامه های کاربردی به سه قسمت شکسته میشدند: Models، Views و Controllers.
Model مسول نگهداری حالت(State) نرم افزار است. گاهی اوقات این حالت بسیار زودگذر بوده و به مقداری ارتباط بین کاربر و برنامه ختم میشود. گاهی اوقات این حالت پایدار بوده و خارج از برنامه نگهداری میشود، اغلب در یک پایگاه داده.
یک Model فراتر از داده هاست به طوریکه تمام قوانین تجاری کد نویسی را به آن داده ها اعمال میکند، برای مثال اگر تخفیف کمتر از 20$ نباید به سفارشات اعمال شود، Model آنرا به عنوان یک شرط اعمال میکند. بنابراین با پیاده سازی قوانین تجاری در Model ما مطمئن میشویم که هیچ چیز دیگری نمیتواند نرم افزار ما را دچار خرابی در داده ها کند. در اینجا Model هم بعنوان نگهبان و هم به عنوان منبع ذخیره عمل میکند.

View مسولیت ایجا رابط کاربر (User Interface) را براساس داده های موجود در Model دارد. برای مثال یک فروشگاه اینترنتی را در نظر بگیرید که شامل لیستی از محصولات برای نمایش در صفحه میباشد، این لیست از طریق model قابل دسترس خواهد بود اما این view است که آن لیست را از model تحویل گرفته و با شکل و قالبی خاص برای کاربر به نمایش در می آورد. اگر چه ممکن است View داده های ورودی را برای کاربر با روشهای گوناگون به نمایش بگذارد اما View هرگز خودش به اداره داده های ورودی نمی پردازد. زمانیکه داده ها به نمایش در می آیند کار View انجام شده است، اگر چه ممکن است view های دیگری برای اهداف دیگر به همان Model دسترسی داشته باشند.

file:///G:/DOCUME%7E1/ABC2E2%7E1.MAH/LOCALS%7E1/Temp/msohtmlclip1/01/clip_image001.png


مثلا در یک فروشگاه اینترنتی یک view اطلاعات مربوط به یک محصول را نمایش داده و view های دیگر برای اضافه کردن و ویرایش محصولات توسط مدیر مورد استفاده قرار میگیرد.

Controllersبرای هماهنگی برنامه مورد استفاده قرار میگیرد. Controller ها رویدادها را از دنیای خارج (مثل ورورد داده ها توسط user) دریافت نموده، با Model ارتباط برقرار کرده و View مورد نظر را برای کاربر به نمایش در می آورد.
معماری MVC به عنوان یک انتخاب زیرکانه در نرم افزارهای GUI مورد استفاده قرار میگیرد و باعث میشود توسعه، پیاده سازی و نگهداری نرم افزار بسیار ساده تر گردد. هر نوع فکر و عقیده و یا عملیات فقط در یک محل شناخته شده اظهار میگردد. (به عبارت دیگر هر بخش از نرم افزار - در نرم افزارهایی که براساس اصول درست مهندسی نرم افزار طراحی شده اند - در جایگاه مخصوص به خودش بایستی قرار گیرد). استفاده از MVC شبیه به ساختن یک آسمانخراش به وسیله تیرهای آهنین میباشد.

در دنیای نرم افزار معمولا همیشه به آینده نگاه میشود و از گذشته خبری نیست. توسعه دهندگان نرم افزارهای تحت Web معمولا بخش های رابط کاربر، دسترسی به پایگاه داده، منطق تجاری (Business Logic) و اداره کردن رویدادها را در هم آمیخته و باعث به وجود آمدن خیل عظیمی از کدها در یک محل شده که مدیریت آنها بسیار مشکل است در حالیکه معماری MVC از سالها پیش در Webobjects، Java Server Faces و Struts مورد استفاده قرار می گرفته است.
file:///G:/DOCUME%7E1/ABC2E2%7E1.MAH/LOCALS%7E1/Temp/msohtmlclip1/01/clip_image002.png

Rails نیز یک محیط براساس معماری MVC میباشد. Rails ساختاری را برای برنامه شما ایجاد کرده و باعث میشود شما بخشهای Model، View و Controller را به صورت جداگانه توسعه دهید.
Agile Web Development with Rails
by:
Dave Thomas
David Heinemeier Hansson

گروه توسعه نرم افزار مهرزاد
Mehrzad Software Development

http://www.mehrzadsoft.com/develop03.htm