2011-01-01 15 views

Odpowiedz

12

powiedziałbym „to zależy”

Czasami może to być wystarczający, aby mapować podmioty pne do tej samej bazy danych, a czasami może mieć różne bazy danych dla Twojej BC.

IMO, e-commerce może być bardziej BC niż pełną domeną.

Spędziłem trochę za dużo czasu u całego agenta sprzedaży, w którym sprzedawali produkty spożywcze.

Więc domena była „całość sprzedaży” oraz Ograniczone konteksty było, wyposażenie, zakup, sprzedaż, fakturowanie, katalog produktów i e-commerce (może używać złego angielskiego sformułowania tutaj)

Każdy z nich BC wiedzieli o "produktach", ale wszyscy mieli odmienny pogląd na produkt.

np. Zakup może zawierać jednostkę produktu, do której dołączono informacje o dostawcy, cenę zakupu itp.

Chociaż produkt w dziedzinie e-commerce będzie modelowany z punktu widzenia klienta, to mieć informacje istotne dla klienta, który widzi w nim, ich specyficzny cenę itp

e-commerce będzie BC uzyskać informacje o produkcie z wielu źródeł; katalog produktów i sprzedaż. gdzie informacje podstawowe pochodzą z katalogu produktów, a ceny określone przez klienta pochodzą ze sprzedaży.

Więc repozytorium produkt w e-commerce BC może zrobić kontekstowe-mapowanie z drugiej BC (za pośrednictwem usług jakiejś najprawdopodobniej internecie lub WCF w moim przypadku), aby zbudować naszą jednostkę produktów e-commerce)

Osobiście modeluję to jako oddzielne złożenia, miałbym model e-commerce i model sprzedaży.

Większość informacji w moim modelu e-commerce pochodzi z zewnętrznych źródeł i nie będzie lokalnie trwała. Tylko rzeczy, takie jak koszyk na zakupy, będą lokalnie trwałe, ponieważ te obiekty są własnością modelu handlu elektronicznego.

Gdy klient spróbuje sfinalizować zakup, skonstruuję zamówienie w przedsprzedaży z koszyka, a następnie przekażę go do BC sprzedaży. Przez bezpośrednie połączenie serwisowe lub kolejkę wiadomości.

Krótko mówiąc, staram się budować moje systemy wokół konkretnego BC i tylko wchodzić w interakcje z innymi BC za pośrednictwem usług.

Wiem, że wiele osób umieszcza swoje BC w tych samych zespołach i używa wielu BC z tej samej aplikacji itp. Ale po prostu dziwne jest, dlaczego aplikacja do określonego celu powinna wiedzieć o wielu kontekstach. Wolę informować o jednym tylko kontekście, a następnie przekazywać wszelkie potrzebne dane innym aplikacjom.

6

Oczywiście zgadzam się, że to wszystko zależy, ale istnieją pewne wytyczne, które mogą/powinny być przestrzegane.Celem ograniczonych kontekstów jest, no cóż, granice. Granice, które oddzielają się od części aplikacji od innej, wprowadzając dobrze zdefiniowaną umowę (interfejs).

Mam tendencję do traktowania BC jak usługi w architekturze SOA. Dla mnie oznacza to idealnie fizycznie oddzielne aplikacje (procesy OS/witryny IIS). Binaria są również oczywiście oddzielone. Cała komunikacja pomiędzy BC jest idealnie asynchroniczna. W prawdziwym świecie jest to prawie niemożliwe, ale przynajmniej nie zezwalam na transakcje z wykorzystaniem transakcji krzyżowych, ponieważ są one czystym złem.

Nadzieję, że pomaga.

Powiązane problemy