پشته پایتون برای توسعه برنامه های تحت وب

پایتون زبان ساده و در عین حال قدرتمندیه که در زمینه های زیادی مورد استفاده قرار می گیره. یکی از زمینه های استفاده از این زبان در توسعه وب اپلیکیشن هاست.

python web stack

 

پایتون زبان ساده و در عین حال قدرتمندیه که در زمینه های زیادی مورد استفاده قرار می گیره. یکی از زمینه های استفاده از این زبان در توسعه وب اپلیکیشن هاست.
رابط استاندارد WSGI
کلمه ی WSGI مخفف Web Server Gateway Interface هستش. WSGI رابطی استاندارد بین وب سرورها و فریم ورک های پایتونه. WSGI رفتار و ارتباطات بین وب سرورها و فریم ورک های پایتون رو استاندارد سازی می کنه. WSGI باعث امکان پذیر شدن نوشتن کدهای پایتونی قابل حمل میشه و برنامه می تونه با هر وب سروری که WSGI رو ساپورت میکنه،‌اجرا بشه.

فریم ورک های پایتون

فریم ورک ها کار رو برای توسعه دهندگان راحت می کنن. فریم ورک ها شامل مجموعه ای از کتابخانه ها و ماژول های آماده هستند بنابراین توسعه دهنده را از نوشتن کدهای ابتدایی برای پروژه بی نیاز می کنند(فریم ورک های به طور پیش فرض پروژه را نیز امن می کنند). هر فریم ورک وبی می تواند شامل بخش های زیر باشد:
  • بخش Url Routing: این بخش هر در خواست HTTP رو به بخش خاصی از کد پایتونی نگاشت(MAP) میکنه.
  • اشیا درخواست(request) و پاسخ(response) : این اشیا اطلاعات رسیده از مرورگر کاربر یا فرستاده شده به اون رو اصطلاحا کپسوله می کنن.
  • بخش Template Engine : این بخش منطق برنامه رو از قسمت HTML جدا می کنه.
  • بخش Development Web Server : فریم ورک یک وب سرور رو برای توسعه (فقط برای توسعه) مهیا می کنه تا نوشتن کد در فاز توسعه رو سرعت ببخشه. این وب سرور با هر تغییر در کد به صورت اتوماتیک reload میشه.
باز هم باید بگم از این وب سرور فقط در فاز توسعه باید استفاده بشه. بعضی از دوستانم رو دیدم که در فاز Production هم از این وب سرور استفاده می کنن و همین باعث میشه کارایی برنامه به نحو چشم گیری پایین بیاد!
جنگو یکی از فریم ورک های پایتونی و شاید محبوب ترینشون باشه. یکی از نقاط قوت این فریم ورک جامعه کاربری گسترده اون هستش. این یعنی اگر با مشکلی رو به رو بشید، آدم های زیادی هستند که می تونید ازشون کمک بگیرید. این فریم ورک(جدا از بحث پرفرمنس) کارا رو خیلی راحت کرده.
با شروع کار با این فریم ورک چیزی که منو مجذوب خودش کرد، سادگی این فریم ورک بود. فلسک اجزایی رو که هر وب اپلیکیشن به اون نیاز داره در خودش داره و بقیه رو به صورت extension (افزونه) ارائه می ده. منطقش هم اینه که شاید همه به قابلیت هایی که فریم ورک ها دارن، نیاز نداشته باشن! مثلا شاید وب اپلیکیشن من نیازی به ارتباط با دیتابیس نداشته باشه خب پس نیازی هم به ORM برای ارتباط با دیتابیس نیست. اگر بخوام به دیتابیس وصل بشم باید افزونه مرتبط با اون رو نصب کنم. فلسک برای نوشتن API محشره.
چون تجربه کد نویسی با این فریم ورک رو نداشتم نمی تونم دربارش نظر بدم اما اون چیزی که در مستندات این فریم ورک اومده اینه که گزینه ی خوبیه برای نوشتن RESTful API
یکی از قشنگ ترین و بهترین فریم ورک های پایتونی است(البته تورنادو رو نمی‌شه فریم‌ورک وب دونست، تورنادو یک کتابخانه ناهمزمان شبکه است و از چهار بخش اصلی تشکیل شده که یکی از این بخش‌ها مسئول دریافت درخواست‌های HTTP و پاسخ‌ به اون‌هاست). نقطه قوت این فریم ورک پشتیبانی از ناهمزمانی در بهترین شکل اونه. اگر یک فراخوانی API داشته باشید که زمان زیادی طول بکشه، ممکنه که برنامه ی شما تا اتمام اون فراخوانی اصطلاحا بلاک بشه. تورنادو استاد ناهمزمانی است. با این فریم ورک شما می تونید API ها رو فراخوانی کنید بدون اینکه سایر بخش های برنامه بلاک بشن. اما . . . این اما خیلی مهمه!!! این فریم ورک هنوز به بلوغ نرسیده و خیلی از بخش های اون تکمیل نشده. کد نوشتن با اون نیاز به دانش برنامه نویسی قوی داره. این فریم ورک جامعه ی کاربری محدودی داره و اگر با مشکلی برخورد کنید نباید روی کمک کسی حساب کنید. اما در پایتون (برخلاف PHP) شما می تونید فریم ورک ها رو با هم تلفیق کنید. مثلا اگر تورنادو و جنگو رو با هم تلفیق بشن، هم از قابلیت های ناهمزمان تورنادو بهره مند میشید و هم از ORM ساده و کاربردی جنگو! نمونه این کار رو می تونید اینجا ببینید.
تورنادو در ترکیب با فریم ورک های دیگه بسیار کاربردیه ( به صورت وب سروری که بلاک نمی‌شه)

وب سرورها

در چند سال اخیر Nginx همه کاره دنیای وب سرورها شده. Nginx هم وب سروره هم ‌reverse proxy هستش هم میتونه load balancing رو انجام بده و هم توانایی basic authentication و streaming رو داره و کارایی بالایی هم داره و با WSGI هم منطبقه!
پیر خرابات!

سرورهای WSGI

سرورهای WSGI نسبت به وب سرورهای سنتی (Nginx, Apache) از منابع کمتری استفاده می کنن و کارایی بالاتری دارن.
این وب سرور نسبت به سایر وب سرور های WSGI تنظیمات ساده تری داره و برای کسانی که تازه شروع کردن میتونه گزینه مناسب تری باشه.
این وب سرور کارایی نسبتا بالایی داره و یک ویژگی خیلی مهم HTTP Request Buffering
این وب سرور تنظیمات پیچیده و گسترده ای داره که شاید برای کسانی که تازه شروع کردن و حتی بقیه!!! زیاد مناسب نباشه. اما اگر از دانش فنی بالایی در این زمینه برخودار باشید، uWSGI گزینه خیلی خوبیه.

هاستینگ

شاید اسم PaaS مخفف (Platform as a Service) به گوشتون خورده باشه. PaaS نوعی فضای ابریه که میزبان وب اپلیکیشن هاست. وقتی از PaaS برای میزبانی وب اپلیکیشن ها استفاده میشه،‌ توسعه دهنده به جای تمرکز برروی جزئیات اجرای برنامه روی هاست، فقط برنامه خودشو مینویسه. در واقع PaaS تمام پیش نیاز های اجرای وب اپلیکیشن ها رو مهیا کرده.
از وقتی که با این سرویس دهنده آشنا شدم، زندگی برام آسون شد! این سرویس دهنده پلن رایگان هم ارائه میده که برای تست برنامه هاتون می تونید ازش استفاده کنید. درمجموع بین همه ی سرویس دهندهایی که من تست کردم، این بهترینشونه!(البته نقص هایی هم داره که با استفاده ازش پی به اون می برید. یک نمونش تنوع دیتابیسه)
شاید قوی ترین هاستیگ باشه اما برای ایران تحریم بود و دنگ و فنگ زیاد داشت. اکثر دوستانم از این سرویس دهنده استفاده می کنن ولی من با Pythonanywhere راحت ترم.(البته باید بگم امکانات Heroku خیلی خیلی بیشتر از Pythonanywhere هستش)
این هاستینگ قبلا با اسم Gondor شناخته میشده. جدا از اسم خفن این هاستینگ(اگر فن The lord of the rings باشید،‌می فهمید من چی می گم) هرگز تستش نکردم ولی به خودم قول می دم تو اولین فرصت Eldaroin رو تست کنم. خدا رو چه دیدی شاید دست از سر Pythonanywhere  برداشتم!
*چند ماه بعد: مث **سارومان** تغییر موضع داده! فکر می‌کنم دیگه Paas نباشه.

تمپلیت انجین ها

این تمپلیت انجین به صورت پیش فرض در تعدادی از فریم ورک های پایتون مانند Flask استفاده میشه. شاید بهترین تمپلیت انجین هم باشه(جزئی از پلت‌پراجکت و ساخته آرمین روناچر)
این تمپلیت انجین به صورت پیش فرض توسط فریم ورک Pyramid استفاده میشه.
این تمپلیت انجین قابلیت های تمپلیت انجین های Django و Jinja2 رو با هم تلفیق کرده و به صورت پیش فرض در فریم ورک Pylons استفاده میشه.
ذکر این نکته ضروریه که بعضی از فریم ورک های پایتون از تمپلیت انجین خودشون استفاده می کنن مثلا Tornado و Django
اگر لیست کامل استک رو می‌خوایید فول‌استک‌پایتون می‌تونه براتون جالب باشه.
امیدوارم مفید واقع شده باشه
خوشحال و خندون باشید
ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی
طراح قالب : عرفـــ ـــان قدرت گرفته از بلاگ بیان