2009-12-09 16 views
6

Cercare di raccogliere alcune opinioni su come una applicazione web (o eventualmente una serie di applicazioni web) dovrebbe essere divisa (per il progetto) ... fondamentalmente l'intera cosa sarà una sito grande, ma il problema sorge perché ha una varietà di moduli che hanno ciascuno i propri cicli di sviluppo/rilascio.Rompere una web application asp.net

Il problema che si pone è che dividendoli diventa un mal di testa con il tentativo di rendere la condivisione sessioni tra i siti e incorporare le risorse condivise nella DLL, ma il loro mantenimento come un unico grande progetto è un incubo dal punto di vista fonte di controllo.

I possibili modi per fare questo che mi viene in mente sono:

  1. Avere una sola applicazione e il ramo come un matto per il lavoro di ogni modulo: Su base stile fondamentale questo sembra giusto, ma sarebbe un sacco di rami e la fusione rami di nuovo in tutto il tempo sarebbe un incubo ...
  2. renderli tutte le applicazioni separate: lo svantaggio è che tutti condividono le loro pagine master e un sacco di controlli personalizzati (implementato in ascx). So come inserirli in una DLL (utilizzando provider di percorsi virtuali), ma è una soluzione abbastanza disordinata. Oltre a ciò, passa la sessione avanti e indietro tra le applicazioni essenzialmente costruendo una soluzione di sessione homebrew ...

Un'altra cosa che ho cercato di scoprire se potevo fare ma che ho fallito era in qualche modo avere un " cartella virtuale "di sorta nel csproj in modo che ad esempio la cartella" ModuleA "effettivamente mappata a" ../../../ModuleA/Trunk/ ". Sono relativamente convinto che questo non può essere fatto senza l'utilizzo di alcuni script pre-compilazione, ma speravo in qualcosa che potesse essere caricato in modo appropriato in Visual Studio, quindi penso che questa idea sia un no-go ...

Qualcuno ha qualche consiglio su quale modo dovrei andare con questo (se è uno dei precedenti o qualcosa che non ho considerato)? Voglio assicurarmi di non spararmi ai piedi qui perché è probabile che sia un progetto a lungo termine con molti miglioramenti/manutenzione futuri ...

risposta

3

L'ho fatto in uno dei nostri progetti. Ci sono sicuramente alcuni problemi che abbiamo dovuto affrontare durante lo sviluppo, ma vale sicuramente la pena di separare il progetto in dll separata per la manutenibilità

Come suggerito anche per il fornitore di percorsi virtuali, sto avendo un certo collegamento per lo stesso che potrebbe esserti d'aiuto. Anche per passare i dati tra due moduli abbiamo creato proprietà nell'interfaccia e creato un progetto separato per l'interfaccia e tutti i moduli implementano quell'interfaccia, così possiamo passare i valori da un modulo a un altro modulo.

Inoltre, è sempre consigliabile se si sta costruendo un'applicazione modulare, quindi dovrebbe essere indipendente l'uno dall'altro, ma alla fine dipende dalle vostre esigenze.

Link1

UC From Database

Alcuni collegamenti per la condivisione sessione tra App (non vorrei suggerire di condividere la sessione, ma ancora se si vuole si può passare attraverso questo articolo)

ASP .Net Forum

Using State Server

StackOverflow

+0

Il tuo punto di vista sembra più o meno allineato con le conclusioni a cui sono arrivato quando ho cercato di capire come sistemarlo. Sono d'accordo sul fatto che condividere direttamente la sessione come descritto in alcuni di questi link è un trucco sporco, tanto che scriverò il mio controller di sessione prima di implementare tali soluzioni. Per quanto basta a rendere i moduli abbastanza modulari da non condividere dati, ogni modulo è separato al 100% da qualsiasi altro modulo, ma sono abbastanza intrinsecamente legati a un'applicazione centrale che verrà eseguita nel webroot (che è fondamentalmente solo un framework i moduli si collegano in). – fyjham

+0

PS: Non accetterò ancora questo - vorrebbe dargli un po 'più di tempo per vedere se qualcuno ha un'opinione/approccio alternativo. Se nessun altro rintocca entro un giorno o due, probabilmente accetterò questo. – fyjham

0

Se stai costruendo un progetto non sono sicuro che sia una buona idea usare asp.net 2.0, a causa dei problemi che hai. A un certo punto del mio progetto ho spostato questi controlli ascx per separare il 'progetto della libreria di controlli' che mi fa solo stringhe html che poi inserisco da qualche parte nel sito web. Come usare la sintassi <% = fControl%> all'interno delle pagine di aspx che riempio con quel codice. Soluzione non elegante, ma ha reso le cose molto più facili. Ad ogni modo abbiamo deciso di reimplementare il progetto in php, dato che è più economico e non crea problemi di questo tipo.

+0

Ehi, ho già fatto funzionare ASCX da dll in esecuzione come al solito (solo la cosa strana è il percorso sorgente per l'ascx, ma anche quello va bene). Inoltre stiamo usando asp.net 3.5, che è praticamente incastonato come una società che è ciò che le persone conoscono e riqualificare l'intera azienda per questo progetto non è esattamente fattibile. – fyjham

Problemi correlati