2014-04-30 6 views
1

이 문서의 정의를 이해하려고합니다. http://www.opengroup.org/soa/source-book/ontologyv2/service.htm오픈 그룹 SOA 온톨로지 서비스 vs 서비스 인터페이스 vs 서비스 계약

서비스, 서비스 인터페이스 및 서비스 계약의 정의가 명확하지 않거나 일반적으로 발생하는 것으로 보입니다.

서비스 :

는 "A 서비스 지정된 결과를 가지고 반복적 인 활동의 논리적 표현입니다. 그것은 독립적이며, '블랙 박스' 의 소비자입니다. "

내가 WCF 프로젝트가 있다고 가정하자 및 두 개의 운영 점포 + GetPrice + AddToCart와

정의를 가지고 "반복적 인 활동"이라고 말합니다. StoreFront 서비스도 마찬가지입니까? 또는 두 개의 서비스 (GetPrice 및 AddToCart)가 있습니까?

서비스 계약 : "효과"클래스가 있습니다. 효과는 "반품 가격"이고 "장바구니에 추가"됩니까? 같은 기사에서

+0

+1 큰 질문입니다. 왜 당신이 downvote있어 ... –

답변

1

:

" 잘 정의 된 '약관'및 인터페이스를 사용하여 다른 사람에게 하나의 엔티티 또는 기관에 의해 제공되는 기능."(출처 : OMG SoaML 사양 - 내 이탤릭체)

이것은 제 생각에 "반복적 인 활동"에 대해 말하는 것보다 바람직한 것입니다.

정의의 키워드는 입니다. 기능은입니다. Capability는 Business Capability을 나타내며 BPM 업계에서 이월되지만 SOA 컨텍스트에서는 명확한 경계가있는 비즈니스 도메인을 나타냅니다.

이 정의에서 우리는 서비스가 노출되어야하거나 비즈니스 기능/프로세스 경계 내에서 작동해야한다고 추측 할 수 있습니다. 이는 서비스가 잘 정의 된 경계 내에서 자율적이어야한다는 아이디어 (SOA의 principals or tenants에서)로이 끕니다. 당신의 예에서

, 당신은

그래서 서비스 점포가

을 요구하고있다? 아니면 두 가지 서비스가 있습니까 (GetPrice 및 AddToCart)

항상 그 대답은 "의존적"입니다. 그러나 일반적으로 가격 (GetPrice)은 주문 (AddToCart)과 다른 비즈니스 기능에 속합니다. 또한 작업은 다른 중요한 방법과 다릅니다.

  • GetPrice는 읽기 작업이고 AddToCart는 쓰기 작업입니다.AddToCart와 아주 잘 우리는 아마 그들이 비즈니스 관점에서 두 개의 서로 다른 서비스가 있다고 가정한다 이러한에서

그래서 비동기가 될 수있는 동안

  • GetPrice은 동기 작업입니다.

    이 가정에는 몇 가지 급격한 반향이 있습니다. 두 서비스가 있다면 SOA에 따라 자율적이어야합니다. 서비스를 가능한 모든 방식으로 연결을 최소화하기 위해 가능한 한 많이 계획, 개발, 테스트, 구축, 배포, 호스팅, 지원 및 관리 할 수 ​​있다는 것을 의미해야합니다.

    또 다른 반향은 서비스를이 정도까지 물리적으로 분리 할 때 어떻게 이러한 것들을 사용자에게 보여줄 수 있는가하는 것입니다. 그들은 기능이 다를 수 있지만 여전히 화면에서 함께 작업해야합니다.

    또한 백엔드 관점에서 주문은 가격 데이터에 대해 알아야하며 그렇지 않은 경우 주문 이행은 어떻게됩니까? 데이터베이스를 두 개로 분리 한 경우 Checkout 서비스에서 얼마나 많은 재료 비용, 적용 할 할인 금액 등을 알 수 있습니까?

    이 자료에 대해 게시했습니다. before이므로 언제든지 읽어보십시오. Lewis와 Fowler도 우수 논문을 Microservices에서 읽는 것이 좋습니다.