(AngularJS)서비스

보통 서비스는 하나의 객체를 리턴하는 형태가 주를 이루는데 다양한 함수적인 기능을 수행하는 컨트롤러와는 상당한 차이가 있다.

컨트롤러는 $scope상의 모델을 조작하거나 UI와 밀접하게 여러 기능들을 수행한다.
반면 서비스는, 서비스 자체가 싱글톤이라는 특성을 사용해 컨트롤러간의 통신을 제어하거나, 리소스 접근 권한을 가진 객체를 리턴해서 컨트롤러에서 이 객체로 CRUD를 수행하거나 하는 방식으로 사용하게 된다.

서비스는 애플리케이션에 기능을 제공하며, 경우에 따라 애플리케이션이 의존하는 데이터를 표현하는 모델을 정의할 수도 있다.
그러므로 원격서버와 통신하면서 그 상태를 모델(Model)로서 관리하는 객체들이라면 서비스라고 부르기도 한다.

app.service('nametrickService', function(){
  this.reverse = function(name)
  {
    return name.split("").reverse().join("");
  };
});


.service와 동일하게 사용할 수 있는 메소드로 .factory()라는 메소드가 존재한다.
.factory()는 어떤 객체를 리턴하기 전에 몇 가지 코드를 실행할 수 있는 공간을 제공한다.
이런 특성을 활용해서 서비스와 동일하게 사용될 수 있게 된다.

app.factory('nametrickFactory', function()
{
return {
  reverse : function(name)
  {
    return name.split("").reverse().join("");
  }
}
});

지금까지 하나는 service로 하나는 factory로 서비스를 모듈에 등록했지만, 컨트롤러에 주입하기 전에는 실제로 사용할 수 없다.


초반에 선언했던 컨트롤러를 약간 수정해서 컨트롤러에 위에서 만든 서비스를 컨트롤러에 주입해보자.




< Service, Factory, 그리고 Provider의 차이 >

서비스를 생성하는 방법이 여러가지 있는데 (클래스를 객체화 시키는 것처럼)
Service를 가지고 직접 생성하는 방법이 있고,
아니면 Factory를 생성한 후, Factory에서 instance를 받는 방법이 있고
아니면 Constructor에서,받아서 생성하는 방법이 있고
또는 Provider를 사용하는 방법이 있다.

var app = angular.module('myApp' []);

//서비스 definition
app.service('testService', function(){
  this.sayHello = function(text){
   return "Service says \"Hello" + text + "\";
 };
});







댓글

이 블로그의 인기 게시물

(네트워크)폴링방식 vs 롱 폴링방식

(ElasticSearch) 결과에서 순서 정렬

(18장) WebSocekt과 STOMP를 사용하여 메시징하기