AngularJS service mimarisini kullanarak Seperation of concerns konseptini desteklemektedir. Service ler klasik javascript fonksiyonlarıdır ve spesifik işleri yapmak üzere kullanılmaktadır.AngularJS Controller konusunda da bahsettiğim gibi, controller sadece uygulamayı kontrol etme, yönetme işi için vardır. Bu yüzden, controller lar service leri kullanmaktadırlar. Bu sayede de kodunuz daha okunabilir ve test edilebilir olmaktadır.

AngularJS’ te 2 adet service çeşidi bulunuyor. Factory ve Service. Her ikiside service olarak geçmektedir.

Her ikiside birbirine teknik olarak çok yakınlar. Ve Bu yüzden geliştiriciler tarafından çok fazla karıştırılmaktadır. Aşağıda linklerini verdiğim konularda, bolca tartışılmıştır. Bir göz atabilirsiniz. Arından ben kendi deneyimlerimi aktarıcam.

  • http://stackoverflow.com/questions/23074875/angularjs-factory-and-service?lq=1
  • http://stackoverflow.com/questions/13762228/confused-about-service-vs-factory

Benim şimdiye kadar AngularJS ile yaptığım uygulamalardaki tercihlerim ve internetteki araştırmalarım sonucu vardığım kanı şudur;

Uygulamanızda dış dünya ile olan bağlantınızı yani XHR Requestleri Factory oluşturarak yapmalısınız.

Uygulama içi kullandığınız metodları ise, Service oluşturarak yapmanızda fayda var.

Örneğin herhangi bir sayının karesini almak istersek bir service yazıp kullanabiliriz.

AngularJS Controllers on jsbin.com

Bir sayının karesini almak uygulama içinde yazılacak bir fonksiyon ile çözülür. Bu yüzden service kullanmamız gayet yerinde oluyor.

API üzerinden sorgulama yapacağız. Factory kullanıyoruz.

Örneğin kullanıcıdan bir text alıcaz ve github.com üzerinde arıycaz, gelen sonuçlarıda sıralayacağız.

AngularJS Controllers on jsbin.com
Repo ismine angularjs yazıp aratın ve birkaç saniye içinde github.com daki sonuçlar alınıp, listelenecektir.

Kodu inceliyoruz;

  • repoName isimli bir model oluşturduk ve aranacak kelime yi bu model ile tutuyoruz.
  • ara butonunda ng click ile search metodunu tetikliyoruz.
  • search metodu, GithubFactory nin search metoduna repoName isimli modelin değerini gönderiyor
  • GithubFactory isimli factory, $http ve $q adında 2 tane Angular service ni kullanıyor ve $http servisinin get modu ile github api ye request atıyor.
  • Bu sırada $q servisi sayesinde asenkron olarak çalışabiliyoruz.
  • Sonuc gelince controller a dönüyoruz.
  • results isimli modele sonucu set ediyoruz.
  • View’ da result modelinin verisini ng-repeat ile parçalıyoruz
  • Parçaladığımız her sonucun name property sini bind ediyoruz.

AngularJS’ te service kullanımı basitçe bu şekilde olmaktadır. İlerleyen konularda daha geniş örnekler ile inceleyeceğiz.

Leave A Comment

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir