روبی آن ریلز


یکی از ویژگی‌های قدرتمند گنو/لینوکس، داشتن امکانات زیاد برای برنامه‌نویسی است. تقریبا میشه گفت با هر زبان برنامه‌نویسی که شما دوست داشته باشید، می‌تونید در گنو/لینوکس برنامه‌نویسی کنید.

امروزه با به وجود اومدن وب ۲ و تکنیک‌هایی مثل آژاکس، وب‌سایت‌های بسیار پویایی رو می‌تونیم ببینیم. از نمونه‌های وب ۲  توییتر یا فیس‌بوک هستند.

امروز می‌خوام در مورد یک فریم‌ورک تقریبا جدید و قدرتمند به نام روبی آن ریلز صحبت کنم.

Rails

روبی آن ریلز که گاهی اوقات به آن ریلز یا RoR نیز می‌گویند، یک فریم‌ورک نرم‌افزاری تحت وب، آزاد و متن‌باز است. این فریم‌ورک با زبان ‌برنامه‌نویسی روبی نوشته شده است. هدف ریلز، ایجاد یک فریم‌ورک که از روش توسعه سریع برای برنامه‌نویسان وب استفاده می‌کند، است.

ما دو نوع معماری فریم‌ورک وب داریم:

۱- معماری مدل-نما-کنترل‌گر (Model-View-Controller) که معمولا به اون MVC گفته میشه

۲- معماری CMS

روبی آن ریلز از معماری MVC استفاده می‌کند. MVC برنامهٔ وب رو به چند قسمت تقسیم می‌کنه:

نما(View): به صفحه‌ای که کاربر نهایی اون رو می‌تونه ببینه گفته میشه

مدل(Model): مدل فراهم‌کنندهٔ دیتای ما در برنامه است. در واقع میشه گفت هر دیتایی که ما خواسته باشیم از مدل درخواست می‌کنیم. مدل  با پایگاه‌داده در ارتباط است، در واقع میشه گفت دروازهٔ پایگاه‌دادهٔ ما مدل است.

کنترل-گر(Controller): مدیر برنامهٔ ما کنترل-گراست، یعنی کاربر درخواست رو به سمت سرور می‌فرستد مدیر برنامه‌ (کنترل-گر) درخواست را بررسی و مدیریت می‌کند و اگر اطلاعاتی از پایگاه‌داده  نیاز بود، توسط مدل می‌گیرد و سپس صفحه‌ای که کاربر باید آن را ببیند توسط نما(View) برای کاربر می‌فرستد.

MVC

دو شعار اصلی ریلز Convention over Configuration و Don’t Repeat Yourself است.

«Convention over Configuration» یعنی توسعه‌دهندگان فقط نیاز دارند که قسمت‌های نامتعارف (unconventional) برنامهٔ خود را مشخص کنند. به عنوان مثال اگر کلاسی به نام Sale در مدل داشتیم، جدول متناظر آن در پایگاه‌داده‌ها به صورت پیش‌فرض sales نام دارد. اما شما می‌توانید از قراردادها استفاده نکنید، به عنوان مثال می‌توانید جدولی به نام «products sold» داشته باشید، اما توسعه‌دهندگان مجبورند که کدهای برنامهٔ خود را برای این جدول بنویسند. در حالت کلی قراردادها برای کمتر کد نوشتن و مدیریت برنامه است.

«Don’t Repeat Yourself» یعنی تمام اطلاعات شما در یک‌‌جای مشخص قرار دارند. به عنوان مثال، با استفاده از ماژول اکتیو رکورد در ریلز، برنامه‌نویس دیگر نیازی به تعریف کردن نام‌های ستون‌های پایگاه‌داده در تعریف کلاس را ندارد. اما روبی آن ریلز می‌تواند با استفاده از نام کلاس، اطلاعات را از پایگاه‌داده استخراج ‌کند.

اکتیو رکورد در ریلز یک ORM است. نقش ORM، ایجاد یک نگاشت از پایگاه‌داده به کلاس‌ها هستند که برنامه‌نویس می‌تواند از آن کلاس‌ها شی درست کند و با پایگاه‌داده ارتباط برقرار کند. یعنی با استفاده از ORM شما دیگر نیازی به نوشتن query ندارید و به راحتی می‌توانید با پایگاه داده ارتباط برقرار کنید. به عنوان به کد زیر دقت کنید:

def create

   @product = Product.new

   @product.name = "My product name"

   @product.save

end

Product، مدل ما است، می‌بینید بدون نوشتن هیچ کوئری، یک کالای جدید با نام My product name ایجاد کردیم و با دستور save آن را در پایگاه‌داده ذخیره کردیم.

به جرات می‌تونم بگم نوشتن یک وب‌سایت کامل که در اون از تکنیک آژاکس استفاده شده است، شاید کمتر ۲۴ ساعت وقت شما را بگیرد. شما می‌تونید از وب‌سایت اصلی روبی آن ریلز کار رو شروع کنید.

وب‌سایت‌های معروفی نظیر: بالاترین، توییتر، GitHub با فریم‌ورک روبی‌ آن ریلز نوشته شده‌اند.

برای اطلاعات بیشتر می‌تونید به روبی آن ریلز در ویکی سر بزنید که ترجمهٔ خودم است. شاید در آینده یک آموزش (tutorial) برای روبی آن ریلز در همین وبلاگ بنویسم.

Advertisements
  1. فوریه 9, 2010 در 11:41

    غیر از دوتا معماری که گفتی یه معماری هم وجود داره به اسم front Controller که خیلی از فریم ورک های معروف دارن می رن به اون سمت این فریم ورک بیشتر برای برنامه وب بیس ساخته شده که با ajax کاردان و برای راحتی Ajax هست

    • iceage2098
      فوریه 9, 2010 در 12:57

      معماری MVC دو مدل داره: یکی Push-based و یکی Pull-based
      در معماری Push-based معمولا از actionها استفاده میشه. به این صورت که کاربر یک اکشن در یک کنترل‌-گر خاصی رو صدا می‌زنه بعد دیتا push (هل داده) میشه به سمت View. برای همین این رو اسمش رو گذاشتن Push-based که اکثر فریم‌ورک‌ها از این مدل معماری استفاده می‌کنند مثل روبی آن ریلز، Django یا struts
      در معماری Pull-based که معمولا به اون component-based هم میگن کاربر از view درخواست می‌کنه و اطلاعات از کنترل-گر (کنترل-گرها) pull (کشیده) میشه به سمت view. در این معماری یک view میتونه از چندین کنترل-گر استفاده کنه در صورتی که در push-based اینطوری نیست. فریم‌ورک‌هایی مثل struts2, wicket, tapestry از معماری مدل Pull-based استفاده می‌کنند.

      تا جایی که من میدونم این دو معماری وجود داره. اگه بیشتر در مورد معماری front controller توضیح بدی ممنون میشم یا یک لینک بدی!

  2. فوریه 11, 2010 در 14:44

    این مدل اصلا MVC نیست یه چند تا لایه کنترلر هستن که رو هم قرار گرفتن
    تو معماری front controller کل برنامه پشت یه کنترلر مرکزی پنهان می شه و کاربر یه سرویس از یه ماژول خاص و رو در خواست می کنه این کنترل جلویی می یاد و یه سری کنترل های اولیه رو انجام می ده در صورت که مشکلی نباشه کنترل اصلی برنامه رو که بهش می گن application controller رو صدا می زنه و بقیه اجرا می ده به اون این کنترلر هم به نوبه خودش کنترل هایی مثل تایید هویت و از این دست رو انجام می ده و بعد با توجه به سرویس درخواستی یک یا چند تا اکشن کنترل رو ایجاد می کنه و از هر کدوم سرویس مورد نطر رو درخواست می کنه این اکشتن کنترلر ها هم کنترل سطح دسترسی رو انجام می دن و اگه موفقیت آمیزبود از مآژول سرویس رو می گیرن .
    بعد که خروجی این action controller ها حاظر شد response manager که بهش response controller هم می گن رو صدا می زنه و خروجی اکشتن کنترلر ها رو بهش می ده اونم به نوبه خودش با توجه به نوع درخواستی کاربر پاسخ رو در یک قالب درخواست شده مثل html ,json , soap , raw data یا هر چیزی دیگه لازم باشه به خروجی می ده

    • iceage2098
      فوریه 11, 2010 در 17:57

      این یک معماری نیست. در ریلز هم ما یک application controller داریم که این کار رو انجام میده. فریم‌ورک‌های مختلفی از Front controller pattern استفاده می‌کنند مثل Zend یا cake php. اما همون‌طوری که می‌دونی این دو تا فریم‌ورک از معماری mvc استفاده می‌کنند.
      http://www.martinfowler.com/eaaCatalog/frontController.html
      http://en.wikipedia.org/wiki/Front_controller
      به هر حال ممنون در مورد front controller pattern چیزی نمی‌دونستم که خوب الان یاد گرفتم

  1. No trackbacks yet.

پاسخی بگذارید

در پایین مشخصات خود را پر کنید یا برای ورود روی شمایل‌ها کلیک نمایید:

نشان‌وارهٔ وردپرس.کام

شما در حال بیان دیدگاه با حساب کاربری WordPress.com خود هستید. بیرون رفتن / تغییر دادن )

تصویر توییتر

شما در حال بیان دیدگاه با حساب کاربری Twitter خود هستید. بیرون رفتن / تغییر دادن )

عکس فیسبوک

شما در حال بیان دیدگاه با حساب کاربری Facebook خود هستید. بیرون رفتن / تغییر دادن )

عکس گوگل+

شما در حال بیان دیدگاه با حساب کاربری Google+ خود هستید. بیرون رفتن / تغییر دادن )

درحال اتصال به %s

%d وب‌نوشت‌نویس این را دوست دارند: