Tôi đang xem xét kiến trúc SOA cho một bộ dịch vụ để hỗ trợ một doanh nghiệp mà Im tư vấn, trước đây chúng tôi đã sử dụng tích hợp cơ sở dữ liệu nơi mỗi ứng dụng chọn ra nó cần từ cơ sở dữ liệu MS SQL được chia sẻ với nó vv .. Chúng tôi đã có các ứng dụng khác nhau tích hợp với cơ sở dữ liệu quái vật bao gồm java, .net và truy cập microsoft, có tính toàn vẹn tham chiếu như tất cả mọi thứ đã được kết hợp chặt chẽ.Phong cách SOA - Chia sẻ dữ liệu
Tôi hơi bối rối về cách hỗ trợ chia sẻ dữ liệu giữa các dịch vụ.
Cho phép sử dụng Dịch vụ sản phẩm nằm trên cơ sở dữ liệu Sản phẩm do người bán buôn cung cấp mỗi tháng. Chúng tôi xây dựng một mô hình miền và ngồi trên cơ sở dữ liệu với Hibernate hoặc whatvever, implentation wise Sản phẩm là một đồ thị đối tượng lớn cung cấp thông tin được cung cấp bởi người bán buôn về sản phẩm.
Bây giờ, giả sử dịch vụ Đánh giá, Dịch vụ giá, Dịch vụ giao hàng và Dịch vụ chứng khoán sẽ đăng ký ProductUpdated, ProductAdded, ProductDeleted. Vấn đề là mỗi dịch vụ chỉ cần một phần hoặc một số phần của thông tin về Sản phẩm. Vận chuyển có thể chỉ cần kích thước và trọng lượng. Giá cả chỉ có thể cần id sản phẩm, chi phí bán buôn, giảm âm lượng, giá có hiệu lực cho đến nay. Đánh giá có thể cần id sản phẩm, tên sản phẩm, nhà sản xuất. Có phải là thực hành tiêu chuẩn chỉ để xuất bản toàn bộ Sản phẩm (hợp đồng thuê bao không phù hợp cụ thể như ProductUpdated và lược đồ phù hợp - đại diện cho tất cả đồ thị đối tượng sản phẩm) và cho phép người đăng ký bản đồ bất cứ thứ gì họ cần cho mô hình miền của họ (hoặc quái làm những gì họ muốn với, có thể thậm chí không có một mô hình tên miền) ...
Hoặc khi tôi viết những dòng này tôi nghĩ có lẽ:
sản phẩm Dịch vụ Xuất bản ProductAdded nhắn (không bao gồm chi tiết sản phẩm chỉ là một ID của sản phẩm và có thể là dấu thời gian)
Giá dịch vụ su bscribes để ProductAdded và xuất bản RequestPricingForProduct nhắn
Sản phẩm Dịch vụ Xuất bản ResultForPricingForProduct nhắn
Hmm .. dường như tốt hơn một chút ... nhưng nó cảm thấy như tôi đang xây dựng hợp đồng cho dịch vụ sản phẩm dựa trên những gì các dịch vụ khác tôi có thể xác định và những gì họ sẽ cần, có lẽ trong tương lai Dịch vụ XYZ đòi hỏi một cái gì đó khác nhau. Im sẽ dừng lại ở đó vì tôi nghĩ rằng nó trở nên rõ ràng hơn, nơi tôi đang bối rối ... có lẽ ở trên sẽ làm việc bởi vì tôi nên vạch trần một cách để trả lại bất cứ điều gì mà nên được công chúng hmmm ngay.
Bất kỳ nhận xét hoặc hướng nào được đánh giá cao. Xin lỗi nếu điều này xuất hiện nửa nướng.