Temat: Budowa Frameworków
Artur Świerc:
tak, tylko w phpie przyjęło się, że model == db - błędne założenie.
Bierze się to stąd, że dotychczas PHP nie posiadało bibliotek, które by ten błąd developerom wytykały - tak jak to robi Hibernate w Javie :)
Na szczęście powstaje Doctrine 2.
Wywiązała się dyskusja o ORM 1:1 vs Modele dziedzinowe. Każde z tych podejść ma swoje zalety i wady.
Database-Driven Development (1:1) oferuje bardzo szybką developerkę, to jest praktycznie prototypowanie, lecz przypłaca niezbyt wysoką elastycznością. Migracja bazy danych może przysporzyć wiele bólu głowy.
Projektowanie dziedzinowe, czyli Domain-Driven Design, to zupełnie inna - wyższa - klasa w podejściu do tworzenia oprogramowania. Kod powstaje dosyć mozolnie i trzeba znacznie więcej czasu poświęcić, aby zobaczyć pierwsze efekty pracy. Za to powstały kod jest super-elastyczny.
Przy dobrym projekcie z właściwym podziałem warstw (z grubsza są to warstwa infrastruktury <- warstwa dziedziny <- warstwa aplikacji) i programowaniem na interfejsach (design by contract) można dowolnie podmieniać źródła danych (np. z bazy relacyjnej na dokumentową), biblioteki (np. do wysyłania maili), czy nawet całe frameworki.
W dodatku za DDD podąża cała wataha pojęć:
-Encje
-ValueObjects
-Repozytoria
-Fabryki
-Serwisy
-Agregaty
-Polityki vel Strategie
Jeżeli ktoś będzie zainteresowany tematem to polecam:
Evans Eric, "Domain-Driven Design: Tackling Complexity in the Heart of Software"
Fowler Martin i in., "Patterns of Enterprise Application Architecture"
McCarthy Tim, ".NET Domain-Driven Design with C#"
Nilsson Jimmy, "Applying Domain-Driven Design and Patterns"