2010-07-02 7 views
5

Con "verticale partizionato", voglio dire avere spazi dei nomi che prendono il nome moduli piuttosto che "strati"Come evitare la collisione tra namespace e nome classe in assembly "partizionati verticalmente"?

Quindi,

  • MyApp.Core
  • MyApp.Accounting
  • MyApp.OrderManagement
  • MyApp.HR

anziché

  • MyApp.UI
  • MyApp.Business
  • MyApp.Data

L'unico problema che sto funzionando in è che a volte queste assemblee potrebbero avere una parte dello spazio dei nomi che è lo stesso come un scrivi il nome

Diciamo che creo un modulo relativo all'account e lo denomino MyApp.Account.dll con lo spazio dei nomi di base di MyApp.Account. Inevitabilmente, ho bisogno di creare una classe denominata Account. Quindi devo usare lo spazio dei nomi o digitare alias.

Oltre ad essere molto creativo con i nomi, qualcun altro ha mai avuto esperienza nel tagliare gli assiemi e ha affrontato problemi di collisione di nomi?

+0

Posso chiedere qual è la necessità per voi di creare lo spazio dei nomi come questo? Perché non MyApp.Business.Account? – ram

+0

Stai dicendo che lo spazio dei nomi sarebbe MyApp.Business, che conterrebbe il tipo Account? Se è così, questo è un modo per gestirlo - in realtà, sto pensando di mantenere i nomi degli assembly come MyApp.Accounting, quindi namespace come MyApp.DomainObjects, in base al quale verrà creato il tipo di account. –

+0

La ragione per cui sto creando queste sezioni verticali è che ogni "modulo" può essere sviluppato e gestito separatamente. Invece di avere tutte le funzionalità in un unico assembly in "Business", avresti molti assembly contenenti qualunque "layer" necessario per supportare una singola funzione. –

risposta

9

In passato, ho affrontato questo in due modi:

1) pluralizzando gli spazi dei nomi o rendendoli gerundi, se del caso (l'aggiunta di un suffisso -ing). Ad esempio, MyApp.Orders può contenere in modo sicuro una classe Order. (Allo stesso modo, attenersi a "MyApp.Accounting" anziché a "MyApp.Account").

2) Aggiungendo Domain allo spazio dei nomi (un po 'insoddisfacente, ma efficace).