مزیت های اصلی Node Js چیست؟؟!!

Node Js
ابوالفضل محمدی جو

ابوالفضل محمدی جو

Node JS یکی از پر سرعت ترین فریمورک های مورد استفاده در بکند (backend) طراحی وب است که به زبان جاوااسکریپت نوشته شده است. این فریمورک اولین بار در سال ۲۰۰۹ توسط رایان دال معرفی گردید. با معرفی Node JS، هم فرانتد و هم بکند طراحی وب، می تواند با جاوااسکریپت صورت پذیرد و از آن زمان، بازار کار، تقاضای گسترده ای برای توسعه دهندگان و برنامه نویسان MEAN و MERN از خود نشان داده است. MEAN مخفف ۴ تکنولوژی ای است که در طراحی وب به کار گرفته می شوند: MongoDB، Express JS، Angular JS و Node JS و همچنین MERN تنها Angular JS را با React JS جایگزین می کند. اما سوال اصلی اینست که دلیل شهرت و استفاده روز افزون از Node JS چیست و مزایای این فریمورک نسبت به سایر فریمورک های بکند طراحی وب چیست؟؟!!

همانطور که می دانیم، زبان برنامه نویسی جاوااسکریپت، مانند زبان پایتون و PHP، یک زبان تک نخی است و قابلیت برنامه نویسی چند نخی (multi-threading) را مانند زبان های جاوا و سی پلاس پلاس، ندارد. این به معنای آنست که هر درخواست http که برای مثال به PHP ارسال می گردد، باید یکی پس از دیگری انجام پذیرد و زمانیکه ترافیک و تعداد کاربران وبسایت زیاد است، سرعت بارگذاری وبسایت و تجربه کاربری به صورت چشمگیری کاهش می یابد.

همانطور که همه طراحان وب می دانند، در گذشته و پیش از معرفی Node JS، تنها راه اجرای کدهای جاوااسکریپت تنها از طریق مرورگرها (browsers) بود و هر مرورگر (مثلا Firefox یا google chrome یا Microsoft edge)، کامپایلر جاوااسکریپت مخصوص به خود را داشت. در سال ۲۰۰۸، کمپانی گوگل کامپایلر جاوااسکریپت گوگل کروم (موتور V8) را متن باز (open source) کرد. رایان دال، از این موضوع استفاده کرده و فریمورک Node JS را طراحی کرد که بتوان کدهای جاوااسکریپت را خارج از مرورگر هم اجرا نمود، اما قابلیت های نود جی اس خیلی بیشتر از این می باشد. رایان دال موتور V8 را با کتابخانه معروف libuv که به زبان C نوشته است و قابلیت پردازش درخواست ورودی / خروجی همزمان را مبتنی بر حلقه های رویداد (event loops) ارائه می دهد، ترکیب کرد تا بتوان چندین درخواست http را به طور همزمان پردازش کرده و سرعت سرور و بارگذاری وبسایت در مواقع پر ترافیک را بالا برد.

همانطور که می دانیم، برنامه نویسی چند نخی خیلی برای کار کردن، آسان نیست و چالش هایی مانند “بن بست” (Dead Lock) زمانیکه پشته فراخوانی (Call Stack) نخ پر است و توابع در پشته یک نخ نیاز به خروجی سایر توابع در نخ های دیگر دارند، وجود دارد و احتمالا به همین دلایل است که برخی زبان ها مانند PHP و جاوااسکریپت در ابتدا به صورت تک نخی طراحی گردیدند. برای حل این مشکل، نود جی اس یه استخر نخ (thread pool) که معمولا دارای ۴ نخ است، را طراحی کرد که در هر نخ، تنها یک درخواست و فراخوانی می تواند وجود داشته باشد که این باعث می شود که مشکل بن بست حل شده و همچنین سرعت پردازش درخواست ها افزایش یابد.

به طور خلاصه، می توانیم دلیل اصلی سرعت Node JS را این موضوع بیان کنیم، اما باید در نظر داشته باشیم که سایر تکنولوژی های بکند مانند جنگو، اصلاحاتی را انجام داده اند که به صورت یک فریمورک چند نخی عمل می کنند و این موضوع سرعت پردازش درخواست های http در جنگو را بالا برده است.

این مقاله را در شبکه های اجتماعی خود به اشتراک بگذارید.

2 پاسخ

  1. آقای ابوالفضل محمدی جو بسیار فرد توانا با معلومات بالا می باشد. و دوستی با ایشان جز افتخارات بنده می باشد.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

اشتراک در خبرنامه