Я работаю над своим первым приложением Grails, которое предполагает портирование старого веб-приложения стоек. Существует много существующих функций, и, когда я перехожу к вещам, мне очень сложно решить, что нужно делать в сервисе, и что должно быть включено непосредственно в модель?Какая логика должна идти в классе домена и что нужно делать в сервисе в Grails?
Исходя из фона в основном разработки Ruby on Rails, я чувствую себя очень склонным вкладывать почти все в класс домена, к которому он относится. Но, с приложением, большим, чем тот, который я переношу, некоторые классы будут длинными тысячами и тысячами строк.
Как вы решаете, что нужно делать в домене, и что нужно делать в службе? Существуют ли какие-либо установленные передовые методы? Я немного осмотрелся, но большинство людей, похоже, признают эту проблему.
Одним из хороших способов определения методов, которые должны быть в домене, является метод, который передается классом домена в качестве единственного аргумента, а затем этот метод, вероятно, принадлежит домену. Я также хотел бы расширить ответ на @ cdeszaq и сказать, что если вы имеете дело с несколькими «экземплярами» класса домена, поместите его в службу. Например, если вы мутируете несколько экземпляров определенного класса, я бы добавил это в службу. В общем, хотя, используйте свое лучшее суждение, поговорите с вашей командой о методах, которые вы не знаете, где они. –
Оба эти очень хорошие моменты. – cdeszaq
Просто добавьте к этому, что методы обслуживания по умолчанию являются транзакционными: http://grails.org/doc/latest/guide/services.html#transactionsRollbackAndTheSession – Steve