Ten wpis jest podobny do in MVC/MVP/MVPC where do you put your business logic?, ale szukam więcej szczegółów. Kupiłem model jako miejsce, w którym powinna mieszkać większość logiki biznesowej. Jednak model, o ile rozumiem, ma wiele rzeczy wewnątrz: zarządzanie stanem aplikacji, utrwalanie danych, repozytoriami, obiektami transferu danych i prawdopodobnie innymi rzeczami.MVC/MVP/MVVM - jak organizować logikę biznesową
Mam aplikację, która ma bardzo złożone reguły biznesowe. Gdy użytkownik próbuje wykonać jedno określone działanie w widoku, istnieje około 20 różnych reguł, które muszą sprawdzić, czy dana akcja powinna być dozwolona, lub czy użytkownik musi zostać poproszony o dodatkowe informacje. Chciałbym zakodować te zasady biznesowe za pomocą jednej metody, aby wspierać testowalność i dokumentację. Czy te reguły powinny należeć do klasy repozytoriów? Może w warstwie usług nad repozytoriami? Jaka jest najlepsza praktyka, pamiętając o tym, że używam rozwiązania ORM, takiego jak Linq, do SQL, EF lub nHibernate?
Doceniam odpowiedzi, ale chcę, aby być w stanie przetestować te metody z NUnit lub innego ramach testowania i wprowadzenie zasady w bazie danych to znacznie utrudni. – Andy
Ponadto, ze złożonością tych reguł, niezwykle trudno byłoby zarządzać nimi wszystkimi w bazie danych. – Andy