Node.js چیست و چرا؟


ناصر نادری 1396/05/18

بنام خدا بعد از وقفه ای بلند میخوایم برای اولین بار در این سایت آموزش بستر node.js  رو در خدمت دوستان باشیم. وجود و ظهور هر زبان و یا بستر برنامه نویسی و توسعه نرم افزار دلایل خاص خودشو داره. برای اینکه بتونیم انتخاب درست در استفاده از ابزار مناسب رو داشته باشیم باید هدف از ایجاد یک تکنولوژی رو بدونیم. به عنوان مثال قبل از وجود زبان جاوا, برنامه نویسان و مهندسان ناچار به استفاده از زبانهایی مثل C++ برای توسعه برنامه های خودشون روی بسترهای مختلف بودند که این کار مشکلات فراوانی از جمله همخوانی کد برنامه با سیستم های مختلف که موجب تغییر در بخشهای زیادی از کد میشد. همچنین عدم تخصص یک زبان برای یک محیط یا سبک مشکل دیگه ای بود که مهندسین محترم و معظم نرم افزار با اون مواجه بودن. منظور اینه کا شما وقتی میخوایید یک وب سایت بسازید به ندرت زبانهای مخصوص وب و شبکه رو مثل php یا C# رو رها کنید و برید سراغ C و نوشتن cgi . یعنی امروزه زبانها و بسترها هرچه بیشتر به سمت تخصصی شدن در یک زمینه خاص حرکت میکنن و سعی میشه تا با سیستم عامل های مختلف همخوانی داشته باشن.

به عنوان مثال اگر بخواهیم روی کاوش داده یا Data Mininig  کار کنیم زبانهایی مثل python  یا R میتونن گزینه های مناسب و تخصصی در این زمینه باشن. یا برای برنامه های ریاضی و جبرخطی و هوش مصنوعی بیشتر از محیط mathlab استفاده میکنیم.

همینطور هست علت پیدایش Node.js  . بیشتر ابزارهای امروزی یک بخش سرور و یک بخش کلاینت دارن. مثل برنامه های chat و یا بازیهای آنلاین. در نتیجه برنامه نویسی سمت سرور یک چالش مهم در توسعه برنامه های مختلف هست. چالشهایی مثل تنظیم میزان ترافیک ورودی . میزان فضای رم. کنترل ورودی و خروجی و میزان استفاده از CPU و استفاده از ترید های پردازشی مسائلی هستن که باید در یک برنامه سمت سرور مورد توجه قرار بگیره.

یکی از مهم ترین بحث ها توی بخش سرور , معماری نرم افزار هست . یعنی اینکه ما ازچه ساختاری برای دریافت درخواستها پردازش و تحویل به کلاینها استفاده میکنیم. یا مسئله push notification  و ارسال آلارمها به کلاینتها یک مسئله مهم برای توسعه برنامه های realtime مثل telegram هست.

تا قبل از Node.js  به جز موارد خاص بقیه برنامه ها مجبور بودن از یک سرویس دهنده مثل سرویس دهنده وب استفاده کنن. مثلا برای استفاده از php توی برنامه نویسی سرور و وب شما مجبور به راه اندازی یک وب سرور مثل apache  هستید که درخواستهای کلاینت رو پردازش کنه. یا برای استفاده از C# در asp.net  شما احتمالا باید از یک سرویس دهنده وب مثل IIS استفاده کنید. یکی از ایده های خوب در Node.js  اینه که شما نیازی به یک سرویس دهنده وب  ندارید و خود نود میتونه یک سرور وب یا tcp رو بصورت توکار راه اندازی کنه . نکته دیگه نحوه پردازش درخواستهای کلاینت هست. در سرورهای وب قدیمی برای هر درخواست یک Thread  باید ایجاد میشد که باعث انتظار کشیدن بعضی درخواستها برای دریافت سهم ترید میشد. در صورتی که در Node.js  یک برنامه خودش داخل یک پردازه بصورت چرخشی منتظر یک رویداد از طرف کلاینت هست و وقتی رویداد درخواست اومد اون رو بدون بلاک کردن منابع جواب میده و برمیگرده به چرخه قبلیش . این عمل بیشتر روی دستگاههای I/O انجام میشه. به همین دلیل به Node.js  سروریسدهنده رویدادگرا بدون بلاک کردن یا non-Blocking event driven میگن.  

 

یکی از مسائل دیگه ای که Node.js  رو محبوب و خاص میکنه اینه که زبان برنامه نویسیش جاوا اسکریپت هست یعنی شما میتونید با جاوا اسکریپت برنامه سمت سرور بنویسید که در نوع خود محشره.   نصب node.js  خیلی راحته برید سایته http://nodejs.org و دانلودش کنید بعدم نصبش که توی ویندوز به راحتی نصب یک برنامه کوچیک مثل IDM هست. الان هر برنامه ای به زبان جاوا اسکریپت بنویسید میتونید اون رو با برنامه node از خط فرمان به شکل زیر اجراش کنید  

Node main.js

Node   از موتور جاوااسکریپت Chrome به نام V8 استفاده میکنه که خودش به زبان C++ نوشته شده. و شما میتونید هر addon رو به زبان C++ برای نود بنویسید. اساس کار node.js با ماژول ها ست برای هر کاری بخوایید میتونید ماژولهای مختلفی رو پیدا کنید. مثلا برای طراحی وب سایت و وب اپ میتونید از ماژول express استفاده کنید یا اینکه برای برنامه نویسی socket از socket.io  استفاده کنید یا اینکه ماژول خاص خودتونو بنویسید. در واقع ماژولها حکم کتابخانه ها یا library   رو دارن.

با Node چه کارهایی میتونیم انجام بدیم :

 

  • 1-    برنامه نویسی سمت سرور (به عنوان چت سرور و یا سرور بازیهای آنلاین و ...)
  • 2-    وب اپلیکیشن های تک صفحه ای
  • 3-    وب سایتهایی با درخواست تراکنش I/O بالا
  • 4-    برنامه های realtime
  • 5-    برنامه های دسکتاپ با استفاده از ماژول Electron
  • 6-    وب سرویس

 

سئوال : آیا Node.js  اومده جای زبانهایی مثل جاوا یا C# و php رو بگیره ؟ خیر . مورد استفاده Node.js  متفاوت هست . اگرچه میشه همون کارهارو  انجام داد ولی به نظر این حقیر برای توسعه یک سیستم تحت وب مثل دبیرخانه یا سیستم ارتباط با مشتریان اصل پروژه بهتر با جاوا یا ASP.Net نوشته بشه و اگه جایی نیاز به یک سرویس سریع یا ارتباط دو طرفه سریع مثل چت باشه از Node استفاده میکنیم.

در جلسه بعد برنامه نویسی در این بستر رو به همراه نصب و راه اندازیش خواهیم داشت... درپناه حق .

 

فایلهای ضمیمه
توجه! هیچ فایل ضمیمه ای برای این مطلب یافت نشد
درباره نویسنده
admin
ناصر نادری
prgnaderi@hotmail.com
فوق لیسانس مهندسی نرافزار- برنامه نویس و مدرس دانشگاه
نظرات شما
نظر جدید