آشنایی با Node.js
چهارچوبی است بر مبنای موتور جاوا اسکریپت که بهمنظور ایجاد برنامههای سریع و گسترشپذیر به وجود آمده است. Node.js از مدل رویداد گرا و non-blocking برای انجام عملیات I/O بهره میبرد. ازاینرو Node.js یک چهارچوبی سبک و کارا برای پیادهسازی برنامههای Real-time و مبتنی بردادهاست که میتواند بهراحتی در سرورهای نامتمرکز اجرا شوند.
node.js یک برنامه کاربردی متنباز، قابلاجرا در چهارچوبهای مختلف در زمان اجرا است، همچنین برای سمت سرور یک برنامههای کاربردی شبکه است. برنامه node.js در جاوا اسکریپت نوشتهشده است و میتوانید آن را در سیستمعاملهای OS X، مایکروسافت ویندوز، لینوکس و FreeBSD به اجرا درآورد.
node.js با استفاده از موتور گوگل V8 کدهای جاوا اسکریپت را اجرا میکند. درصد زیادی از ماژولهای اساسی آن در جاوا اسکریپت نوشتهشده است. این چهارچوب شامل کتابخانه ساختهشده است که اجازه میدهد تا برنامههای کاربردی بهعنوان یک وب سرور عمل کنند و بتوانند بدون نرمافزار از قبیل آپاچی سرور HTTP یا IIS کار کنند.
node.js بهعنوان یک پلت فرم سمت سرور پذیرفتهشده است و توسط Groupon، SAP، Microsoft، Yahoo، Walmart، Rakuten و PayPal مورداستفاده قرارگرفته است. با آن میتوانید کدهای جاوا اسکریپت خود را بهراحتی و بدون نیاز به مرورگر بر روی سیستمعاملهای ذکرشده اجرا کنید.
چرا node.js مفید است؟
با اینکه تاکنون چهارچوبهای مشابهی با زبانهای مختلف در این زمینه معرفیشدهاند، اما اهمیت Node.js در این است که با استفاده از جاوا اسکریپت چنین پلتفرم سمت سروری را تولید کردهاند که بیاغراق، مورداستفاده تمام توسعهدهندگان وب تاکنون بوده است، زیرا همه آنها برای انجام امور سمت کلاینت باید از جاوا اسکریپت استفاده میکردند و معرفی Node باعث شد تا بسیاری به این فکر بیفتند که دیگر به زبان سمت سرور اختصاصی خود نیاز نداشته و با استفاده از جاوا اسکریپت، بسیاری از دردسرها کاهش خواهد یافت.
استفاده از جاوا اسکریپت در سمت سرویسدهنده (server) به همراه استفاده از آن در سمت کاربر (Client)، احتمال ناهمخوانی و بروز مشکلات و معضلات محیطهای ناهمگون برنامهنویسی را کاهش داده و امکان برقراری ارتباط دادهای با استفاده از JSON میان هر دو طرف را فراهم میسازد. استفاده از یک کد اعتبارسنجی فرم چه در سمت سرویسدهنده و چه در سمت مشتری واقعاً لذتبخش است.
استفاده از هر سامانهای مزایا و معایبی دارد که سعی شده در زیر بهصورت مختصر چند نمونه از آنها ذکر شود.
مزایای node.js
• مقیاسپذیر به هزاران اتصال فعال.
• بسیار سریع (بهخصوص در مقایسه با PHP و Ruby).
• امنیت بیشتر در مقابل بار اضافی اعمالشده به سرور (بهخصوص در زمان وقوع حملههای DDOS که بقیه نرمافزارهای سرور مانند SSH قابلدسترسی و پاسخدهنده باقی میمانند).
• پارادایم ناهمزمان بسیار ساده، جذاب و آشنا.
• نیاز نداشتن به درگیری با مسائلی مانند thread-safety.
• عدم استفاده از Multithreading و بهتبع آن، مواجه نشدن با باگهای قفل کننده (blocking I/O).
• جامعه توسعهدهندگان بسیار عظیم و کتابخانهها و ابزارهای توسعه دادهشده غنی به همراه یک Package Manager قوی برای مدیریت ملحقات!
معایب node.js
• پیچیدگی کد برنامه ناهمزمان (Asyncronous) و مشکل بودن یادگیری مفاهیم اولیه برای برنامهنویسان ناآشنا با مدل برنامهنویسی موازی.
• تأخیر بسیار بالا در صورت نیاز وظایف داخلی به اتمام عملیات محوله. به دلیل اینکه برنامه بهصورت تکرشتهای اجرا میشود، یک تابع بازمان اجرای طولانی میتواند سرعت پاسخدهی کلی سیستم را بهشدت کاهش دهد.
• نبود یک کتابخانه استاندارد جاوا اسکریپت. برنامهنویسان جاوا اسکریپت بهشدت به استفاده آسان از آن عادت کردهاند، بدون اینکه به واردکردن کتابخانه خاصی نیاز داشته باشند. به همین دلیل، از هر چیزی در برنامهها پنج مدل مختلف وجود خواهد داشت که سردرگمی خاصی را ایجاد میکند. حتی ماژولهای قرار دادهشده در هسته Node.js نیز هرکدام پنج نوع مختلف دارند که به تکامل سریعتر میانجامد، اما درجه ابهام بالایی را نیز در پی خواهد داشت.
• دستگاههای نهایی نوشتهشده با این فناوری بهشدت نسبت به مدل CGI، یعنی Apache+PHP یا Perl یا Ruby و… پیچیدهتر بوده و استثناهای مدیریت نشده میتوانند کل فرآیند را متوقف کرده و نیاز به راهاندازی دوباره فرآیندهای در حال کار روی کلاستر را الزامی سازند. یک کد باگ دار نیز میتواند باعث خرابی فرآیند اجرایی مربوط شده و هر فرآیند در حال کار خراب، درخواستهای بسیاری را بیپاسخ خواهد گذاشت که بهتبع آن مقاومت کل سیستم در مقابل خرابی را کاهش داده و باعث کاهش کیفیت خدمات خواهد شد.
در مقاله بعدی نحوه نصب و استفاده از Node.js توضیح داده خواهد شد.
ممنون برای مطلب خوبتون