وقتی صحبت از طراحی وب و ساخت یک وبسایت به میان میآید، گزینههای بسیار زیادی از فریمورکها و پلتفرمهای مختلف مانند لاراول تا سیستمهای مدیریت محتوای وردپرس و یا جوملا وجود خواهند داشت که میتوانند در انجام این کار به شما کمک کنند. اینکه هرکدام از این پلتفرمها چه ویژگیهایی را انجام میدهند و بر چه اساسی کار میکنند، یکی از موضوعات مهمی است که باید در نظر داشته باشید. همینطور سرویسهایی که این پلتفرمها به شما میدهند یکی از ارکان اصلی انتخاب آنها خواهد بود. واضح است که برخی از این فریمورکها و پلتفرمها از دیگری برتر بوده و بعضی در ردههای پایینتری قرار میگیرند. در این مقاله قصد داریم تا شما را با یکی از فریمورکهای ردهبالا یعنی سیمفونی آشنا کنیم.
سیمفونی یکی از فریمورکهایی است که بیشتر قدرت خود را مدیون یک الگوی برنامهنویسی به نام روش مدل – نما – کنترلر میباشد و لازم است قبل از اینکه ببینیم سیمفونی چیست کمی بیشتر در مورد این روش صحبت کنیم.
فهرست محتوا
MVC چیست؟
MVC یک الگوی طراحی و روش ساخت برنامههای تحت وب و سایتهای اینترنتی میباشد که با استفاده از آن برنامهنویسان میتوانند از یک قابلیت جداسازی برای ماژولهای مختلف سایت استفاده کنند. در واقع توضیح این مقوله که MVC چیست بهخاطر پیادهسازیهای مختلفی که توسط فریمورکهای مختلف از آن وجود دارد به شدت سخت میباشد، اما بهطورکلی این روش برنامهنویسی یک الگو است که از روشی خاص و ثابت برای مدیریت درخواستها در وب استفاده میکند.
الگوهای طراحی یا همان Design Patternها روشهایی برای برنامهنویسی هستند که به علت کاربردی بودن و پراستفاده بودن آنها به یک اصل تبدیل شده که تقریبا بهصورت استاندارد در آمدهاند و خیلی از برنامهنویسان از آنها استفاده میکنند. در مورد MVC هم داستان از همین قرار است و استفاده از این تکنیک طراحی منجر به ایجاد یک سری دستورالعملهای خاص و ثابت شده است تا با یک پیکربندی خاص برنامه وب شما را نظم داده و سرعت عمل آن را بهبود ببخشد.
یک برنامه که با MVC نوشته شده باشد سه عضو اصلی دارد. این اعضا عبارتاند از مدل یا همان Model که حرف M در اسم نشاندهنده آن است، نما یا View که V مربوط به آن میشود و یک کنترلر که حرف C آن را نشان میدهد. هرکدام از این اعضا وظیفهای خاص را بر عهده دارند. روند کلی این برنامه به این صورت است که بخش ویو ارتباط با کاربر را برقرار میکند، مدل مربوط به ماژولهایی است که با پایگاهداده سیستم ما کار میکنند و کنترلر نیز یک نقش میانی را دارد که ارتباط مدل و ویو را کنترل میکند. در این میان جهت اطلاعات دوطرفه بوده و وقتی اطلاعات کاربر از طریق ویو به کنترل میرسد، کنترلر بهصورت مجزا آنچه که نیاز باشد را از مدل میگیرد و برای ویو ارسال میکند تا ویو آن را به کاربر برساند.
برای درک بهتر این موضوع لازم است کار را با یک مثال دنبال کنیم. سایتی که با MVC نوشته شده است را در نظر بگیرید که کاربری در حال کار کردن با آن است. در اینجا واحد ویو ما همان کدهای HTML و CSS هستند که سایت را به کاربر نمایش داده و از آن اطلاعات مربوطه را دریافت میکنند. وقتی درخواستهای مدنظر و اطلاعات مربوطه از کاربر بهوسیله درخواست از طریق بستر اینترنت به سایت برسد، ویو آنها را دریافت کرده و در اختیار کنترلر میگذارد، کنترل با متدهای مخصوص خود این اطلاعات را به مدل فرستاده و مدل ذخیرهسازی را انجام میدهد. بعدازاین عملیات اطلاعات مربوط به تایید از طریق مدل به کنترلر رسیده و کنترلر بهوسیله ویو این اطلاعات را به کاربر نمایش میدهد.
درصورتیکه این سوال برای شما پیش آمده است که اصلا دلیل استفاده از این روش چیست و چرا باید این مسیر طولانی طی شود باید بگوییم که MVC قابلیتهای خیلی خوبی را در اختیار برنامهنویسان قرار میدهد. شما با استفاده از این روش یک وضعیت ماژولار را روی سیستم خود ایجاد کرده که بخش ویو را بهطورکلی از بخش مدل و پایگاهداده جدا میکنید. در این حالت شما بدون هیچ دردسری میتوانید ویو را تغییر داده و بدون تغییر در ساختار اصلی و کارکرد سایت، ظاهر سایت خود را چه از نظر بصری و چه از نظر تکنولوژی تغییر دهید.
با استفاده از برنامهنویسی MVC شما حتی قادر خواهید بود که دو یا چند ویو را برای سایت و اپلیکیشن تحت وب خود داشته باشید و بهعنوانمثال، هم با استفاده از درگاه وب و هم با استفاده از یک اپلیکیشن به کاربران خود سرویسدهی کنید. پلتفرمهای زیادی وجود دارند که قابلیتهای MVC را برای شما پیادهسازی میکنند. بعضی از این فریمورکها و پلتفرمها به این صورت عمل میکنند که صرفا همین سه عضو مدل، ویو و کنترلر را دارند و بعضی دیگر مانند سیمفونی از تعداد بیشتری عضو استفاده میکنند. در ادامه به طور مفصل در مورد اینکه سیمفونی چیست و چگونه به ما کمک میکند خواهیم پرداخت.
سیمفونی چیست؟
سیفونی یک فریمورک ساخت سایت بر اساس زبان برنامهنویسی PHP است که برای استفاده از کتابخانهها و ماژولهای آماده زبان PHP توسعه پیدا کرده است. این فریمورک قدرتمند که سیستمهای مدیریت محتوا و سایتهای موفق زیادی را در رزومه خود دارد، کار خود را برای اولینبار در سال ۲۰۰۵ و تحت لایسنس نرمافزارهای رایگان MIT به طور رسمی آغاز نمود.
بر اساس آنچه که طراحان و ارائهدهندگان این سیستم در مورد آن گفتهاند، اگر بخواهیم بگوییم که هدف اصلی سیمفونی چیست میتوانیم به این موضوع اشاره کنیم که این فریمورک با هدف سرعت بخشیدن به تولید و نگهداری برنامههای سطح وب ایجاد شده است. همینطور با استفاده از جایگذاری کدهای صحیح و کاربردی و استفاده از کتابخانههای زیادی که دارد قرار است برنامههای سطح وب را بهصورت مستحکم یا همان Robust طراحی کند که به برنامههایی اطلاق میشود که نقطهضعفی نداشته و زیر فشار بار زیاد میتواند بهراحتی تمام آن را مدیریت کند. عموما برنامههای روباست برنامههایی هستند که با متدهای فرمال و ریاضیاتی ساخته میشوند و در آنها قطعیت وجود دارد و میتوان مطمئن بود که کاری که از برنامه خواسته شده است، انجام شده و با خطا مواجه نمیشود.
سیمفونی با استفاده از امکاناتی مانند برنامهنویسی MVC و دادن یک اختیار کامل به برنامهنویس برای تغییر کدها به صورتی که نیاز دارد یک میدان کاری گسترده را فراهم میکند که بتوان از آن برای هر کاری استفاده کرد. تقریبا در فریمورک سیمفونی از درونیترین لایهها و کتابخانهها، تا لایههای خارجی و سطح کاربر، همه چیز قابل تغییر و ویرایش است. قابلیتهای زیادی در طراحی سیمفونی وجود دارد که باعث شده است تا اندازه زیادی این ویژگیها را داشته باشد.
شکلگیری سیمفونی از کجا شروع شد؟
ریشه اصلی سیمفونی از فریمورک Spring است. اسپرینگ یکی از پلتفرمهای جاوا بود که از آن برای تولید برنامهها و اپلیکیشنهای مختلف هم در زمینه وب و هم برنامههای سیستمی استفاده میشد. این پلتفرم اپنسورس امکانات خوبی را برای ساخت برنامههای جاوا و وب داشت که سیمفونی هم به پیروی از آن ویژگیهای ایدهآلی را ارائه کرد، با این تفاوت که این اتفاقات صرفا برای وب و روی PHP پیادهسازی شد. همین امر باعث شد که یک پلتفرم و فریمورک حرفهای با استفادههای بسیار زیاد ایجاد شود که امکانات زیادی داشت.
سیمفونی دو بخش از انواع امکانات را در خود داشت، بخش اول دستهای از سایر ماژولها مانند Doctorine ،PHPUnit ،Twig و Swiftmailer بودند و بخش دوم نیز امکانات مربوط به خود این فریمورک بودند که برای اولینبار عرضه میشدند و در بخشهای بعدی به طور کامل آنها را معرفی میکنیم.
ورژنهای سیمفونی چیست؟
از زمانی که سیمفونی ارائه شد تا وقتی که اولین ورژن جدید خود را عرضه کرد مدتزمان زیادی به طول انجامید و تقریبا ۵ سال اول این فریمورک با یک برنامه ثابت و ساکن پیش رفت. شاید اگر این سیستم عملکردی بهتر در این زمان داشت اکنون به جایگاهی خیلی بالاتر رسیده بود. بااینحال سیمفونی یک سیستم جامانده نیست. زیرا با برنامهریزی دقیق و زمانداری که از سال ۲۰۰۷ در پیش گرفت توانست از پلتفرمهای دیگر جلوتر برود.
سیمفونی در قبال ارائه ورژنهای جدید خود یک سیاست زماندار را در نظر گرفته است که در دورههای زمانی مشخص ورژنهای جدید را برای خود با آپدیتهایی که دارد ارائه میکند، البته ورژنهای پایداری که مدت آنها طولانیتر باشد نیز وجود دارد. همانطور که به آن اشاره کردیم، اولین ورژن جدید بعد از نسخه اصلی از این فریمورک در سال ۲۰۰۷ منتشر شد و سیمفونی ۱.۰ نام داشت.
در این ورژن از نسخههای PHP قبل از PHP5 استفاده شده بود و این نسخه بهعنوان یک نسخه پایدار یا همان Stable برای مدت سه سال با پشتیبانی کامل منتشر شد. در ماه ژوئن سال ۲۰۰۸ نسخه بعدی از این فریمورک با نام ۱.۱ منتشر شد، در این نسخه افزونههای امنیتی جدیدی اضافه شده بود و نسخههای بعد از آن در مدتهای زمانی یکساله ارائه میشدند که در هرکدام از این نسخهها سازگاری با ورژنهای جدید PHP و موارد مربوط به بحثهای امنیتی آپدیت میشد. نسخه دیگری که تغییر کلی بزرگی را در سیمفونی داشت، نسخه ۲.۰ بود که در سال ۲۰۱۳ و بعد از نسخه ۱.۴ منتشر شد. در این نسخه موارد متعددی تغییر کردند ولی این نسخه جزو نسخههای پایدار تلقی نشد و پشتیبانی بلندمدتی از آن ارائه نشد بهجای آن ارائهدهندگان سیمفونی یک بازه زمانی ۸ماهه را برای آپدیتهای آن در نظر گرفتند که تا الان هم از همین روش استفاده میکنند و انتشار آپدیتها به همین صورت میباشد.
نسخه پایدار بعدی ۲.۳ بود که در سال ۲۰۱۳ منتشر شد و تا سال ۲۰۱۶ بهعنوان یک نسخه اصلی تلقی میشد. بعد از آن هم جای خود را به نسخه ۲.۷ داد که در سال ۲۰۱۵ منتشر شده بود. جدیدترین نسخهای که از سیمفونی وجود دارد نسخه ۵.۲ میباشد که در ماه نوامبر ۲۰۲۰ منتشر شده است و بر اساس اعلامی که سیمفونی داشته قرار است تا چند هفته آینده (زمان نگارش این مقاله که ابتدای ماه می سال ۲۰۲۱ میباشد) ورژن جدید را ارائه کند.
آخرین نسخههای پایداری که از این برنامه در زمان نوشتن این مقاله وجود دارد و پشتیبانی میشود نسخههای ۴.۴ ارائهشده در سال ۲۰۱۹ و نسخه ۵.۲ ارائهشده در نوامبر سال ۲۰۲۰ میباشد. هرکدام از این ورژنها ویژگیها و قابلیتهای خود را دارند که از ورژنهای قبلی بهتر شده است. البته این بهبود بهصورت کلی نبوده و در خیلی از تغییرات این ورژنها ویژگیهای ثابتی وجود دارد و بعضی از موارد تغییر داشته است. معمولا آپدیتهایی که بهصورت زمانبندی شده منتشر میشوند به این صورت بوده و لزوما همه موارد در آنها تغییر نمیکند.
ویژگیهای سیمفونی چیست؟
در این بخش میخواهیم به بررسی ویژگیهایی از این فریمورک بپردازیم که باعث شده است سیمفونی بهعنوان یک فریمورک کاربردی و قدرتمند در مجامع برنامهنویسی مطرح شود و بتواند از پس پروژههای سنگینی که با آن پیادهسازی شده است بهراحتی بر بیاید.
استفاده از MVC
یکی از برترین ویژگیها و قابلیتهای سیمفونی استفاده از برنامهنویسی MVC است که در ابتدای این مقاله بهصورت کامل آن را معرفی کردیم. در مورد این ویژگی در سیمفونی باید گفت که MVC میتواند برای شما قابلیتهای مختلفی را پیادهسازی کند که با استفاده از آن یک برنامه حرفهای و کاملا قابلویرایش برای خود خواهید داشت.
همانطور که دیدیم کاری که این سرویس برای شما انجام میدهد این است که در بخشهای مختلف برنامه تحت وب شما یک استقلال نسبی ایجاد میکند که به شما کمک میکند در هر جایی که خواستید تغییرات را در برنامه ایجاد کنید و از این امر هم مطمئن باشید که به سایر بخشها آسیب نمیرسد. مورد دیگری که درباره MVC بررسی نکردیم قابلیتهای جانبیای است که این سرویس برای شما خواهد داشت و خودبهخود با استفاده از آن میتوانید از این برنامهها هم استفاده نمایید.
توسعه مناسب
این پلتفرم همواره در حال توسعه بوده و میتوان مطمئن بود که با استفاده از آن قرار نیست از تکنولوژی جدید جا بمانید. بهمحض اینکه قابلیت جدیدی در برنامهنویسی به زبان PHP و یا الگوی طراحی خاصی ارائه شود، در دستور کار تیم قرار گرفته و در بدترین حالت تا ۸ ماه بعد با آپدیت جدید منتشر خواهد شد. البته ویژگیهای خاص و مهم بهصورت پچها و نسخههای پایدار جدید خارج از برنامه زمانبندی منتشر میشوند.
بهطورکلی سمفونی همیشه ثابت کرده است که یک سیستم حرفهای بوده است که گسترش یکی از اهداف اصلی آن میباشد و همینطور این امکان را برای کاربران و استفادهکنندگان خود فراهم کرده است که بتوانند برنامههای خود و سایتهایی که دارند را نیز بهخوبی با استفاده از آن توسعه دهند.
نوآوری
درحالیکه خیلی از فریمورکها از نبود امکاناتی که دیگران دارند رنج برده و کاربران آنها این نقایص را کامل احساس میکنند، سیمفونی یکی از فریمورکهایی است که نوآوریهای خوبی را ارائه میکند و خود در این زمینه یکی از سیستمهای خلاق بهحساب میآید.
ماهیت پویا و گسترشی برای کاربران
شما میتوانید برنامههای تحت وب خود را تا هر اندازه که بخواهید گسترش دهید و محدودیتی برای شما وجود نخواهد داشت. این در حالی است که بعضی از سیستمها در صورت بزرگ شدن تا اندازههای مختلف، ممکن است به مشکلات عدیدهای بر بخورند. فریمورکها و پلتفرمهایی وجود دارند که در صورت گسترش بیش از حد و بزرگ شدن محتوای سایت و اپلیکیشن سطح وب ممکن است در کارایی آنها افت ایجاد شود.
بهعنوانمثال میتوان به فروشگاهساز سیستم مدیریت محتوای وردپرس یعنی ووکامرس اشاره کرد که در مقاله ووکامرس چیست آن را بهصورت کامل بررسی کردیم و دیدیم که در این سیستم اگر فروشگاه شما بزرگ شود، کارایی افت کرده و نیازمند افزایش منابع خواهید بود که هزینهبر میباشد. اما در سیمفونی رویکرد بهگونهای است که همیشه میتوان با خیالی آسوده از آن استفاده کرد.
امنیت بالا
یکی دیگر از ویژگیهایی که برای سیمفونی خیلی مهم بوده و همواره آن را در نظر داشته است، رعایت قوانینی بوده است که باعث افزایش امنیت این سیستم بشود. معمولا سیستمهایی که با سیمفونی طراحی میشوند، از ویژگیهایی مانند Doctrine که یک کتابخانه حرفهای و قدرتمند برای کار با پایگاهداده است استفاده میکنند و با بهرهمندی از امکانات آن تقریبا توانسته است احتمال حملاتی مانند تزریق کدهای SQL (برای اطلاعات بیشتر به مقاله حمله SQL Injection مراجعه کنید) را به صفر برساند.
البته باید در نظر داشته باشید که درست است که سیمفونی امکانات مفیدی را در زمینه امنیت به کاربران خود ارائه میکند اما ممکن است ایراداتی که در طراحی بعضی از ماژولها وجود دارد، منجر به این شود که سایت و اپلیکیشن شما نقایصی داشته باشد و باید این مسئله موردتوجه قرار بگیرد.
موتور قالب یا Template Engine
وقتی جایی از معماری MVC برای ساخت یک اپلیکیشن سطح وب استفاده شود، یکی از اصلیترین ارکانی که در آن به کار گرفته میشود، موتور قالب میباشد که با استفاده از یک فایل PHP به شما این امکان را میدهد که بهراحتی قالب سایت خود که آن را روی View مربوط به MVC فعال کردهاید را ویرایش کنید.
در واقع این موتور قالب بهصورت یک ادیتور حرفهای است. این فریمورک از موتور قالب Twig استفاده میکند که بازدهی خیلی خوبی را روی سیستم مدیریت محتوای دروپال (برای اطلاعات بیشتر به مقاله دروپال چیست مراجعه شود) از خود نشان داده است.
معایب سیمفونی چیست؟
این فریمورک از نظر ویژگیهای اصلی و برای گسترش یک پلتفرم چیزی کم ندارد. اما مواردی هستند که میتوان آنها را بهعنوان یک مورد منفی دراینرابطه قلمداد کرد. در ادامه در مورد این موضوع که این معایب چه هستند صحبت خواهیم کرد.
کارایی و Performance
این سیستم بزرگ میتواند کمی درگیر پیچیدگی شده و در بعضی از موارد بازدید نهایی و کاری که سیستم برای ما انجام میدهد به آن خوبی که انتظار میرود نباشد. کارایی این سیستم در مقابل فریمورکهای همرده خود مانند Zend بهتر بوده ولی از فریمورکهای دیگری مانند لاراول کمتر است.
ضعف در برنامههای Real Time
یکی دیگر از نقطهضعفهای سیمفونی عدم پشتیبانی و سرویسدهی مناسب در سرویسهای Real Time است. سیستمهای Real Time سیستمهایی هستند که به کاربر این امکان را میدهد که واکنش درخواستی که به سایت داشته را در لحظه ببیند و سیستم بهصورت بلادرنگ برای آن عمل کند.
در این سیستمها شما نمیتوانید یک سیستم داشته باشید که قطعیت Real Time را برای شما فراهم کند و به همین دلیل عموما از سیمفونی برای ساخت شبکههای اجتماعی و موارد مربوط به آنها استفاده نمیشود.
دشواری در زمان شروع
سیمفونی برای تازهواردان کمی گیجکننده خواهد بود. برای یک برنامهنویس حرفهای که همهجوره از کدها استفاده و هدف خود را پیادهسازی میکند، کار کردن با این سیستم یکی از حالتهای ایدهآل به شمار میرود، اما وقتی بخواهید کار کردن با آن را شروع کنید و در استفاده از پلتفرمهای اینچنینی بیتجربه باشید، در ابتدا عموما با سیستم سختی مواجه خواهید شد که بر اساس سایر سیستمها کار نمیکند و روال کاری مربوط به خود را دارد.
با اینکه منابع آموزشیای کاملی برای این سیستم وجود دارد اما برای شروع نمیتواند کمک زیادی به شما بکند و ممکن است کمی گیجکننده به نظر برسد.
پیدا کردن ماژولها دشوار است
در این سیستم یک مرجع که تمامی ماژولهای سیمفونی را به شما ارائه کند و اگر دنبال یک ماژول خاص گشتید آن را بهراحتی از آنجا دانلود کنید وجود ندارد. باید توجه داشته باشید که اگر برای سیستمی که با سیمفونی در حال برنامهنویسی و طراحی آن هستید به ماژولی احتیاج داشتید لازم است که آن را مستقیما در گوگل سرچ کنید.
البته روشهای گوناگون سرچ و فراوانی روشهایی که ارائهدهندگان ماژولهای سیمفونی از آن استفاده میکنند خود بهنوعی معضل بهحساب میآید و باعث شده است تا پیدا کردن این ماژولها به شدت سخت شود.
رقیب اصلی سیمفونی چیست؟
رقیب اصلی سیمفونی فریمورک بزرگ و خوشساخت لاراول (برای اطلاعات بیشتر درباره لاراول به این مقاله سری بزنید) است که اسم آن برای خیلی از برنامهنویسان و کسانی که در حوزه وب دستی دارند، آشناست. در رقابت لاراول و سیمفونی موارد زیادی وجود دارد که باید به آنها توجه کرد.
بهصورت کلی پلتفرم لاراول یک پلتفرم ساده، روان و سریع است و این در حالی است که در مورد سیمفونی با یک پلتفرم وسیع طرف هستیم که شاید بهسرعتی که لاراول نتیجه نهایی را در اختیار شما قرار میدهد کار نکند. در پلتفرم سریع لاراول خیلی از موارد ازپیشتعیینشده میباشد اما باید در نظر داشته باشید که سیمفونی به شما قدرت عمل بیشتری را میدهد.
اما بهطورکلی لاراول بهنوعی کاستیهای کوچکی که سیمفونی در مورد عملکرد و Performance داشته است را حذف کرده و به علت وجود جوامع بزرگتر پیدا کردن اسکریپتها و ماژولهایی که روی سایت لاراول شما کار میکنند از سیمفونی سادهتر میباشد که همین امر موجب شده است تا تبدیل به یک سیستم یکپارچه شود.
نتیجهگیری
بهطورکلی در پاسخ به این سوال که سیمفونی چیست باید بگوییم پلتفرمی رایگان، قدرتمند و حرفهای که از جدیدترین متد برنامهنویسی MVC استفاده کرده و با قابلیتهای خوبی که به ما میدهد، امکان تولید یک برنامه تحت وب را با زبان PHP فراهم میکند و میتوان مطمئن بود که این پلتفرم برای هر موردی مناسب است. در این مقاله با بررسی ویژگیهای این فریمورک دیدیم که روال کاری آن به چه صورتی است و با چه نوعی از برنامهنویسی باید جلو بیاید که بتوانید بهترین کیفیت را از این سیستم دریافت کنید. البته لازم به ذکر است درصورتیکه میخواهید از یک سرویس مناسب و سادهتر استفاده کنید میتوانید سری هم به لاراول بزنید.
2 دیدگاه. Leave new
مرسی از توضیحاتت مفصل و عالیتون
سلام
بسیار خوشحالیم که مطالب برای شما مفید واقع شده است.