نود جی اس چیست ؟
در این مقاله قصد دارم به معرفی فریم ورک نود جی اس بپردازم که به کمک آن می توانید اقدام به توسعه وب کرده و برنامههای تحت وب خود را ایجاد کنید. این پلتفرم که بر اساس موتور جاوا اسکریپت گوگل ایجاد شده است، امکان ساخت سریعتر و مقیاس پذیرتر برنامههای تحت وب را به شما خواهد داد که میتوانید برنامههای ساخته شده در نود جی اس را تحت شبکه اجرا کنید.
نود جی اس امکان ساخت اپلیکیشنهای گوناگون مانند شبکههای اجتماعی، سرویسهای بلادرنگ، جریان دادهها و… را به شما خواهند داد که از نمونههای آنها میتوان به وبسایتهایی نظیر ebay، لینکدین، paypal، یاهو و… اشاره کرد.
node.js چیست و چه کاربردی دارد ؟
همانطور که میدانید زبان برنامه نویسی جاوا اسکریپت صرفا یک زبان سمت کلاینت است که در مرورگر اجرا میشود. اما پس از به وجود آمدن Node.js این وضعیت به کلی دگرگون شده و تغییر کرد؛ چرا که نود جی اس امکان اجرای جاوا اسکریپت روی سرور را فراهم کرده است. Node.js یک پلتفرم سمت سرور است که بر مبنای موتور جاوا اسکریپت گوگل موسوم به V8 ایجاد شده و به شما امکان برنامه نویسی javascript سمت سرور را خواهد داد.
این پلتفرم امکان ساخت سریعتر و مقیاس پذیرتر اپلیکیشنهای تحت شبکه را خواهد داد که در آن از تکنولوژی non-blocking I/O که یک تکنولوژی event-driven است به جای استفاده از روش سنتی Treading استفاده شده است.
وقتی در یک زبان سمت سرور مانند PHP، هر کاربری که به سرور متصل میشود، جاوا یک thread مخصوص به خود در آن ایجاد خواهد کرد. به عنوان مثال فرض کنید که آدرس همین مقاله را در مرورگر خود تایپ کرده و قصد مشاهده آن را دارید، تا زمانی که صفحه در حال لود شدن است و آیکون لودینگ تب مرورگر متوقف نشده است، ترد شما در حال درخواست است، این حالت به این معنی است که درخواست شما هنوز تمام نشده و نیاز به پاسخ دادن یک سری درخواستها است. در این صورت اگر تعداد بازدید به صورت همزمان یا همان تعداد درخواست همزمان بالا باشد، سرور با کندی مواجه شده و به خوبی نمیتواند با سرعت بالا پاسخ همه درخواستها را بدهد. در چنین حالتی نیاز به افزایش منابع RAM و CPU داریم که همین مسئله باعث بیشتر و بیشتر شدن هزینهها خواهد شد.
اما نود جی اس این مسئله را به کمک تغییر دادن روش اتصال ایجاد کرده است. در این روش به جای اینکه برای هر درخواست یک thread جدید ایجاد شود، اتصالها به صورت یک رویداد یا event ایجاد میشوند. در این صورت هر اتصال به عنوان یک رویداد در نظر گرفته خواهد شد، چرا که جاوا اسکریپت یک زبان رویداد محور است. بنابراین با ایجاد یک thread تمامی درخواستها به صورت یک رویداد مدیریت شده و پاسخها سریعتر خواهند بود. دیگر نباید منتظر عملیات ورودی-خروجی باشیم، اینجا صرفا رویدادها هستند که دریافت نتیجه را سبب میشوند.
از انجایی که رویدادها در نود جی اس به صورت مسدود نشونده(non-blocking) هستند، فشار کمتری روی سرور در تعداد درخواست بالا ایجاد شده و برای همین کارایی سیستم افزایش پیدا خواهد کرد. این حالت میتواند برای برنامههایی که به صورت لحظهای و بلادرنگ(Real-Time) هستند مفید باشد.
لازم به ذکر است که، پلتفرم Node.js خودش صاحب یک وب سرور است لذا اگر شما از یک وب سرور استفاده میکنید، Node.js از آن استفاده نخواهد کرد، چون خودش دارد و برای اینکه برنامه شما را اجرایی کند از طریق خطوط دستوری به نام Command Line استفاده میکند.
موتور جاوا اسکریپت V8 چیست؟
V8 بر پایه زبان ++C نوشته شده است که توسط اسکریپت ECMA پیاده سازی شده است. یک موتور جاوا اسکریپتی کدهای جاوا اسکریپت را پردازش و اجرا میکند. این فرآیند به صورت مستقیم در گوگل کروم اجرا میشود، اما این امکان نیز فراهم شده که به صورت مستقل نیز قابل اجرا باشد.
با دانلود V8 و قرار دادن آن در پروژه برنامه میتوانید جاوا اسکریپت را در آن اجرا کنید که در این صورت دیگر به یک مرورگر محدود نمیشود. برنامه ایجاد شده در node.js در سایر سیستم عاملها مانند Windows XP, Vista, Windows7+, Mac OS X 10.5+, and Linux OS نیز اجرا میشود. از کامپایلر JIT برای اجرای کدهای جاوا اسکریپت در V8 استفاده میشود. که در این بین V8 کدهای جاوا اسکریپت را قبل از اینکه اجرا شوند به زبان ماشین تبدیل خواهد کرد.
ویژگیهای کلیدی Node.JS
رویداد محوری: نود جی اس مانند بسیاری از پلتفرمهای دیگر دارای API و کتابخانهای عظیم است. تمامی کتابخانههای این سیستم به صورت غیر همزمان هستند. این مسئله باعث میشود که برنامه در هنگام استفاده از API منتظر بازگشت اطلاعات از سمت API در سرور نباشد. از این رو سرور پس از درخواست یک API به سراغ API بعدی رفته و در همین بین دیگر منتظر این نخواهد بود که آیا API دریافت شده است یا خیر! اما از مکانیزم دیگری که به صورت ثبت رویداد است برای اطلاع از وضعیت API ها استفاده میکند که این مکانیزم باعث بالا رفتن سرعت سیستم شده است.
سرعت بالا: به دلیل استفاده از مکانیزم ثبت رویداد و از سوی دیگر استفاده از جاوا اسکریپت مبتنی بر مرورگر گوگل کروم، این پلتفرم دارای سرعت بالایی است.
عدم استفاده از بافرینگ: دادههای خروجی در این پلتفرم به صورت تکه تکه منتشر میشوند که نشان از بافرینگ نبودن آن دارد.
مقیاس پذیر: استفاده از مکانیزم غیر همزمان باعث میشود تا سرور پاسخها را ارسال کرده و دیگر منتظر دریافت وضعیت دریافت اطلاعات در حالت درخواست تک به تک نباشد. در این صورت تعداد درخواستها برای اجرا به حداقل رسیده و به جای آن درخواستها به صورت رویداد درخواست شده و همچنین بررسی وضعیت آنها نیز به همین شکل صورت میگیرد.
مزایا و معایب نود جی اس چیست؟
همانطور که در ابتدا هم ذکر شد درخواستها در این پلتفرم به شکل رویداد رد و بدل میشوند که همین مسئله باعث افزایش سرعت و کیفیت کارایی سیستم خواهد شد. مقایس پذیری این پلتفرم نیز بالا بوده و در سطح وسیعی از درخواستهای همزمان با تعداد کانکشن بسیار بالا پاسخگو خواهد بود. پس اگر به دنبال این هستید که یک سایت یا برنامه ایجاد کنید که در سطح بسیار بزرگ پاسخگوی نیاز شما باشد استفاده از Node.js میتواند انتخاب مناسبی باشد.
Node.js برای استفاده در کاربردهای API Restful نیز عالی است. این API یک سرویس وب است که چند پارامتر ورودی را گرفته و دادههای اندکی را در پاسخ پس میدهد. بدین ترتیب امکان دستکاری ساده دادهها بدون محاسبات زیاد و پیچیده وجود خواهد داشت. این وضعیت را در حالتی در نظر بگیرید که اگر در زبان php هزاران اتفاق رخ دهد، بعد از مدتی سیستم کلا از کار خواهد افتاد؛ اما نود جی اس همچنان میتواند بدون هیچگونه افت فشاری به هزاران درخواست در API خود پاسخ دهد.
در صورت استفاده از این سیستم در هاست های اشتراکی به دلیل اینکه دارای دشواریهایی است ممکن است پاسخگو نباشد. اما در حالتی که روی سرور اختصاصی یا مجازی پیاده سازی شده باشد به راحتی پاسخگوی شما خواهد بود.
امکان نصب نود جی اس به صورت ساده و آسان روی سیستم عاملهای ویندوز، مک و لینوکس فراهم بوده و امکان برنامه نویسی در زمانی کوتاه را به شما خواهد داد. اما از آنجایی که نمیتوان آن را به عنوان یک جایگزین برای آپاچی در نظر گرفت؛ چرا که اپلیکیشنهای موجود با آن کار نمیکنند. از سوی دیگر به این نیاز دارید که همه چیز را از ابتدا روی آن نصب کنید. البته این وضعیت آنطور که فکر میکنید دشوار نیست، چرا که با داشتن کتابخانههای متعددی که نود جی اس دارد میتوانید از امکانات متنوع هر یک از این کتابخانهها استفاده کنید.
ماژولهای node.js
درست مانند هر سیستم دیگری مانند آپاچی، نود جی اس نیز دارای ماژولهای مختلفی است که با نصب و اجرای آنها میتوانید به امکاناتی بیشتر دسترسی داشته باشید. از جمله این ماژولها می توان به data store، درگاههای پرداخت، ورود با شبکههای اجتماعی اشاره کرد.
اما در مقایسه با php این ماژولها در سطح بسیار وسیعی نیستند، چرا که هنوز این پلتفرم در حال توسعه است و جا برای بزرگتر شدن را دارد. یکی از ماژولهای مناسب این سیستم توابع ناهمگام است.
این توابع در پشت سیستم اجرا میشود. در حالی که در بیشتر برنامههای سمت سرور باید منتظر بمانید که توابع اجرا شده و به پایان برسند تا بتوانند به تابع بعدی بروند، نود جی اس از این قاعده مبرا است. توابع در این پلتفرم به شکلی است که به صورت همزمان قابلیت اجرا را دارند و نیازی نیست که اجرای آنها به صورت یک به یک باشد.
جهت خرید هاست نود جی اس می توانید از طریق این لینک اقدام نمایید.