اگر حتی بمدت کوتاهی مشغول توسعه نرمافزار بوده باشید باید با این صحنه که برنامهنویسان در رابطه با فرانت-اند و بک-اند صحبت میکنند آشنایی داشته باشید. اما آیا میدانید این موارد دقیقا به چه معنا هستند؟
به زبان بسیار ساده، فرانت-اند به آن دسته از کدها اشاره دارد که در سمت کاربر و روی مرورگر وی اجرا میشود. این ساختار را برنامهنویسان با استفاده از زبانهای HTML-CSS-JS بوجود میآورند. با استفاده از این موارد، برنامهنویسان میتوانند رابط کاربری مورد نظرشان را پیادهسازی کرده و آن را روی مرورگر اجرا کنند.
از طرفی دیگر بک-اند شامل کدهایی میشود که در سمت سرور اجرا شده و چیزی که باعث اجرا شدن این کدها میشود، کنشها یا درخواستهاییست که کاربر از طریق رابط کاربری آنها را وارد میکند. در این مقاله قرار است بیشتر از هر چیزی به زبان ساده در رابطه با این بخش از توسعه وبسایت و اپلیکیشنها صحبت کنیم.
کلاینت چیست و چه نقشی در دنیای بک-اند دارد؟
کلاینت به هرچیزی میگویند که یک درخواست داشته و آن را از طریق یک رابط کاربری (متنی یا گرافیکی) به سرور ارسال میکند. در حال حاضر بیشتر این درخواستها از طریق مرورگر و با استفاده از رابطهای کاربری ساخته شده با HTML-JS به سرورها ارسال میشود. اما شما از طریق یک ترمینال یا CMD نیز میتوانید درخواست ارسال کنید.
بعنوان یک نکته مهم: کلاینت به شخص خاصی اطلاق نمیشود بلکه به دستگاه یا پلتفرمی که در حال استفاده از آن هستیم گفته میشود، به همین دلیل در عنوان این بخش ننوشتهایم «کلاینت کیست؟» بلکه «کلاینت چیست؟». برای مثال کلاینت ارسطو عباسی سن ۱۰ سال نیست، بلکه مثلا Andriod Phone – Tehran و مواردی شبیه به این البته با جزئیات بیشتر است. به همین دلیل کلاینت میتواند یک اپلیکیشن موبایلی، پلتفرم، برنامهای روی یک سرور دیگر (مانند یک بات) و... باشد.
منظور از خود بک-اند چیست؟
بک-اند به تمام تکنولوژیهایی گفته میشود که میتواند ورودیها را دریافت کند و براساس آن یک خروجی مناسب را ایجاد کرده و آن را به سمت کلاینت برگرداند. به صورت پایهای و ساده بک-اند شامل سه بخش میشود که در کنار همدیگر میتوانند این هدف را به انجام برسانند.
- سرور – سرور به کامپیوتری گفته میشود که برنامهها روی آن اجرا شده و درخواستها را دریافت میکند.
- اپلیکیشن – اپلیکیشن به بخشی اطلاق میشود که روی سرور اجرا شده و به درخواستهایی که دریافت میشود «گوش» داده و براساس اطلاعاتی که در دسترس دارد (بانک اطلاعاتی) و منطق (logic) که برنامهنویس آن را نوشته به درخواست کلاینت پاسخ میدهد.
- بانک اطلاعاتی – در پاراگراف قبلی اشارهای کوچک به بانک اطلاعاتی شد اما بصورت کلی بانک اطلاعاتی به جایی گفته میشود که تمام دادههای موجود اپلیکیشن در آن ذخیره و مدیریت میشود. بانک اطلاعاتی مرجعیست که ما دادههای مورد نیاز یک درخواست را از آنجا دریافت میکنیم.
سرور چیست؟
به هر کامپیوتری (ماشین) که بتواند درخواستهای ورودی را دریافت کند سرور گفته میشود. اگرچه در حال حاضر کامپیوترهای مخصوصی برای این منظور طراحی شده است اما شما حتی میتوانید کامپیوتر شخصیتان را بصورت یک سرور درآورده و برای توسعه اپلیکیشنتان از آن استفاده کنید. هرچند که این کار در ابدا استاندارد نیست اما ما در حال آشنایی با تمام احتمالات هستیم.
اپلیکیشن چیست و چه نقشی دارد؟
سرور یک اپلیکیشن را اجرا میکند که براساس منطقی که دارد به هر درخواست بصورتی منحصر به فرد جواب میدهد. برنامهنویسی که در حال نوشتن این اپلیکیشن است باید با تمام کنشها و واکنشهایی که ممکن است روی سرور ایجاد شود آشنایی داشته باشد و بتواند به صورتی مناسب پاسخگوی نیازمندیهای کلاینت باشد.
ابزار اصلی که یک برنامهنویس با آن کار میکند، زبان برنامهنویسی است. هر زبان برنامهنویسی یک چهارچوب منحصر به فرد داشته و در کنار ویژگیهایی که دارد، محدودیتهایی نیز داشته که برنامهنویس حرفهای باید بر آنها آگاهی داشته باشد. دانستن این محدودیت باعث میشود که برنامهنویس بتواند به بهترین شکل به درخواستها پاسخ بدهد.
پاسخ به درخواستها به چه شکلی هستند؟
بعد از آنکه درخواستی ارسال شد و سرور آن را پردازش کرده و پاسخی به کلاینت ارسال کرد، این پاسخ به شکلهای متفاوتی ارسال خواهد شد. برای مثال یک حالت ارسال یک فایل HTML برای نمایش به کلاینت است. اما در حالتهای دیگر این کار ممکن است با ارسال یک فایل JSON و یا یک HTTP status code یا کد وضعیت HTTP باشد.
در رابطه با اینکه این کد وضعیت چیست باید توضیحات کاملی ارائه شود که در این مطلب نمیگنجد اما اگر تا به حال در وبسایتی به دنبال چیزی جستجو کرده باشید و آن چیز پیدا نشده باشد با کد ۴۰۴ مواجه شدهاید. این یکی از کدهای وضعیت است که به معنای پیدا نکردن آن مبحث در بانک اطلاعاتیست.
بانک اطلاعاتی چیست و چه کاربردی دارد؟
همانگونه که اشاره شد، بانک اطلاعاتی مرجعیست که تمام اطلاعات را در خود داشته و شما برای ارسال یک پاسخ در اکثر مواقع نیاز دارید که به آن ارجاع کنید. بسیار مهم است که بدانید، بانکهای اطلاعاتی بسیار زیادی در دنیا وجود داشته و هر کدام کاربرد و کارایی متفاوتی از همدیگر دارند. برای مثال دو نوع معروف از این بانکهای اطلاعاتی، بانک اطلاعاتی رابطهای و NoSQL است که براساس نیازمندیهای شما در فرایند توسعه یک اپلیکیشن به کار برده میشود.
یک اصطلاح رایج در دنیای بانک اطلاعاتیها «کوئری» است. کوئری گرفتن از بانک اطلاعاتی به معنای ارتباط گرفتن با آن به منظور خاصی به مانند ایجاد ارتباط اپلیکیشن با بانک اطلاعاتی، خواندن یک داده مشخص، نوشتن یک داده مشخص و... است.
نقشه راه PHP
برای طراحی یک نقشه راه یادگیری PHP، میتوانیم از مراحل ابتدایی تا پیشرفته پیش برویم. PHP یک زبان برنامهنویسی سمت سرور است که عمدتاً برای توسعه وب استفاده میشود. در ادامه، نقشه راه پیشنهادی برای یادگیری PHP را ارائه میدهیم:
مقدماتی
-
مفاهیم پایه برنامهنویسی:
- متغیرها، دادههای نوع، عملگرها
- شرطها و حلقهها
- توابع و دامنه متغیرها
- مدیریت خطا
-
آشنایی با سینتکس PHP:
- نحوه نوشتن کدهای PHP درون HTML
- کار با فرمها و ارسال دادهها
-
کار با رشتهها و اعداد:
- تابعهای رشتهای و عددی
-
مدیریت فایلها در PHP:
- خواندن و نوشتن فایل
متوسط
-
پایگاه دادهها و PHP:
- معرفی به MySQL/MariaDB
- ایجاد و استفاده از پایگاه داده
- CRUD (ایجاد، خواندن، بهروزرسانی، حذف)
-
سشنها و کوکیها:
- مدیریت حالت کاربر
-
احراز هویت کاربر:
- سیستم ورود و ثبت نام
پیشرفته
-
معماری MVC و فریمورکها:
- آشنایی با مفهوم MVC (مدل، ویو، کنترلر)
- کار با فریمورکهای PHP مانند Laravel یا Symfony
-
تست و اشکالزدایی:
- واحد تست (Unit Testing)
- اشکالزدایی کد (Debugging)
-
امنیت در PHP:
- جلوگیری از حملات XSS و CSRF
- کار با HTTPS و امنیت رمزنگاری
-
RESTful APIs و Web Services:
- ساخت و مصرف APIها
-
بهینهسازی و Deployment:
- بهینهسازی عملکرد برنامه
- استقرار برنامههای PHP روی سرور
- برای یادگیری کامل PHP از صفر تا صد به شما پیشنهاد میکنیم که به صفحه مسیر یادگیری PHP مراجعه نمایید.
-
نقشه راه Node.js
-
نقشه راه یادگیری Node.js به شما کمک میکند تا با استفاده از این محیط اجرایی سمت سرور برای JavaScript، اپلیکیشنهای مقیاسپذیر و کارآمد بسازید. Node.js امکان استفاده از JavaScript برای توسعه سرور، ابزارهای خط فرمان، و حتی برای برنامههای دسکتاپ را فراهم میکند. در اینجا، یک نقشه راه از سطوح مقدماتی تا پیشرفته برای یادگیری Node.js آورده شده است:
مقدماتی
-
مفاهیم پایه Node.js:
- نصب و راهاندازی Node.js
- مدیریت پکیج با npm (Node Package Manager)
- ایجاد اولین اسکریپتهای Node.js
-
کار با ماژولها:
- فهم ماژولهای بومی Node.js (fs, path, http)
- ایمپورت و اکسپورت ماژولها
-
آسنکرون برنامهنویسی:
- Callbacks، Promises، Async/Await
- مدیریت خطاها در کد آسنکرون
-
کار با فایلها و دایرکتوریها:
- خواندن و نوشتن فایل
- کار با جریانها (Streams)
میانی
-
ایجاد وب سرور:
- استفاده از ماژول http برای ایجاد سرورهای ساده
- کار با Express.js برای ساختن اپلیکیشنهای وب
-
دیتابیسها:
- کار با MongoDB و Mongoose برای NoSQL
- اتصال به دیتابیسهای SQL مانند PostgreSQL یا MySQL
-
معماری RESTful API:
- طراحی و پیادهسازی APIهای RESTful
- استفاده از Postman برای تست API
پیشرفته
-
تست و اشکالزدایی:
- Unit testing با Mocha و Chai
- Debugging با Node.js Inspector
-
امنیت اپلیکیشن:
- احراز هویت و اجازه دسترسی با JWT (JSON Web Tokens)
- جلوگیری از حملات رایج مانند XSS و CSRF
-
بهینهسازی عملکرد:
- Profiling و مانیتورینگ اپلیکیشن
- کشینگ و کاهش زمان پاسخ
-
کار با WebSocket:
- ایجاد اپلیکیشنهای Real-Time با Socket.io
-
میکروسرویسها و کانتینرسازی:
- درک معماری میکروسرویس
- استفاده از Docker برای کانتینرسازی اپلیکیشنها
-
Deployment و DevOps:
- استقرار اپلیکیشنها روی AWS یا Heroku
- CI/CD با GitHub Actions یا Jenkins
- برای یادگیری کامل Nodejs از صفر تا صد به شما پیشنهاد میکنیم که به صفحه مسیر یادگیری Node.jsمراجعه نمایید.
نقشه راه Python
-
-
نقشه راه یادگیری Python به شما کمک میکند تا در یکی از محبوبترین و چندمنظورهترین زبانهای برنامهنویسی دنیا مهارت پیدا کنید. Python به دلیل سینتکس ساده و خوانایی بالای خود، برای تازهکاران بسیار مناسب است و در عین حال، کاربردهای پیشرفتهای در علم داده، توسعه وب، هوش مصنوعی، اتوماسیون، و بسیاری زمینههای دیگر دارد. در ادامه، یک نقشه راه از سطوح مقدماتی تا پیشرفته برای یادگیری Python ارائه شده است:
مقدماتی
-
آشنایی با Python:
- نصب Python و راهاندازی محیط توسعه (IDE)
- سینتکس اصلی و اجرای اسکریپتهای ساده
-
مفاهیم پایه برنامهنویسی:
- متغیرها، دادههای نوع، عملگرها
- شرطها، حلقهها، توابع، و ماژولها
-
کار با دادهها:
- لیستها، دیکشنریها، تاپلها، و مجموعهها
- رشتهها و اعمال روی آنها
-
کنترل جریان برنامه:
- شاخهبندیها و حلقهها
- درک اسکوپ متغیرها و اسکپتهای شرطی
متوسط
-
برنامهنویسی شیگرا:
- کلاسها، شیها، وراثت
- متدهای خاص کلاسها
-
کار با فایلها:
- خواندن و نوشتن فایلها
- مدیریت مسیر فایلها و پوشهها
-
مدیریت استثنائات:
- Try و Except برای کنترل خطاها
-
ماژولهای استاندارد:
- datetime، math، os، sys
پیشرفته
-
کار با دیتابیسها:
- SQLite و SQLAlchemy برای کار با دیتابیسهای SQL
-
وب اسکرپینگ:
- کار با requests و BeautifulSoup
-
توسعه وب:
- Flask یا Django برای ساخت وب اپلیکیشنها
- برای یادگیری کامل پایتون/جنگو از صفر تا صد به شما پیشنهاد میکنیم که به صفحه مسیر یادگیری Python مراجعه نمایید.
-
جمعبندی
در این مطلب از وبسایت راکت شما را بصورت بسیار ساده با بحث Back-End آشنا کردیم. مباحث بسیار زیاد دیگری نیز وجود دارد که در این فرایند نیاز دارید تا آنها را یاد بگیرید. به همین دلیل میتوانید از بخش مقالات وبسایت موارد دیگر را نیز مطالعه کرده و در مقاطع مختلف با مباحث دیگر آشنا شوید.
دیدگاه و پرسش
در حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید