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!