تفاوت برنامه نویسی اختصاصی و سیستم مدیریت محتوا

کدامیک برای انتخاب بهتر است؟ سیستم مدیریت محتوا (CMS) و یا چارچوب (framework)؟مقاله های بسیاری در خصوص سیستم های مدیریت محتوا و فریمورک ها ( یا چارچوب ها ) بحث می کنند. کدام یک را انتخب نماییم؟ کدامیک بهترین است؟با این حال ما در وب سایت وانیا قصد دارم از یک زاویه کاملاً متفاوت مقاله ای بنویسیم تا یکبار برای همیشه پاسخی جامع به مخاطبان خود دهیم. در ابتدا می خواهیم مطمئن باشیم که امروزه توسعه دهندگان و مشتریان، تفاوت میان واژگان "سیستم مدیریت محتوا" و "فریمورک" را درک می کنند.البته پیش از این در مقاله ای به بررسی سیستم مدیریت محتوا پرداخته ایم که می توانید مطالعه نمایید.در ابتدا تعدادی فرضیهزمانی که از واژه "فریمورک" استفاده می کنیم، بیشتر در خصوص چارچوب برنامههای کاربردی تحت وب صحبت میکنیم. چارچوب برنامههای کاربردی تحت وب به سادگی بر پایه کد نویسی هستند. در صورتی که شما یک برنامه نویس و یا توسعه دهنده وب و عاشق کد نویسی هستید، معمولاً برای پروژههای خود چارچوب برنامههای کاربردی تحت وب را انتخاب میکنید.CMS یک چارچوب مدیریت محتوا است و بیشتر مبتنی بر ماژولها است تا کد. هر شخصی میتواند یک سیستم مدیریت محتوا را مدیریت کند چرا که نیازی به دانش برنامه نویسی و کد نویسی ندارد. البته که برنامه نویسان نیز میتوانند CMS را انتخاب کنند زیرا میتوانند کارشان را سریعتر انجام دهند.اوپن سورسOpen Source اساساً به چیزی اطلاق می‌شود که امکان ویرایش و اشتراک‌گذاری آن برای همه فراهم است زیرا طراحی آن در دسترس عموم مردم قرار دارد. این اصطلاح، در توسعهٔ نرم‌‌افزار و ایجاد یک روش خاص در تولید برنامه‌های کامپیوتری ریشه دارد؛ با این حال، امروزه اصطلاح اپن‌سورس مجموعه‌ای از مرزها و ارزش‌ها را تعریف می‌کند که در مجموع رویکرد اپن‌سورسی نامیده می‌شوند. در پروژه‌ها، محصولات و نوآوری‌های اپن‌سورس، اصولی همچون تبادل باز، مشارکت چندجانبه، ساخت سریع نمونهٔ‌ اولیه (MVP)، شفافیت و توسعهٔ جامعه‌محور رعایت شده و مورد احترام قرار می‌گیرند.عموم سیستم های مدیریت محتوا مانند وردپرس ، جوملا، دات نت نیوک، دروپال و ... اوپن سورس هستند. یعنی هرشخص برنامه نویس در هرجای دنیا می تواند این سیستم ها را توسعه دهد. ماژول یا کامپوننت بنویسد. کمتر پیش می آید که هسته ی اصلی را کسی به غیر از تیم اصلی و سازنده ، تغییر دهدسیستم مدیریت محتوا یا برنامه نویسی اختصاصی ؟در مورد اینکه سیستم مدیریت محتوا و چارچوب چه کارهایی انجام میدهند، سوء تفاهمهای بسیاری وجود دارد. یعنی مانند بسیاری از مفاهیم علمی ، بین علما اختلاف نظر می باشد! بسیاری از طرفدارانی که از CMS استفاده می کنند میگویندبا CMS ما هر کاری را میتوانیم انجام دهیمو طرفداران فریمورک ها میگویندخیر، ما می توانیم هر کاری را با فریمورک هایی که خود به صورت اختصاصی کدنویسی کرده ایم، انجام دهیمو غیره ...به عنوان یک طرفدار چارچوب، من نیز اینچنین عقیده ای دارم اما در حقیقت این موضوع صحیح نیست! حقیقت این است که ما از یک ساختار یکسان استفاده مینماییم (PHP، RoR، python، .Net و غیره)، همه ما میتوانیم هر کاری را انجام دهیم. حتی این افسانه که سیستم مدیریت محتوا از یک ساختار خوب استفاده نمیکند، حقیقت ندارد.برای مثال، Drupal 8 بر پایه چارچوب Symfony است، که یک چارچوب برنامه کاربردی تحت وب مبتنی بر شیء گرایی بسیار خوب است.بین کدنویسی اختصاصی و سیستم مدیریت محتوا کدام باید انتخاب شوند؟امروزه سیستم مدیریت محتوا محبوب تر از فریمورک برنامه کاربردی تحت وب است چرا که واقعاً استفاده از آن آسان و ساده است. حتی اگر شما دانش برنامه نویسی نداشته باشید، میتوانید با استفاده از یک CMS، یک وبسایت کامل را بسازید. بنابراین کدامیک را انتخاب نماییم؟با توجه به تجربیات شخصی من، پیش از انتخاب یک چارچوب و یا یک CMS، همواره می بایست در خصوص 4 سوال اساسی زیر فکر کنید:چه میزان زمان میخواهید صرف کنید؟چه کاری میخواهید انجام دهید و میزان انعطاف پذیری این پروژه در آینده چه میزان خواهد بود؟در پایان پروژه چه میزان پول (اگر مهم باشد) دریافت خواهید کرد؟محیط میزبانی (هاستینگ) چگونه خواهد بود؟برای مشتری واقعاً مهم نیست که شما از چه ابزاری استفاده میکنید. آنچه برای آنها اهمیت دارد این است که کارشان تمام شود. بنابراین بیایید مثالی را عنوان کنیم.من انتخاب های خود را در خصوص دو پروژه شخصی و یک پروژه معمولی توضیح خواهم داد.این وب سایت شخصی من است : www.farjadp.com. اول از همه من یک توسعه دهنده وب که مسلط به زبان برنامه نویسی دات نت هستم، بنابراین می توانم هم چارچوب .NET و هم سیستم مدیریت محتوای NET را انتخاب کنم. از طرفی به واسطه ی سابقه ی بیش از پانزده سال طراحی وب به زبان های دیگری مانند. PHP نیز تا حدودی تسلط دارم و قاعدتا با توجه به نیاز بازار تسلط بیشتری به سیستم های مدیریت محتوای جوملا و وردپرس ( که هر دو بر پایه ی زبان برنامه نویسی PHP می باشند ) دارم.بنابراین برای این وب سایت شخصی خودم را بر پایه ی وردپرس راه اندازی نمودم . چرا؟از آنجایی که این یک وبلاگ ساده است، میخواستم کمترین زمان ممکن را صرف کدنویسی آن نمایم.نمی خواستم کار اضافه ای انجام دهم. فقط موارد معمول مانند بهینه سازی موتور جستجو، ذخیره سازی، یادداشت گذاری، طراحی زیبا و اسپم کمتر!من هیچ سودی بابت ایجاد این پروژه به دست نمیآورم. بنابراین پول برایم به عنوان یک شاخص مطرح نیست.انتخاب من با توجه به تجربه ی شخصیم به خیلی از شاخصه های دیگر اولویت دارد.اما یک چیز دیگر را باید در نظر بگیریم. در زیر به بررسی وب سایت کنونی می پردازم برای سایت شرکت طراحی وب سایت وانیا ( چیزی که الان مشاهده می کنید ) من از چارچوب MVC.Net استفاده کردم چرا کهادعا داریم که یک شرکت طراحی سایت اختصاصی هستیم! امکان ندارد که خود از کوزه ی شکسته آب بخوریمایده هایی داریم که به شدت برایشان ارزش قایلیم و جز با کدنویسی اختصاصی راه دیگری ندارد.هرجای کد را هر گونه که بخواهیم می توانیم تغییر دهیمامنیت کدنویسی اختصاصی خیلی بیشتر از استفاده از سیستم های مدیریت محتوا است ( البته امنیت هیچگاه تضمین شده نیست )می شود هم برنامه نویس بود و هم از CMSهای اوپن سورس استفاده کردخیلی بد نیست که هم برنامه نویسی بلد باشید و هم اهل CMS باشید. چیز بدی که در این خصوص وجود دارد این است که اشخاص بسیاری هستند که با CMS کار میکنند و هیچ دانش برنامه نویسی ندارند و فکر میکنند که با CMS میتوانند هر کاری بخواهند انجام دهند. این نیز افسانه است! زمانی که قبلاً گفتم با CMS میتوانید هر کاری را انجام دهید، به این بستگی داشت که شما کمی از مهارتهای پایه برنامه نویسی را بلد باشید. در غیر این صورت، شما تا جایی میتوانید هر کاری را انجام دهید که برنامه نویسان/توسعه دهندگان وب به شما اجازه دهند. بنابراین ایده من این است که در صورتیکه با CMS کار میکنید و هیچ دانش برنامه نویسی ندارید، بهتر است که شروع به یادگیری برخی مفاهیم پایه و بنیادی نمایید و تلاش کنید پلاگینهای سفارشی خود را برای CMS بسازید.و در نهایت نتیجه گیریبنابراین برای جمع بندی میبایست بگویم که همواره بستگی به آن چیزی دارد که میخواهید انجام دهید و اینکه چه میزان زمان و فرصت برای انجام آن دارید. من معتقدم که هر ابزاری برای یک دلیلی ساخته شده است (سیستمهای مدیریت محتوا و فریمورک ها) و در نتیجه شما به عنوان یک توسعه دهنده حرفهای منعطف هستید. بنابراین ارزشش را ندارد که طرفدار CMS و یا چارچوب باشید. فقط بهترین ابزار را برای موقعیت خود انتخاب کنید و کار تمام است.