مقایسه نود جی اس و انگولار جی اس

مقایسه نود جی اس و انگولار جی اس

مقایسه نود جی اس و  انگولار جی اسcompare node js and angular js

مقایسه نود جی اس و انگولار جی اس

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

 

قبل از مقایسه NodeJS و AngularJS ، بیایید ببینیم معماری  MEAN Stack چیست . MEAN Stack مجموعه ای از فناوری های مبتنی بر Javascript است که برای ساختن وب سایت های پویا و برنامه های وب استفاده می شود. MEAN مخفف MongoDB ، ExpressJS ، AngularJS و NodeJS است.

 

 

NodeJS و AngularJS برای ساخت  وب  اپلیکیشن و همچنین وب سایتهایی با استفاده از JavaScript ایجاد شده اند ، اما معماری و کارکرد آنها کاملاً متفاوت است. بیایید به معماری یک برنامه وب نگاهی بیندازیم تا بتوانید نحوه استفاده از هر دوی آنها را بفهمید.

نود جی اس - انگولار جی اس - اکسپرس جی اس - مونگو دیبی

 

مقایسه انگولار و نود جی اس :

همانطور که  طبق تصویر بالا می بینید AngularJS برای توسعه فرانت اند استفاده می شود که شامل تعامل با مشتری و NodeJS برای توسعه سمت سرور است که شامل تعامل با پایگاه داده می شود. هر دو می توانند برای ایجاد برنامه های وب کاربردی ترکیب شوند.

 

NodeJSAngularJS
NodeJS کراس پلت فرم و یک محیط زمان اجرا برای برنامه های Javascript است.AngularJS یک بستر منبع باز برای توسعه برنامه های وب است که توسط گوگل نگه داری می شود.
برای استفاده از NodeJS ، باید آن را در سیستم خود نصب کنید.به منظور استفاده از AngularJS ، لازم است فایلهای آن  را مانند سایر فایلهای جاوا اسکریپت برای استفاده در برنامه ها اضافه کنید.
Node.js سکویی است که بر پایه موتور V8 JavaScript گوگل ساخته شده است.Angular از syntax جاوا اسکریپت  پیروی می کند.
NodeJS به زبانهای C ، C ++ و Javascript نوشته شده است.AngularJS  با جاوا اسکریپت نوشته شده است اما با فریم ورک هایی مانند JQuery متفاوت است.
Node.Js دارای فریمورک های مختلف دیگری مانند Express.js ، partial.js و Sail.js است .فقط یک فریمورک است.
این برنامه از عدم انسداد سرویس های I / O  و  معماری رویداد محور ، پشتیبانی می کند.افزونه نحوی HTML را برای توصیف مؤلفه ها و عناصر برنامه امکان پذیر می کند.

 

چارچوب MVC :

AngularJS یک معماری Model View Control   مناسب را ارائه می دهد که از نظر ماهیت نیز بسیار پویا است. همانطور که می دانیم ، هر برنامه ای از ترکیب ماژول های مختلف ساخته شده است ، که از نظر ماهیت و عملکرد با یکدیگر متفاوت ، اما  این ماژول ها توسط منطق با یکدیگر در ارتباط هستند. توسعه دهندگان باید همه اجزاء را بطور جداگانه بسازند و سپس آنها را با برخی از کدها و منطق های کاربردی ترکیب کنند تا آنها را به یک برنامه واحد تبدیل کنند. البته این یک کار اصلی در هنگام استفاده از یک چارچوب MVC برای توسعه دهندگان است.

 

MVC ساخت برنامه وب تحت سمت کلاینت را برای توسعه دهندگان آسانتر می کند. تمام عناصر MVC که به طور جداگانه توسعه می یابند بطور خودکار با استفاده از AngularJS Framework ترکیب می شوند. نیازی  به نوشتن کد های اضافه برای توسعه دهندگان نیست  تا همه عناصر در کنار هم قرار بگیرند. انگولار این امکان را به شما می دهد تا عنصر MVC را به طور جداگانه نوشته و سپس به طور خودکار آنها را براساس تنظیمات مشخص به هم مرتبط میکند.

 

معماری انگولار :

معماری انگولار برگرفته از  معماری MVW (Model-View-Everything) بوده و قادر به پشتیبانی از الگوهای دیگر نیز مانند Model-View-Controller یا Model-View-View Model است. ولی در این معماری ها ویوو یا قسمت نمایشی صفحه اطلاعات DOM را برای به روزرسانی داده ها و کنترل رفتار و رویدادها تغییر داده و دستکاری می کند. اما با استفاده از AngularJS ، دستکاری DOM وظیفه متد ها یا کنترلرها که در انگولار بخش منطق این وظیفه را بر عهده دارد کنترل میکند.

 

Model :

این پایین ترین سطح  اس ت که مسئول حفظ داده ها و مدیریت داده ها در برنامه است.که با درخواست های رسیده از سمت ویوو  که توسط دستورالعمل های پردازش شده اندبرزو رسانی میگردد .

 

View :

این بخش مسئول نمایش انواع داده ها به کاربر است. که به صورت عام  ،سیستم های قالب مبتنی بر اسکریپت مانند JSP ، ASP ، PHP هستند و  به راحتی با فناوری AJAX ادغام میشوند .

 

Controller :

این تعامل بین ویوو و مدل را کنترل می کند. کنترل کننده به ورودی کاربر پاسخ می دهد و تعامل را بر روی اشیاء مدل داده ، انجام می دهد.

 

موارد استفاده از AngularJS :

  • وضعیت مدل ها را مدیریت می کند
  • با سایر ابزارهای UI ادغام می شود
  • DOM را دستکاری می کند
  • نوشتن کدهای HTML سفارشی را مجاز می کند
  • به منظرو استفاده برای توسعه دهندگان javascript است که در زمان سریع صفحات وب پویا را ایجاد کنند

 

معماری نود جی اس :

Node.js یک سکوی سمت سرور است که برای ساختن برنامه های سریع و مقیاس پذیر ساخته شده است. Node.js از یک مدل I / O بدون انسداد مبتنی بر رویداد استفاده می کند که باعث می شود سبک و کارآمد باشد. نود جی اس برای برنامه های مبنی بر داده و  زمان واقعی  که در دستگاه های توزیع شده اجرا می شوند بسیار مناسب است .

 

1- ناهمزمان و رویداد محور :

همه API های Node.js کتابخانه غیر همزمان هستند. در اصل به این معنی است که یک سرور مبتنی بر Node.js هرگز منتظر یک API برای بازگشت داده نخواهد بود. سرور بعد از فراخوانی به API بعدی منتقل می شود و یک مکانیسم اطلاع رسانی از Events of Node.js به سرور کمک می کند تا از درخواست قبلی API پاسخی دریافت کند.

 

2- اجرای تک Thread اما بسیار مقیاس پذیر :

Node.js از یک مدل تک رشته ای با حلقه رویداد استفاده می کند. مکانیسم رویداد به سرور کمک می کند تا به روشی غیر مسدودکننده پاسخ دهد و در مقابل سرورهایی که از روش های سنتی و محدود برای رسیدگی به درخواست ها ایجاد می کنند ، سرور را بسیار مقیاس پذیر می کند. Node.js از یک برنامه تک رشته ای استفاده می کند و همین برنامه می تواند به تعداد بسیار بالاتری درخواست نسبت به سرویس دهنده های سنتی را ارائه دهد.

 

3- بسیار سریع :

NodeJS با استفاده از موتور V8 جاوا اسکریپت Google Chrome ، در اجرای کد بسیار سریع است.

 

4- بدون بافر  :

Node.js با استفاده از سیستم I / O بدون انسداد ، بر روی یک نخ واحد عمل می کند و به آن اجازه می دهد بدون تحمل بار اضافی بر روی سرور ده ها هزار اتصال همزمان را پشتیبانی کند . زمانیکه نیاز داریم هر درخواست بدون مسدود شدن منتظر پاسخ بماند ، به اشتراک گذاری یک نخ واحد بین کلیه درخواست هایی که از الگوی یکسان پیروی می کنند ، برای ساخت برنامه های همزمان بسیار مفید و کاربردی است . به منظور قرار دادن حلقه رویداد تک رشته ای ، Node.js از کتابخانه libuv استفاده می کند که به نوبه خود از چندین  نخ با سایز ثابت استفاده می کند که مسئولیت برخی از عملیات ناهمزمان I / O را بر عهده دارد.

 

تشریح معماری :

 

فرض کنیم تعداد "n"  کلاینت  به طور همزمان  اقدام به ارسال درخواست به سمت وب سرور میکنند.

بگذارید فرض کنیم ، کلاینت های ما Client-1 ، Client-2 ... و Client-n هستند.

وب سرور دارای مخزن محدودی از نخ ها است. فرض کنیم تعداد m نخ در  Thread Pool وجود دارد .

وب سرور این درخواست ها را یک به یک دریافت می کند.

  • - وب سرور Client-1  و Request-1  را بر میدارد ،یک نخ با نام T-1 از پردازنده برداشته و به این درخواست اختصاص میدهد :
     
  1. نخ T-1 ، محتوای  Client-1 Request-1 را می خواند و آن را پردازش می کند
  2. Client-1 Request-1 به هیچگونه عملیات انسداد IO نیاز ندارد
  3. نخ T-1 مراحل لازم را انجام می دهد و Response-1 را آماده می کند و دوباره آن را به سرور ارسال می کند
  4. وب سرور به نوبه خود این Response-1 را به Client-1 ارسال می کند

 

  • وب سروردرخواست دیگری تحت عنوان  Client-2  و Request-2  را بر میدارد ،یک نخ با نام T-2 از پردازنده برداشته و به این درخواست اختصاص میدهد :
  1. نخ T-2 ، محتوای  Client-2 Request-2 را می خواند و آن را پردازش می کند
  2. Client-2 Request-2 به هیچگونه عملیات انسداد IO نیاز ندارد
  3. نخ T-2 مراحل لازم را انجام می دهد و Response-2 را آماده می کند و دوباره آن را به سرور ارسال می کند
  4. وب سرور به نوبه خود این Response-2 را به Client-2 ارسال می کند

 

  • وب سروردرخواست دیگری تحت عنوان  Client-n  و Request-n  را بر میدارد ،یک نخ با نام T-n از پردازنده برداشته و به این درخواست اختصاص میدهد :
  1. T-n ، محتوای  Client-n Request-n را می خواند و آن را پردازش می کند
  2. Client-n Request-n به هیچگونه عملیات انسداد IO نیاز ندارد
  3. نخ T-n مراحل لازم را انجام می دهد و Response-n را آماده می کند و دوباره آن را به سرور ارسال می کند
  4. وب سرور به نوبه خود این Response-n را به Client-n ارسال می کند

 

اگر "n" بزرگتر از "m" باشد (که بیشتر اوقات اینچنین هست) ،  سرور  نخ های موجود  را به درخواست های کلاینت اختصاص می دهد . پس از استفاده از همه نخ ها ،  بقیه درخواست کلاینت باید در صف منتظر بمانند تا برخی از نخ ها پردازش عملیات خود را به پایان رسانده و آزاد شوند تا سرور بتواند این نخ ها به درخواست دیگری اختصاص دهد . اگر این نخ ها به مدت طولانی تری مشغول مسدود کردن وظایف IO (به عنوان مثال ، تعامل با بانک اطلاعاتی ، سیستم فایل ، JMS Queue ، سرویس های خارجی و غیره) باشند ، باید سایر کلاینت ها منتظر بمانند.

 

  • هنگامی که نخ ها از Thread Pool آزاد شدند و برای کارهای بعدی در دسترس قرار گرفتند ، سرور آن نخ ها را انتخاب کرده و آنها را به درخواست های Client باقی مانده اختصاص می دهد.
  • هر نخ از منابع زیادی مانند حافظه و غیره استفاده می کند بنابراین قبل از رفتن از حالت "مشغول" به "انتظار" ، باید تمام منابع کسب شده را آزاد کند .

 

جمع بندی :

AngularJS و NodeJS هر دو متن باز هستند و به زبان جاوا اسکریپت نوشته شده اند. در حالی که NodeJS برای ساخت برنامه های سمت سرور استفاده می شود ، از AngularJS برای ایجاد برنامه های وب استفاده می شود. اگر کمی بیشتر پیش بروید و از MongoDB به عنوان پایگاه داده خود استفاده کنید ، می توانید کل زیرساخت های خود را با استفاده از ابزارهای مورد علاقه JavaScript بسازید. این یک مزیت بزرگ برای توسعه دهندگان است زیرا آنها می توانند بر یادگیری فقط روی یک زبان تمرکز کنند و یک توسعه دهنده MEAN-stack باشند.

 

 

 

نظرات :

در عرض چند دقیقه برای ایجاد حساب

کاربری خود اقدام کنید


اکنون حساب کاربری خود را ایجاد کنید!


ایجاد حساب کاربری

با ثبت نام در نیلوتک از آخرین بروز رسانی های آموزش ها و مقالات سایت مطلع شوید