저는 Im 컨설팅 비즈니스를 지원하기 위해 일련의 서비스를 제공하는 SOA 아키텍처를 고려했습니다. 이전에는 각 애플리케이션이 공유 MS SQL 데이터베이스에서 필요한 것을 선택하여 작업 한 데이터베이스 통합을 사용했습니다. 우리는 자바, .net 및 마이크로 소프트 액세스를 포함하여 괴물 데이터베이스와 통합하는 다양한 애플 리케이션을 가지고 있었고, 모든 것이 밀접하게 결합되어 있으므로 참조 무결성이있었습니다.SOA 스타일 - 데이터 공유
서비스 간 데이터 공유를 지원하는 방법에 대해 약간 혼란 스럽습니다.
매월 도매 업체가 제공하는 제품 데이터베이스 위에있는 제품 서비스를 이용할 수 있습니다. 우리는 도메인 모델을 만들고이를 Hibernate 또는 whatvever를 사용하여 데이터베이스에 배치합니다. implentation wise Product는 도매업자가 제품에 대해 제공 한 정보를 제공하는 대형 객체 그래프입니다.
검토 서비스, 가격 서비스, 배송 서비스 및 재고 서비스가 ProductUpdated, ProductAdded, ProductDeleted를 구독하게됩니다. 문제는 각 서비스가 제품에 대한 정보의 일부 또는 일부만 필요로한다는 것입니다. 배송은 치수와 무게 만 필요할 수 있습니다. 가격 책정에는 제품 ID, 도매 비용, 대량 할인, 현재까지 유효한 가격 만 필요할 수 있습니다. 리뷰에 제품 ID, 제품 이름, 제작자가 필요할 수 있습니다.
전체 제품 (적절한 비 구독자 관련 계약 (예 : ProductUpdated) 및 모든 제품 개체 그래프를 나타내는 적절한 스키마)을 게시하고 구독자가 필요한 모든 항목을 도메인 모델에 매핑 할 수있게하는 것은 일반적인 관행입니다 (또는 도대체 ... 그들은 심지어) 도메인 모델이 없을 수도로 원하는
을 아니면 내가이 쓰기로 나는 어쩌면 생각 해요 : 그냥 제품 세부 정보를 포함하지 않습니다 (
제품 서비스 게시합니다 ProductAdded 메시지 제품 ID 및 타임 스탬프)
가격 결정 서비스 su ProductAdded에 bscribes 및 발행 RequestPricingForProduct 메시지
제품 서비스 게시합니다 ResultForPricingForProduct 메시지
흠 .. 보인다 더 작은 ...하지만 난 어떤 다른 서비스 내가 할 수있는 기반으로 제품 서비스에 대한 계약을 짓고 있어요처럼 느낀다 미래 XYZ 서비스에서 아마도 뭔가 다른 것을 요구할 것입니다. 내가 혼란스러워하는 곳에서 더 명확 해지고 있다고 생각되면서 거기에서 멈추게 될 것입니다. 아마도 대중이 옳은 것이 무엇이든지 돌아가는 길을 폭로해야하기 때문에 아마도 위의 것이 효과가있을 것입니다.
모든 의견이나 방향에 크게 감사드립니다. 반쯤 구워지면 죄송합니다.