Onion Architecture parla della separazione dell'interfaccia utente, del servizio e dei livelli di dati. Tutti i campioni solitamente forniti per questo coinvolgono un singolo modello di distribuzione dell'applicazione. Ad esempio in .net la maggior parte dei campioni sono
  Web  - App MVC 
  Core  /  Dominio  - Libreria di classi semplice 
  Dati  - Entity Framework 
Che cosa accade se la mia applicazione ha più varianti di distribuzione? Ad esempio, risorse di Azure e SQL Server on premise. La soluzione si scompone in progetti condivisibili? Cosa succede quando parti dell'infrastruttura sono condivise?
  Host - On-Premise  - ha solo la classe Program.cs e Startup, collega tutte le dipendenze. Ha anche la logica per eseguire la migrazione / configurazione per l'infrastruttura 
  Host - Azure  - come sopra 
  Web  - Controllers, View, Models - ma la libreria di classi non è un'app 
  Core / Domain  - Non cambia 
  Infrastruttura  - SQL -  Infrastruttura  - Azure 
  Infrastruttura  - X 
Questo è il modo corretto di pensare? gli "App Hosts" dovrebbero essere il più minimali possibile e collegare tutto? Le infrastrutture devono essere separate dall'infrastruttura che stanno utilizzando o dallo stile di implementazione (On premise vs Azure)? È strano avere un livello infrastruttura che non implementa tutti i repository definiti nel livello dominio?