Penso che questo dipenda da un progetto specifico.
Ad esempio, se i diversi domini aziendali sono totalmente indipendenti l'uno dall'altro, allora organizzerei per dominio aziendale.
Ma se esiste un codice condiviso tra i domini aziendali, o meglio, i domini aziendali sono varianti diverse della stessa base di codice, allora sembra più logico organizzare per dominio tecnico. E se usi qualsiasi tipo di linguaggio orientato agli oggetti, puoi probabilmente sottoclassare i tuoi controller, modelli, ecc. Generici nei tuoi file aziendali specifici per renderli più sottili.
Esiste anche una via di mezzo (dorata) tra i due: rimuovere il codice condiviso nel proprio dominio e usarlo in altri domini. Questo ti dà il tuo layout basato sul sentimento, ma consente il codice condiviso tra domini aziendali.
Domain1 # This domain changes bits of standard MVC code
controllers
models
views
Domain2 # this domain only modifies views, all else is standard
views
Shared # Here is the better part of code base
controllers
models
views
PS. Penso che la maggior parte dei framework si organizzi per dominio tecnico solo perché tendono ad aspettarsi di mescolare domini aziendali diversi in un singolo progetto solo se si dispone di codice condiviso e altrimenti si creerebbero progetti separati.
MODIFICARE:
Ad esempio, supponiamo che esista un'app Web che gestisce il magazzino di un'azienda. In forma generica questo potrebbe applicarsi a molte aziende, ma ognuna di esse potrebbe avere alcuni dettagli che non sono stati rispettati e proibisce loro di acquistarli. Ad esempio, uno di essi ha distribuito tablet sui carrelli elevatori e ha bisogno di una visualizzazione speciale per loro, mentre un altro vuole per organizzare gli elementi in tre livelli anziché il valore predefinito di due.
Ovviamente potresti sborsare il progetto per ognuna di queste aziende. Ma se il framework / linguaggio lo consente, è possibile utilizzare la sottoclasse o i plug-in ecc. Per personalizzare parti del progetto generico in base alle esigenze di ogni cliente e organizzarle nei layout del dominio aziendale.
Ad esempio, se un progetto generico esporta in JSON solo l'elemento stesso, Domain1 può sottoclassare il controller e far esportare anche i recenti problemi di consegna.
E se successivamente scopri che Domain1 ha un componente valido anche per Domain2, puoi estrarne una versione generica su Shared.
Come hai detto, molti framework si organizzano in base al dominio tecnico ed è quello che ho usato per ora, solo perché il mio FW di scelta lo rende più facile. Ma con un po '(o molto) di grasso per gomiti, penso di poter riscrivere i percorsi di inclusione per supportare anche il layout del dominio aziendale.