Rozpoczynam projekt i zmagam się z architekturą dla naszej warstwy dostępu do danych. Zasadniczo będzie musiał interfejs z wieloma backendami z różnymi projektami baz danych.Warstwa dostępu do danych z wieloma serwerami zapleczowymi i różnymi projektami baz danych
Chciałbym wspólny DAL, który następnie wykonuje wspólną funkcję w dowolnym backend. Backendy mają unikalny kod do wstawiania, aktualizowania itp. Zatem dodawanie pracownika w 1 zapleczu będzie miało inny kod w innym.
Próbowałem wzorca repozytorium, ale to po prostu nie dotyczy sytuacji. Skończyłem z metodą Factory, ale ostatecznie utworzę Factory dla każdego obiektu. Mógłbym może tworzyć tylko 1 fabrykę, ale wówczas obiekt Backend musiałby setki funkcji jak „SaveEmployee”, „SavePlan” itp
Teraz mam następujące:
DAL
--> DAL.Backend1
--> Employee.Save(employee)
--> Plan.Save(plan)
--> DAL.Backend2
--> Employee.Save(employee)
--> Plan.Save(plan)
w projekcie DAL Posiadam wzór Fabryki dla każdego Obiektu, Pracownika, Planu, aby zdecydować, do którego obiektu DAL powrócić i wykonać przeciwko niemu.
Jestem pewien, że nie jest to najlepsza architektura do tego, więc zastanawiam się, czy istnieje lepszy wzór do rozwiązania mojego problemu.
Mniej idące całkowicie dynamicznie i dynamicznie budujące oświadczenia CRUD, będziesz musiał mieć gdzieś konkretną funkcjonalność. Jeśli nie chcesz tego w bazie danych, myślę, że trasa, którą odszedłeś, jest najlepszą drogą. –
Zazwyczaj mam skłonność do złożonego wzoru. – Malk
Zdefiniuj "różne projekty baz danych". Masz na myśli - jeden to SQL, jeden XML, jeden NoSql? Czy możemy mówić o różnych relacyjnych bazach danych? – TomTom