معرفی Node.js + بررسی مزایا و معایب آن

فریم ورک نود جی اس Node.js یک پلتفرم ساخته شده با موتور جاوا اسکریپت گوگل کروم (Google Chrome) می باشد که باعث ایجاد سهولت و مقیاس پذیری اپلیکیشن های تحت می شود.
Nodejs در واقع یک پلتفرم برنامه نویسی سمت سرور می باشد که تا به حال شرکت های بزرگی همچون IBM و Microsoft از آن استفاده کرده اند. این پلتفرم محبوب از مدل I/O رویداد محور استفاده می کند که کاملا مسدود نشونده (non-blocking) می باشد و همین موضوع باعث می شود تا فشار وارد به سرور تا حد زیادی کاهش و در مقابل کارایی و سرعت افزایش یابد.
استفاده نود جی اس از مدل I/O باعث می شود تا بتوان از آن برای اجرای برنامه های به صورت بلادرنگ یا Real Time بر روی سرورهای نامتمرکز استفاده کرد. به طور کلی از این فریم ورک محبوب در سال های اخیر به دفعات در پروژه های بزرگ و موفق استفاده شده است و ما در این مقاله تصمیم گرفتیم تا به طور کامل شما را با این Node.js و کاربردهای آن آشنا کنیم.
معرفی پلتفرم Node.js
Ryan Dahl توسعه دهنده پلتفرم Node.js تعریف رسمی و تخصصی تری از آن ارائه داده است. او می گوید پلتفرم Node.js جزئی از ساختمان موتور جاوا اسکریپت گوگل کروم می باشد که باعث سهولت در ساخت و مقیاسپذیرتر شدن برنامه های شبکه می شود. همانطور که گفتیم این پلتفرم از یک مدل I/O (ورودی و خروجی) رویداد محور (Event-Driven) و غیر مسدود شونده (Non-Blocking) استفاده می کند و همین امر باعث کاهش فشار موجود بر روی سرور و افزایش کارآیی آن می شود به علاوه برای اجرای اپلیکیشن های متمرکز بر روی داده (Data-Intensive) که بصورت Real-time در دستگاه های توزیع شده اجرا می شوند بسیار گزینه مناسبی می باشد.
در واقع Node.js یک فریم ورک متن باز (Open-Source) و یک پلتفرم چند سکویی (Cross-Platform) می باشد که به منظور توسعه اپلیکیشن های شبکه ای و سمت سرور (Server-Side) طراحی شده است و قابلیت اجرا در محیط سیستم عامل های OS x، Microsoft Windows و Linux را نیز دارد. این پلتفرم همچنین دارای کتابخانه ای سرشار از ماژول های جاوا اسکریپت می باشد.
اهداف فریم ورک نود جی اس
هدف اصلی Node.js در اصل دست یافتن به راهی آسان و امن برای ساخت اپلیکیشن هایی مقیاس پذیر و در حین حال کارآمد می باشد که رسیدن به این مهم به لطف معماری (Architecture) موجود در آن میسر می شود که ویژگی های این معماری به شرح زیر می باشد :
- تک رشته ای (Single threaded) :
Node.js برای اجرای عملیات به صورت تک رشته ای عمل می کند که این امر برخلاف پلتفرم هایی مانند Apache HTTP (که در آنها برای هر درخواست یک رشته تولید می شود) می باشد. در واقع این امر از جابجایی متن (Context Switching) در CPU جلوگیری به عمل آورده و باعث جلوگیری از انباشت بیش از حد در حافظه می شود.
- حلقه رویداد (Event loop) :
Node js از یک مدل تک موضوعی به همراه حلقه رویداد استفاده می کند بدین گونه که مکانیزم حلقه رویداد باعث می شود سرور به صورت غیر مسدود شونده (Non-Blocking) پاسخ ها را ارسال کند که در مقایسه با مکانیزم های سنتی که سرور را مجبور به ارسال چند درخواست برای پردازش می کردند، مقیاس پذیری بیشتری داشته دارد.
- ورودی خروجی غیر مسدود شونده (Non-Blocking I/O) :
Node.js به لطف مدل I/O نامتقارن تعبیه شده در کتابخانه خود، زمان کمتری را برای دریافت جواب از ورودی و خروجی های (وب سرویس، سیستم فایل ها، پایگاه داده و …) خود می کند. به لطف این ویژگی ها این فریم ورک قادر به مدیریت انبوهی از ترافیک بوده و در کسری از ثانیه به صورت متوالی درخواست رشته (Thread) می نماید. به علاوه تمام خروجی این پلتفرم بدون هیچ عملیات میانگیری (Buffering) و تماما به صورت تکه تکه ای منتشر می شود.
مزایای Node.js
- زمانی که فعالیت سرور به شدت افزایش پیدا می کند مانند زمان Attack DDOS این فریم ورک تمامی این سنگینی را به دوش کشیده و هیچ رد پایی برای متجاوزین باقی نمی گذارد. بدین ترتیب اولین ویژگی آن امنیت و نفوذناپذیری به آن است.
- همانطور که گفتیم نود جی اس به دلیل تک رشته ای و نامتقارن بودن، در زمان پردازش داده های ورودی و خروجی (I/O) دیگر فرآیندها را متوقف نمی کند به همین دلیل پاسخگویی آن در یک چشم بر هم زدن انجام می شود. در واقع شما به طور همزمان می توانید چندین Task مثل پیام دادن، کپی کردن فایل ها از روی دیسک، کار بر روی دیتابیس و … را بر روی سرور خود اجرا کنید.
- همانطور که گفتیم در اکثر پلتفرم ها برای هر درخواست یک رشته (Thread) ایجاد می شود که در واقع هر کدام از آنها فضایی را بر روی RAM سرور (مثلا 500 مگابایت) اشغال می کنند که طبیعتا در صورت ایجاد درخواست های بیش از حد RAM به حالت Shout down درخواهد آمد. در حقیقت کدهای مربوط به جاوا اسکریپت در رشته اصلی (main Thread) و کدهای مربوط به قسمت I/O در رشته های دیگر پردازش می شوند.
- موتور مجازی V8 گوگل در جاوا اسکریپت که وظیفه اجرا کدهای جاوا را برعهده دارد در پس از دریافت کدها و در زمان اجرا، عملیات شبیه سازی آن ها را انجام می دهد بدین معنی که زبان کدها را تبدیل به زبان کدهای موتور مجازی V8 می کند. بدین ترتیب توابعی که زیاد درخواست می شوند به علت شباهت به کدهای ماشین سریع تر پردازش شده و در نتیجه عملکرد کلی کدها سریع تر انجام می گیرد.
- همانطور که توضیح دادیم این پلتفرم به صورت متن باز در اختیار عموم قرار دارد و برنامه نویسان بسیاری در توسعه آن نقش داشته اند بدین معنی که یک کتابخانه بسیار وسیع و مجهز برای آن وجود دارد که به شما این امکان را می دهد تا برای اکثر مفاهیم ابتدایی و پیش پا افتاده از آن استفاده کنید و دیگر مجبور به کد نویسی درباره کوچکترین چیزها نباشید.
این پلتفرم همچنین مزایای دیگری نیز دارد که عبارتند از :
- تقریبا با تمامی سیستم عمل های موجود مانند Linux، Mac و Microsoft Windows سازگاری دارد.
- از فرآیند کش کردن یا Caching پشتیبانی می کند.
- خطایابی بسیار آسان و در عین حال دقیق دارد.
- کاربران بسیاری از آن در کل کشورها استفاده می کنند.
معایب Node.js
- چون کتابخانه معتبری از جاوا اسکریپت در دسترس نیست بنابراین استانداردهایی که کدهای منبع از روی آن نوشته می شوند همگی در یکجا جمع نیستند بدین معنی که هر سرور طراحی شده با js بسیار به توسعه دهنده (Developer) خود متکی و وابسته است.
- به دلیل اینکه این پلتفرم تا حدودی جدید و جوان می باشد برای همین اگر دغدغه بودجه برای توسعه یک سرور در میان باشد، متاسفانه در بیشتر هاست های اشتراکی قابلیت استفاده از Nodejs وجود ندارد.
نتیجه گیری
همانطور که مشاهده کردید فریم ورک Node.js یکی از پلتفرم های بسیار جدید و جوان در دنیای برنامه نویسی می باشد که به علت راحتی استفاده، امنیت بالا، سرعت بالا و تک رشته ای بودن تبدیل به یکی از محبوبترین ها در زمینه برنامه نویسی بک اند شده است. اگرچه هنوز با وجود فواید بسیار، مشکلات اساسی از قبیل عدم پشتیبانی اکثر هاست ها از آن وجود دارد اما به قطع یقین، آینده کسب و کارهای اینترنتی و به طور کلی تجارت الکترونیک در دستان این فریم ورک فوق العاده می باشد.
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.