Come organizzare al meglio più WebProjects che utilizzano una logica aziendale simile

5

Abbiamo la seguente configurazione

Current Solution:

  • Business Logic (Class Library)

  • Data Layer (Class Library containing EF,Web Services wrappers etc)

  • WebProject1

MA ora vogliamo scrivere un altro Web Project (Web Project2) che sarebbe quasi identico a WebProject1 tranne per il fatto che altererebbe le proprietà e le variabili di input per funzioni / vuoti all'interno della classe Business Logic per fornire un set diverso di dati per un altro utente completamente diverso. (Ha bisogno di essere riformulato). Pensa a Facebook come WebProject1 e Myspace come WebProject2. Stesso concetto, stesso livello aziendale quasi ma prodotti diversi del tutto.

Future Soltion

  • Business Logic (Class Library)

  • Data Layer (Class Library containing EF,Web Services wrappers etc)

  • WebProject1

  • WebProject2 (similar to WebProject1 but different authentication, different UI, different pages etc)

  • WebProject3 (possible)

Senza distruggere completamente la Business Logic (dato che ora la classe dovrebbe consentire 2 percorsi per set di variabili di input) come possiamo strutturare questo per raddoppiare aviod su qualsiasi codice?

Modifica: spiega la logica di business

WebProject1 fornisce dati basati su un filtro di database chiamato "ByCompany"

WebProject2 fornirà i dati in base a un filtro chiamato "BySite Entrambi i progetti saranno consumati da diversi segmenti di pubblico che non sapranno che l'altro sito web esiste.

Ad esempio, la possibile logica futura potrebbe includere qualcosa del tipo:

BusinessLogic.EmployeeList employeeList = new BusinessLogic.EmployeeList();

employeeList.LoadBySite("ConstructionSiteC");

employeeList.LoadByCompany("JohnDoesTractors");

Il dilemma è:

Dovremmo mantenere due librerie di classe Business Logic? Dovremmo aggiungere dei preffissi ai nomi delle classi per indicare il loro genitore WebProject corrispondente? Dovremmo creare classi di base ed ereditare se ci sono delle sostituzioni che dobbiamo fare? Dovremmo creare più logica di business basata sull'interfaccia? Dovremmo avere solo due soluzioni separate che attingono dallo stesso DAL?

I progetti diventeranno probabilmente piuttosto grandi (oltre le classi di logica aziendale 300) e vogliamo ridurre al minimo i doppi up il più possibile. Qual è il tuo metodo o suggerimento?

Grazie!

    
posta Jeremy 12.04.2011 - 12:55
fonte

1 risposta

8

except for the fact that it would alter properties and input variables to functions/voids inside the Business Logic class to provide a different set of data for another completely different user

Questo è solo un errore di progettazione. Niente di più.

Risolvi prima.

Quindi condividi la logica di business tra le due applicazioni web.

Should we maintain two Business Logic class libraries?

Mai.

Should we add preffixes to the class names to denote their corresponding WebProject parent?

No.

Should we create base classes and inherit if there are overrides we need to make?

Ecco perché è stata inventata l'ereditarietà.

Fatelo. Fai molto.

Should we create more interface based business logic?

Forse. Le interfacce possono essere appropriate se le classi della business logic sono molto diverse.

Should we just have two separate solutions that draw from the same DAL?

No. Un approccio troppo basso.

    
risposta data 12.04.2011 - 13:01
fonte

Leggi altre domande sui tag