• بخش 2 – Node.JS ، معرفی – بخش دوم
بخش 2 – Node.JS ، معرفی – بخش دوم
1395/03/10 - 12:09:57 // Node.js // 0 نظر // 467 بازدید

Node.js ( نود جی اس ) یک پلتفرم برای ساخت برنامه های سمت سرور مقیاس پذیر در مقابل درخواست های انبوه و همزمان می باشد . اولین موردی که شاید به ذهن شما در زمینه زبان برنامه نویسی Node.js که بر پایه جاوا می باشد خطور کند این است که Node.js نیز مانند جی کوئری Jquery یک کتابخانه سمت کلاینت ( مرورگر ) باشد ! در صورتی که این ذهنیت از اساس اشتباه است ، و در واقع Node.js یک زبان برنامه نویسی سمت سرور مانند ( ASP.NET , PHP , Java ,… ) می باشد .

بخش 2 Node.JS ، معرفی بخش دوم

چرا Node.js ؟

Node.js ( نود جی اس ) یک  پلتفرم برای ساخت برنامه های سمت سرور مقیاس پذیر در مقابل درخواست های انبوه و همزمان می باشد .

اولین موردی که شاید به ذهن شما در زمینه زبان برنامه نویسی Node.js که بر پایه موتور v8 گوگل می باشد خطور کند این است که Node.js نیز مانند جی کوئری Jquery یک کتابخانه سمت کلاینت ( مرورگر ) باشد ! در صورتی که این ذهنیت از اساس اشتباه است ، و در واقع Node.js یک زبان برنامه نویسی سمت سرور مانند ( ASP.NET , PHP , Java ,… ) می باشد .

Node.js یک روش نیست ! بلکه یک محیط یا پلتفرم سمت سرور بوده و بر پایه ی جاوا می باشد . در Node.js بمانند سایر زبان های برنامه نویسی سمت سرور نیاز به ذخیره ی اطلاعات در یک پایگاه داده را دارید . که این پایگاه داده می تواند از نوع No-SQL مانند MongoDB و یا CoachDB باشد و یا می توانید با استفاده از API های بطور مثال ASP.NET MVC اطلاعات را در یک پایگاه داده SQL Server و ... ذخیره نمایید .

Node.js یک پلتفرم بر اساس موتور جاوا اسکریپت گوگل V8 است. V8 به زبان C++ نوشته شده است و توسط اسکریپت ECMA پیاده سازی شده است. یک موتور جاوااسکریپت کدهای جاوا اسکریپت را پردازش می کندو انها را اجرا می کند. در گوگل کروم استفاده می شود ولی می تواند به صورت مستقل نیز به کار برده شود.شما می توانید V8 را دانلود و در هر برنامه ای که میخواهید جاوا اسکریپت در آن اجرا شود قرار دهید. این موتور به یک مرورگر محدود نمی شود.و در سایر سیستم عامل ها مانند Windows XP, Vista, Windows7+, Mac OS X 10.5+, and Linux OS نیز اجرا می شود .

هدف Node ، فراهم کردن راهی ساده برای ساخت برنامه های قابل گسترشِ تحت شبکه است. در مثال وب سرور "Hello World" که در آینده آن را از نظر خواهیم گذراند ، تعداد زیادی از کانکشن ها به طور همزمان قابل پردازش اند. Node از طریق epoll، kqueue، /dev/poll، یا select به سیستم عامل فرمان می دهد که هر زمان کانکشن جدیدی ایجاد شد، وی را باخبر سازد. سپس به حالت sleep می رود. اگر اتصال جدیدی برقرار شد، سیستم عامل callback را صدا می زند. هر کانکشن در واقع تنها یک اختصاص دهی کوچکِ Heap است.

این روش با مدلهای همزمانی (concurrency) کنونی که در آن از Thread های سیستم عامل استفاده می شود متفاوت است. برنامه های تحت شبکه که بر پایه Thread ها ایجاد می شوند ناکارآمد و برای استفاده، پیچیده اند.. Node در استفاده بهینه از حافظه تحت فشارهای بالا نسبت به سیستم هایی که برای هر کانکشن ۲ مگابایت thread stack اختصاص می دهند، بسیار بهتر عمل می کند. گذشته از این، کاربرانِ Node دیگر نگرانی در مورد dead-lock ها ندارند و هیچ قفلی وجود ندارد. بعلاوه هیچ دستوری در Node مستقیماً کار I/O را انجام نمی دهد، بنابراین process هیچگاه بلاک نمی شود. و چون هیچ چیزی بلاک نمی شود برنامه نویسان غیر حرفه ای هم می توانند سیستم های پرسرعتی بنویسند.

Node در طراحی تحت تأثیر و بسیار شبیه سیستم هایی نظیر Event Machine Ruby و یا Twisted (Python) است. Node مدل رویدادگرا را کمی فراتر می برد. در Node چرخه ی رویداد به عنوان یک کتابخانه جدا از زبان نیست، بلکه با زبان گره خورده است. در سیستم های دیگر یک blocking call برای شروع چرخه رویداد وجود دارد. متد رایج این است که callback های مورد نیاز در شروع اسکریپت نوشته می شوند و در پایان سرور از طریق اجرای یک متد Blocking Call شروع به کار می کند. مثلاُ در Ruby داریم: EventMachine::run(). در Node چنین متدی برای شروع حلقه رویداد وجود ندارد. Node به سادگی پس از پردازش اسکریپت ورودی به چرخه ی رویداد وارد می شود. Node با تشخیص اینکه دیگر هیچ callback ای برای اجرا وجود ندارد از این حلقه خارج می شود. این عملکرد مانند اجرای جاوا اسکریپت در مرورگرهاست. حلقه رویداد از دید کاربر مخفی است.

در Node HTTP یک پروتکل ممتاز است. این کتابخانه بر اساس تجربیات نویسنده آن در توسعه برنامه های تحت شبکه و وب سرورها ایجاد شدهاست. برای مثال data streaming در اکثر framework ها کاری غیر ممکن است. Node سعی کرده است که این مشکلات را در پارسر HTTP خود و API های مربوط به آن حل کند. این ویژگی به همراه ساختار رویدادگرای Node، می تواند مبنایی برای بهترین کتابخانه ها و Framework های تحت وب باشد.

اما همزمانی در سیستم های چند پردازنده ای چطور؟ آیا thread ها برای گسترش برنامه روی کامپیوتر های چند هسته ای ضروری نیستند؟ در Node می توانید از دستور child_process.fork() برای شروع پروسس های جدید استفاده کنید. این پروسس های جدید به صورت موازی اجرا خواهند شد. همچنین می توانید از ماژول cluster به منظور load balancing کانکشن ها روی چند پروسس استفاده کنید.

پلتفرم Node.js می تواند برای ساخت اپلیکیشن هایی مانند موارد زیر به کار آید:

1- تجارت الکترونیک

2- شبکه های اجتماعی

3- سرویس های بلادرنگ

4- جریان داده ها

چه برنامه هایی از Node.js استفاده کرده اند؟

Walmart

E-bay / PayPal

Microsoft

LinkedIn

Yahoo

Google

Node.jsیک کتابخانه از جاوا اسکریپت نیست بلکه یک پلتفرم است که جاوااسکریپت را سمت سرور اجرا می کند.

اپلیکیشن های Node بر روی هاست موجود شما نمی توانند اجرا شوند ، شما می توانید از VPS و سرروهای مشخص برای نصب Nodeو اجرای برنامه خود استفاده کنید. راحت ترین روش برای گسترش اپلیکیشن Node استفاده از سرویس های مقیاس پذیر مانند Heroku که کاملا رایگان هستند، می باشد.

شاد و سلامت باشید

محمد جعفری فوتمی

محمد جعفری فوتمی
معرفی نویسنده : محمد جعفری فوتمی

از سال 1382 بطور تخصصی در زمینه ی طراحی وب سایت کار کرده ام و در طی 12 سال گذشته تجربیاتی را کسب کرده ام که در هیچ کتاب و منبع آنلاینی یافت نمی شود ، تصمیم گرفته ام تا این تجربیات را در قالب مقالاتی به اشتراک بگذارم . امیدوارم مفید واقع شود .

امتیاز به مطلب
           
نظرات کاربران
ارسال نظر