-
03-07 서비스앵귤러/02 앵귤러 기초 - 아키텍처 2017. 8. 18. 21:31
서비스
서비스는 응용프로그램에 필요한 모든 값, 함수 또는 특성을 포괄하는 광범위한 범주입니다.
거의 모든 것이 서비스가 될 수 있습니다. 서비스는 일반적으로 잘 정의된 목적을 가진 클래스입니다. 그것은 정의된 일을 잘 수행해야 합니다.
예 :
l 로깅 서비스
l 데이터 서비스
l 메시지 버스
l 세금 계산기
l 응용프로그램 구성
Angular는 서비스에 대하여 구체적인 것은 없습니다. Angular는 서비스에 대한 정의가 없습니다. 서비스 기본 클래스가 없으며 서비스를 등록할 곳도 없습니다.
그러나 서비스는 Angular 응용프로그램의 기본입니다. 컴포넌트는 서비스를 자주 사용합니다.
다음은 브라우저 콘솔에 기록하는 서비스 클래스의 예입니다.
src/app/logger.service.ts (class)
export class Logger {
log(msg: any) { console.log(msg); }
error(msg: any) { console.error(msg); }
warn(msg: any) { console.warn(msg); }
}
다음 예는 Promise를 사용하여 영웅을 불러오는 HeroService입니다. HeroService는 Logger 서비스와 서버 통신 작업을 처리하는 또 다른 BackendService를 사용합니다.
src/app/hero.service.ts (class)
export class HeroService {
private heroes: Hero[] = [];
constructor(
private backend: BackendService,
private logger: Logger) { }
getHeroes() {
this.backend.getAll(Hero).then( (heroes: Hero[]) => {
this.logger.log(`Fetched ${heroes.length} heroes.`);
this.heroes.push(...heroes); // fill cache
});
return this.heroes;
}
}
서비스는 어디에나 있습니다.
컴포넌트 클래스는 빈약할 수 있습니다. 서버에서 데이터를 가져오거나 사용자 입력의 유효성을 검사하거나 콘솔에 직접 로그온하지 않습니다. 이러한 작업을 서비스에 위임합니다.
컴포넌트의 역할은 사용자 경험 등을 가능하게 하는 것입니다. 뷰(템플리트에서 표시됨)와 응용프로그램 로직(종종 모델의 개념을 포함) 사이를 조정합니다. 좋은 컴포넌트는 데이터 바인딩을 위한 프로퍼티와 메서드를 제공합니다. 컴포넌트는 모든 중대한 것을 서비스에 위임합니다.
Angular는 이러한 원칙을 강요하지 않습니다. 3000 라인의 "주방 싱크"컴포넌트를 쓰더라도 불평하지 않습니다.
Angular는 응용프로그램 로직을 서비스에 추가하고, 의존성주입을 통해 컴포넌트가 해당 서비스를 사용할 수 있도록 함으로써 이러한 원칙을 따르도록 도와줍니다.
'앵귤러 > 02 앵귤러 기초 - 아키텍처' 카테고리의 다른 글
03-08 의존성 주입(Dependency Injection) (0) 2017.08.18 03-06 디렉티브 (0) 2017.08.15 03-05 데이터 바인딩 (0) 2017.08.15 03-04 메타데이타 (0) 2017.08.15 03-03 템플릿 (0) 2017.08.15