Má service vrstva smysl?
- Nutelac
- Člen | 58
Má v Doctrine 2 smysl cpát mezi presenter a repository (případně DAO) ještě service vrstvu? Zatím jsem přišel na tyto výhody a nevýhody:
Výhody
- Použití na více místech
- V presenteru je méně kódu
Nevýhody
- Z presenteru nemám přístup k repository (např. find* funkce)
- Chci se vyhnout psaní metod jako jsou „findByIdOrderByName“, protože k tomu mám magické metody v repository
Řešil zde už někdo podobný problém? Díky.
Editoval Nutelac (13. 11. 2012 18:54)
- Jan Tvrdík
- Nette guru | 2595
Má service vrstva smysl?
Ano.
Z presenteru nemám přístup k repository (např. find* funkce)
Tak to je snad tvoje volba.
- Vojtěch Dobeš
- Gold Partner | 1316
Jen krátký komentář: mám dojem, že zbytečně odděluješ Doctrine od služeb, jako by ona sama službou nebyla. Sám jsem si takovým obdobím prošel – mnohem lepší oddělování je však to původní, presentační logiky od aplikační logiky.
Doctrine je služba jako jakákoliv jiná. Můžeš ji používat přímo ve vrstvě presenterů, nebo si napíšeš vlastní další služby, které mohou Doctrine využívat jako závislost. Jediné vodítko je míra znovupoužitelnosti, přehlednosti, testovatelnosti…
Každopádně sestavovat v presenteru SQL dotazy (ať už pomocí
jakéhokoliv API? od mysql_*
funkcí po objektové rozhraní
Doktríny) nemůžu doporučit :).
- David Ďurika
- Člen | 328
V praci sme riesili tiez 5 vrstvovy model, a mali sme taku myslienku ze v prezentery sa bude narabat len so Servisou (obalka nad entitou) a so ServiceListom (obalka nad Repository).
ALE! prax ukazala ze to je velmy zly prisut, teraz to mame take ze v prezentiry sa naraba normalne s Repository aj s Entitou aj s Servisou, zalezi od toho co programator potrebuje… ovela to zjednodusilo a zprehladnilo veci!
- arron
- Člen | 464
Pokud tam ta service/facade vrstva nebude, tak pak obvykle nastává problém nejenom s testovatelností,le i v případě změny chování Doctrine. Ona ta vrstva do značné míry zajišťuje odstínění Doctrine od aplikace, takže když dojde ke změně chování Doctrine, tak se to dotkne právě jenom té service vrstvy a neníj potřeba přepisovat půlku aplikace. V tom vidím zásadní výhodu :-)
- David Ďurika
- Člen | 328
arron napsal(a):
niekde som cital ze „Každý presenter má vždy jednu svou fasádu, a neměl by šahat do fasád jiných presenterů“ tak aky ma ta fasada zmysile v smysle tom co pises? ved ked sa mi zmeni doctrine ako pises tak musim prerabat fasadu a ten kto nema fasadu musi prerabat prezenter… ziadny rozdiel…
Editoval achtan (14. 11. 2012 9:16)