2011-12-15 4 views
2

Grails 및 웹 개발을 처음 사용했습니다. 스케줄 관리 웹 사이트에 관한 프로젝트를 시작했습니다. Grails가 제공하는 Service 개념을 발견했습니다. 나는 그 개념을 이해했지만, 여전히 서비스를 사용할 때 혼란 스럽다.Grails에서 서비스 구현을 언제 고려해야합니까?

예를 들어, 나는 user 그의 schedules을 찾기위한 manager 검색 할 수있는 search 모듈을 구현해야합니다. 이 경우 컨트롤러 또는 서비스로 구현하는 것이 좋을까요?

그래서,

  • 내가 Service를 사용해야합니까?

답변

2

무엇을 어디에서 사용해야합니까? Service?

컨트롤러가 다른 컨트롤러에서 재사용 할 수있는 것을 수행하고자 할 때 우리 어플리케이션에서는 기능적으로 분리되어 있습니다. CorePersistanceService는 Core Domain Classes (핵심 핵심 요소)를 생성, 삭제, 업데이트 및 조작하는 메소드를 제공합니다.

나는 지속성 서비스가 Grails 코드 전체에서 GORM 코드를 재사용하는 좋은 방법이라고 생각합니다. 도메인 클래스에서 메소드를 작성할 수는 있지만, 생각하지 않아도된다.

PDF 작성을위한 PDFService 클래스, 모든 메소드를 모으는 Statisticservice 인 SolrService가있다. 우리의 데이터에 statictics를 모으는 것

Grails의 서비스는 컨트롤러에서 재사용 할 수있는 가능성을 부여하기 위해 특정 기능 테마와 관련된 메소드를 모으는 방식입니다 (저는 SecurityService에 대해 언급하는 것을 잊었습니다. 응용 프로그램 예제)

+6

구성없이 트랜잭션을 가져 오는 편리한 방법이지만 @Transactional 주석으로 기본 동작을 쉽게 무시할 수있는 옵션도 있습니다. –

+1

@BurtBeckwith Right! Quartz Plugin (BTW, Burt, SpringSecurity 플러그인에 대한 감사 :-))과 함께 작업 할 때 컨트롤러와 작업간에 코드를 쉽게 공유 할 수 있습니다. – Grooveek

+0

@Grooveek : 경험 공유에 감사드립니다.) –

6

Grooveek의 대답에 추가하려면;

서비스를 사용하여 훌륭하고 깨끗한 컨트롤러를 유지하는 것도 좋습니다.

그래서 뷰는 데이터를 화면에 렌더링하고, 도메인 개체는 상태를 저장하며, 컨트롤러는 응용 프로그램을 중심으로 사용자를 라우팅하고 서비스가 작업을 수행합니다.

+0

이것은 컨트롤러를 가능한 한 얇게 유지하기를 원하기 때문에 아마도 서비스에 대한 _best_ 사용 일 것입니다. – cdeszaq

3

답변에 대한 의견이나 투표에 대한 평판이 부족하여 의견을 제시해야합니다. 어쨌든 ...

+1에 @tim_yates 대답. 얇은 컨트롤러가 있어야합니다. 나는 컨트롤러의 설명을 추가 할 2 가지 :

  1. (예 : 날짜, 번호 등) 서비스를 타격하기 전에 브라우저에서 매개 변수를 번역하는 것입니다
  2. 는 데이터에서 반환 번역하는 것 서비스를보기에 소모되는 것으로

나를 위해 이상적으로 서비스는 String 매개 변수를 고유 유형으로 변환하는 것을 결코 다루지 않습니다. 또는보기에 표시 할 모델을 작성하는 방법을 다루십시오.

+1

서비스에서 다루지 않아도되는 것들은 내가 아는 한이 질문에 대한 좋은 대답입니다. 컨트롤러가 도메인 개체와 함께 수행 할 수있는 작업과 상관없이 서비스가 도메인 개체 및 기타 데이터를 처리해야한다는 생각은 염두에 두어야 할 좋은 점입니다. – cdeszaq

관련 문제