سرویس ها در AngularJS

Categories AngularJS, Uncategorized
۱- AngularJS Service / Factory Tutorial با مثال
وظیفه ی سرویس ها در انگولار انجام وظائف محوله است!
این سرویس ها وظیفه ی انجام یک سری کارهای مربوط به لایه ی تجاری نرم‌افزار شما را بر عهده دارند. در طراحی انگولار موارد نگران کننده ی برنامه شما از هم جدا می‌شوند. کنترلر شما باید مسئول اتصال داده‌ها از model به view را از طریق $scope داشته باشد. البته این نوع انتقال شامل انتقال منطق نیست ، یک نوع واکشی داده یا دستکاری آن است. حالا اینجا لازم است یک لایه که شامل توابعی است که محاسبات را انجام می‌دهد به برنامه اضافه شود و آن هم سرویس ها هستند.انگولار امکانات مختلفی برای مدیریت این لایه در نظر گرفته است.
هر گاه می‌خواهیم از سرویس ها استفاده نماییم ، فقط می بایست نام آن را صدا بزنیم و سپس انگولار یک مدل تزریق جادویی ، اشیاء سرویس را برای شما وارد یا تزریق می‌کند که شامل یک شی stateless بوده و شامل یک سری توابع کاربردی هستند. این توابع از هر جایی قابل فراخوانی هستند مثل Controllers, Directive, Filters and … در نتیجه می‌توانیم برنامه خود را یک سری یونیت های منطقی تقسیم کنیم.پس می‌توانیم در منطق تجاری خود یک سری url استفاده نماییم که داده‌ها را از سرویس دریافت می‌کنند و در آبجکت های سرویس قرار میدهند.
قرار دادن منطق های تجاری نرم‌افزار در لایه‌ای جداگانه مزایای فراوانی دارد. بعنوان اولین مورد می‌توان به تفکیک وظائف و نوعی تبعیض وظیفه در نرم‌افزار رسید که کار کنترل محاسبات را ساده‌تر می کند. دوم در این روش می‌توان موقعیت های بیشتری را برای تست پذیر بودن برنامه بوجود آورد.

شکل بالا را در نظر بگیرید. ما برنامه ی خود را به کنترلر تقسیم کرده ایم: ۱- پروفایل ۲-داشپورد .
هر کدام از این کنترلر ها نیاز به یک سری داده‌های خاص از سرور دارند. لذا بجای تکرار مکررات فراخوانی داده‌ها در ویو ها ما یک سوریس بنام User Service ساخته و مسائل مربوط به سرور را از آن طریق حل می کنیم. و از این روش حداقل پیچیدگی در فراخوانی های تکراری را کمتر می‌کنیم.
انگولار بصورت خودکار User Service را در پروفایل وداشبورد تزریق خواهد کرد و این تزریق خودکار امکان تست پذیری لایه ها و ابجکت ها را ساده‌تر می نماید.

۲- سرویس های توکار انگولار
انگولار بصورت خود دارای سرویس های مختلفی است که در برنامه‌هایمان قابل استفاده هستند.مثل $http ضمناً تمامی این سرویس های داخلی با $ شروع میشوند.البته سرویس های دیگری نیز وجود دارند مثل $route, $window, $location و غیره.
این سرویس ها را می‌توان بوسیله ی تمامی کنترل های که این سرویس ها بعنوان وابسته معرفی می نمایند فراخوانی نمود مثل :

۳- سرویس های دستی در انگولار
در انگولار می‌توان سوریس هایی که خود طراحی می‌کنیم را هر جایی که لازم دانستیم فراخوانی نماییم.
روش‌های مختلفی برای فراخوانی سرویس های انگولار وجود دارند. دو روش زیر از ساده‌ترین ها هستند :

یا می‌توان از متد factory استفاده نمود.

این دو روش برای فراخوانی سرویس ها بکار برده میشوند.البته به تفاوت‌های بین factory() و service() اشاره خواهد شد. البته باید توجه داشت که هر دوی این روش‌ها بعنوان ساخت یک سرویس معرفی شده‌اند و در همه جا قابل دسترس هستند مثل : controllerها فیلترها ، Directives و …
۴- تفاوت بین Factory و Services در انگولار
سرویس های توکار انگولار همانطور که قبلاً اشاره شد اشیایی تک قلو هستند. این در نرم‌افزار کاربرد گسترده ای دارند. لذا این شی سرویس یکبار ایجاد شده و همه جا می‌توان استفاده نمود.
همانطور که اشاره شده است دو روش برای ساخت سرویس ها وجود دارد . استفاده از module.factory و module,service

 

وقتی نام سرویس بعنوان یک آرگومان قابل تزریق در ویو شما قرار داده می‌شود شما یک نمونه از تابع را برای خود فراهم می آورید. به عبارت دیگر تابع YouPassedToService() را درنظر بگیرید. این نمونه از شی بعنوان یک شی در سرویس قرارداده شده و انگولار آن را در سرویس ها ثبت نموده تا بتوان آن را در سایر سرویس ها و کنترلر ها استفاده نمود.
ولی وقتی از factoryName بعنوان یک سرویس فراخوانی می‌شود تنها نتیجه ی سرویس بازگشت داده شده و یک نمونه از شی فراخوانده نمی شود.
در مثال زیر MyService به دو روش مختلف فراخوانده شده است.

۵- تزریق وابستگی‌ها در سرویس ها
انگولار ابزارهایی را برای مدیریت وابستگی‌ها فراهم آورده است. در ویکی پدیا تزریق وابستگی اینگونه تفسیر شده است:
تزریق وابستگی الگویی برای طراحی نرم‌افزار است که اجازه می‌دهد تا واسط ها و وابستگی‌های پیچیده و کد بر کم شده و اجازه میدهد در حال اجرا آن را تغییرداده و یا با مدل های مختلف بکار برد.
در مثال‌های بالا نحوه ی تزریق وابستگی و مدیریت آن‌ها اشاره شد. ما $scope را کلاس کنترلر بکار بستیم.

حالا یک مثال عملی میزنیم تا کمی کنترل ها و سرویس ها را استفاده نماییم.

1- MathService : یک سرویس ساده دارای متدهای add , subtract , multiply and devide البته در این مثال فقط از multiply‌استفاده خواهیم کرد

2- CalculatorService :‌دارای دو متد square and cube

3- CalculatorController : این هم یک کنترلر ساده است برای عملیات های کاربر. برای UI مل یک TextBox داریم که کاربر یک عدد را وارد نموده و سپس با دو دکمه square and multiply آنرا مشاهده خواهد نمود.

۵-۱- HTML

۵-۲- جاوا اسکریپت

۵-۳- دموی آنلاین

 

و مثالی دیگر :

 

مدیر تیم های توسعه
نظریه پرداز جوامع نوین مجازی
نویسنده مقالات در ماهنامه های تخصصی

پاسخ دهید

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


× 1 = یک