برنامهنویسی بک اند و فرانت اند چه هستند و چه تفاوتی دارند ؟
اگر به دنبال یادگیری برنامهنویسی بوده باشید حتما با عبارتهای فرانت اند( Front-end ) و بک اند ( Back-end ) مواجه شدهاید. در این نوشته به شرح این دو عبارت میپردازیم و با مثالهایی کاربرد و تفاوتهای آنها را بررسی میکنیم.
فرانت اند چیست ؟
در برنامهنویسی، به ویژه برنامهنویسی وب بخشیهایی که کاربر با آن در تماس مستقیم قرار داد، برنامهنویسی فرانت اند نامیده میشود. به طور خاص، برنامهنویسی جاوااسکریپت، HTML و CSS بخشهای اصلی فرانت اند را تشکیل میدهند.
وظایف بخش فرانت اند
وظایف کلی بخش فرانت اند، دریافت اطلاعات از کاربر و ارسال آن به بخشهای درونی سیستم است. همچنین وظیفه دارد تا اطلاعات و نتایج محاسبات را از بک اند دریافت کند و به شکل مناسب در معرض دید کاربر قرار دهد.
بک اند چیست ؟
بخشهایی از سیستم نرمافزاری که کاربر به طور غیرمستقیم با آن در ارتباط است، بک اند نامیده میشود. ارتباط کاربر با این بخشهای نرمافزار از طریق فرانت اند انجام میشود.
وظایف بخش بک اند
بک اند به طور غیرمستقیم، اطلاعاتی که کاربر درخواست کرده را دریافت میکند، پردازش میکند، ذخیرهسازی میکند و پس از به دست آمدن نتیجه، آن را برای فرانت اند ارسال میکند تا پس از تغییر شکل و بهبود ظاهر، به کاربر نمایش داده شود.
زبانهای سمت بک اند
زبانهای بک اند در کار طراحی سایت، بر خلاف محدودیت در سمت فرانت اند، بسیار متنوع هستند. ولی به طور معمول چند زبان زیر بیشتر از بقیه زبانها برای برنامهنویسی بک اند سایتها استفاده میشوند.
- php
- ASP.NET - زبانهای فریم ورک دات نت
- Python
- Ruby
- Java
- Rust
مثال: استودیو خبر
اگر تا به اینجا به خوبی متوجه نشدید که چه اتفاقی در این دو بخش رخ میدهد، اخبار پخش شده در تلویزیون را تصور کنید. کاری که مجریان خبر انجام میدهند، میتواند فرانت اند نامیده شود و کاری که خبرنگاران و تحریریه خبر انجام میدهند، میتواند بک اند نامیده شود.
اخباری که خبرنگاران جمعآوری میکنند، برای بیننده تلویزیون به طور مستقیم قابل استفاده نیست و لازم است انتخاب، تصفیه، بازنویسی و تدوین شود و روی آن تصاویر و نوشتههای متناسب قرار بگیرد و در نهایت در اختیار مجری قرار بگیرد تا به اطلاع بینندگان برسد.
مثال: سیستم تولید و فروش
شرکتهای تولیدی برای تولید یک محصول تلاشهای بسیاری میکنند و ممکن است صدها و هزاران نفر برای تولید یک محصول نقشهایی کوچک و بزرگ داشته باشند. در نهایت محصول آماده شده در بستهبندی زیبا در فروشگاه قرار میگیرد و مصرف کننده با مراجعه به فروشنده، آن را خریداری میکند.
در این سیستم، فروشنده نقش فرانت اند و سیستم تولید، نقش بک اند را بر عهده دارند. نیازی نیست که مصرف کننده برای خرید به کارخانه مراجعه کند و از جزئیات تولید محصول باخبر شود. مشتری تنها میخواهد مبلغی بپردازد و محصول خود را به صورت مناسب دریافت کند.
اگر محصول نهایی مشکلی داشته باشد، مشتری مجددا به فروشنده مراجعه میکند و این فروشنده یا فرانت اند است که نیازهای مشتری را به کارخانه ارجاع میدهد و پس از رفع مشکل، مجددا با مشتری در تماس خواهد بود.
چرا این دو بخش از هم جدا شدهاند ؟
نه تنها در کار برنامهنویسی، بلکه در تمامی فعالیتهایی که دامنهی گستردهای دارند، تقسیم کارها میتواند کیفیت انجام آن را بهبود بدهد و قابلیت مدیریت و توسعهی آن را بیشتر کند.
با جداسازی فرانت اند و بک اند به طور کامل و دقیق از یکدیگر، تغییر در بخش ظاهری نرمافزار یا سایت به آسانی و بدون نیاز به تغییرات در بخش بک اند، قابل انجام خواهد بود.
مقدار تخصص و دانش مورد نیاز برای تغییرات در این دو بخش با یکدیگر متفاوت است و به همین دلیل، تغییرات جزئی با هزینهی کمتر و در زمان کوتاهتر عملی خواهند بود.
توسعه فول استک( Full-stack Development ) چیست ؟
اگر علاقمند باشید، میتوانید در هر دو بخش تخصص لازم را به دست آورید. البته نیازی به یادآوری نیست که انجام این کار به صرف زمان زیاد و تلاش بیشتر نیازمند است.
در هنگام پیادهسازی پروژههای کوچک و متوسط، استفاده از برنامهنویسانی که در هر دو بخش مهارت دارند، عادیتر است ولی در پروژههای بزرگ و بسیار بزرگ، معمولا کارها تقسیمبندی میشوند و حتی ممکن است در تیمهایی مجزا از هم به انجام برسند.