ورود / ثبت نام
0
0

معرفی NodeJS و SSJS بخش دوم

473 بازدید
معرفی NodeJS

معرفی NodeJS

در بخش ۱ معرفی NodeJS , ما درباره ی سه جزء اصلی NodeJS و چگونه انباشته شدن آنها برای ارائه ی بهترین عملکرد به کاربر بحث کردیم. در این بخش ۲ میخواهیم درباره ی معماری رویداد لوپ یا حلقه در NodeJS صحبت کنیم.
قبل از جهش به رویداد حلقه ی NodeJS نگاهی می اندازیم به رویداد حلقه ی جاوا سکریپت . بهتر است برای یادگیری بهتر حلقه ی NodeJS ابتدا حلقه ی جاوا سکریپت را درک کنیم.
بعضی از شما ممکن است با رویداد حلقه ی جاوا سکریپت آشنا باشید اما برای آنهایی که آشنا نیستند لطفا مقاله را از قسمت زیر دنبال کنید در غیر اینصورت از این قسمت گذشته و به رویداد حلقه ی NodeJS بروید.
رویداد حلقه ی جاوا سکریپت
همانطور که میدانیم جاوا سکریپت در یک thread اجرا میشود. وقتی که کاربر درخواست یک عملیات را میکند , runtime یک پاسخ به تماس ارائه میکند (برای عملیاتی که اجرا شده است وقتی که عملیات انجام شد) و به قدم بعدی میرود برای انجام عملیات های دیگر.

معرفی NodeJS

  • وقتی یک رویداد اجرا میشود , پیام های رویداد مربوطه در رویداد حلقه به صف میشوند.
  • رویداد حلقه موجود بودن پیام را چک میکند. اگر یک پیام رویداد وجود داشت , آنگاه پاسخ به تماس مربوطه اجرا میشود.
  • هرگاه کار پاسخ به تماس تمام شد , کنترل به رویداد حلقه بازمیگردد که از گام دوم ادامه پیدا کند.

یادداشت : اگر زمان اجرای جاوا سکریپت با پیام رویداد تداخل داشته باشد , آنگاه پیام دیگر باید تا اتمام کار پیام کنونی صیر کند.بعضی وقتا ممکن است از جستجوگر پیام هایی مانند : ” جستجوگر پاسخ نمیدهد ” دریافت نمایید. این به خاطر پیام رویداد با اجرای طولانی است . پس سعی کنید پیام اجرا را تا حد ممکن کوتاه نگه دارید.
برای مثال :

var msg = document.getElementById("msg"); 
msg.addEventListener("click", function () { 
this.style.color = "blue"; 
});

 

در مثال بالا ما رویداد کلیک را به تابعی بی نام به عنوان اداره کننده ی رویداد متصل میکنیم. زمانی که ما بر روی المان msg کلیک میکنیم , یک پیام رویداد در صف رویداد , وارد میشود.
اگر پیامی در صف بود , آنگاه پیام رویداد کلیک منتظر اتمام آن میماند. تمام پیام ها انجام میشوند , پیام رویداد کلیک نیز انجام میشود و جواب به DOM ارائه میشود.
پس حالا ما با رویداد حلقه جاوا سکریپت تا قسمتی آشنا شدیم . بگذارید به سراغ رویداد حلقه ی NodeJS برویم.
رویداد حلقه NodeJS
طبق بیانی توسط یک ناشناس , ” همه چیز در حالت موازی اجرا میشود ; همه چیز به جز کد هایتان ” کد های شما همگام اجرا میشوند اما عملیات های داده شده به کد توسط Node به صورت ناهمگام هستند.

معرفی NodeJS

 

در شکل قبلی معماری رویداد حلقه توسط NodeJS نشان داده شد.

  1. هرگاه یک درخواست رسید , در رویداد حلقه با یک جاوا سکریپت بسته شده که شامل رویداد (درخواست , پاسخ ) و پاسخ به تماس مربوطه به صف میشود .
  2. بعد از آن رویداد به یکی از کارگران رشته داده میشود اگر که کار به نظر مدت طولانی برای تکمیل شدن طول بکشد که از یک Thread pool C++ میباشد که توسط کتابخانه ی Libuv کنترل میشود.
  3. زمانی که کار انجام شد , پاسخ به تماس مربوطه برای برگرداندن پاسخ به Thread اصلی اجرا میشود.
  4. رویداد حلقه پاسخ را به مشتری بازمیگرداند.
    برای مثال :
var fs = require('fs'); 
fs.readFile('avator.png', function(avator) { 
console.log(‘image is loaded…’); 
}); 
fs.writeFile('log.txt', 'Done', function() { 
console.log(‘Done !..’); 
}); 

عملیات اجرا به ترتیب زیر دنبال میشود :

  1. کد ما به Node میگوید که دو وظیفه ی Read() و Write() را انجام بده و سپس استراحت کن.
  2. عملیات های Read() و Write() در صف درون رویداد حلقه قرار نمیگیرند و کار را برای کارگران Thread مشکل میسازد.
  3. هرگاه کارگر Thread کارش تمام شد , پاسخ به تماس را برای بازگرداندن پاسخ به حلقه تکرار اجرا میکند.
  4. سپس رویداد حلقه پاسخ را به مشتری بار میگرداند.

 

پاسخ به تماس های Read() و Write() برای یافتن اینکه کدامیک زوتر تکمیل میشوند , اجرا میشوند. اما به خاطر داشته باشید که فقط یکی از آنها در زمان قابل اجراست. به همین منظور محیط Node تضمین میکند که بن بست یا شرایط مسابقه ای وجود نداشته باشد. پس این اطمینان میدهد که NodeJS , I/O بلاک نشدنی ارائه میدهد.
میتوانیم محیط اداره ی پست را برای NodeJS درنظر بگیریم.
زمانی که ما چیزی را پست میکنیم (درخواست) , شرکت پست (Node) از مردان پست میخواهد که پست ها را به آدرس های مربوطه بفرستند ( انجام دادن کار) .
زمانی که ماموران پست , پست ها را میفرستند به شرکت خبر میدهند که کار ها یک یه یک انجام شده اند.
حتی ممکن است شرکت به مامورانی که وقتشان آزاد است بعضی وظایف دیگر را در زمان گزارش اختصاص دهد.
جمع بندی
بالاخره , خوشحالم که تونستم براتون رویداد حلقه ی NodeJS را توضیح بدم. لطفا اگر با قسمت هایی از آن مخالف بودید و یا مایل به یادگیری بیشتر در بعضی بخش ها بودبد برایم کامنت بگذارید . در قسمت بعد در مورد زمان استفاده و چرا اینکه از NoswJS استفاده کنیم صحبت خواهیم کرد.
ممنون از وقتی که گذاشتین . کد زنی خوبی داشته باشین !

  • پسورد: www.mspsoft.com
آیا این مطلب را می پسندید؟
https://www.mspsoft.com/?p=17792
اشتراک گذاری:
واتساپتوییترفیسبوکپینترستلینکدین
فاطمه زکایی
فاطمه زکایی هستم. فارغ التحصیل کارشناسی مهندسی نرم افزار، مدت سه سال هست که در زمینه توسعه اپلیکیشن های تحت وب و اندروید و همچنین تولید محتوای تخصصی برنامه نویسی تحت وب و اندروید در مجموعه mspsoft در خدمت شما هستم.
مطالب بیشتر
برچسب ها:

نظرات

0 نظر در مورد معرفی NodeJS و SSJS بخش دوم

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

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

هیچ دیدگاهی نوشته نشده است.