2010-01-20 12 views
7

Sto ereditando del codice ASP.NET (sono un ragazzo del sistema operativo, non un web dev (ancora ;-)). La soluzione è stata rielaborata e ci sono più progetti (librerie e siti asp.net). A parte le librerie, ci sono due progetti asp.net (chiamati MAINSITE e SUBSITE). Solo MAINSITE viene utilizzato come sito ufficiale (come sito asp.net) e MAINSITE ha una depurazione del codice nel sito SUBSITE asp.net, ma non utilizza il sito stesso. Sto cercando di capire come pulire questo e convertire SUBSITE in una libreria.Che cosa rende un progetto ASP.NET un'applicazione o una libreria?

La mia domanda veloce è, ogni volta che eseguo il debug del MAINSITE (impostato come predefinito), esegue due processi asp.net: MAINSITE e SUBSITE. E così, per lo meno, come posso evitare questo? C'è una soluzione rapida/temporanea a questo?

La mia domanda dettagliato è questo:

Che cosa rende un sito asp.net un sito asp.net? Ad esempio, in C la differenza tra una dll e una exe potrebbe essere definita (superficialmente in ogni caso) come la presenza di una principale e potenziale informazione di esportazione per la libreria (tra le altre cose, ovviamente). Se dovessi convertire un exe in dll, potrei: 1. rimuovere il codice principale 2. assicurati che l'interfaccia pubblica sia corretta (ed esportata correttamente) 3. converti il ​​makefile per creare una dll piuttosto che un exe.

Qualcuno può indicarmi alcuni passaggi simili per asp.net a .net lib? Forse: 1. sbarazzarsi di index.aspx 2. sbarazzarsi di web.config 3. eventuali file * .cs da rimuovere? 4. Come cambio le proprietà? 5. eventuali trucchi?

Grazie mille per il vostro aiuto. Dettagli: Visual Studio 2008/.NET 3.5

+0

Per quanto riguarda la tua domanda veloce, sembra che siano configurati più progetti di avvio. Fare clic con il tasto destro su Soluzione, Proprietà e quindi selezionare un singolo progetto di avvio con MAINSITE selezionato nel menu a discesa. – jamesaharvey

risposta

3

Ci sono molti, molti componenti per far funzionare un'applicazione come un'applicazione ASP.Net. Tuttavia, in termini di reale progetto di applicazione Web, non c'è davvero molta differenza tra questo e il codice della libreria generica, tranne il fatto che gran parte del tuo codice si basa sull'esistenza del runtime HttpApplication.

Qualsiasi codice che utilizza System.Web (in particolare System.Web.UI) sarà sospetto in termini di dipendenza. Ad esempio, tutto il codice nei gestori di eventi di pagina o webcontrol (Init, Load, PreRender, ecc.) Si basa sul fatto che esiste un HttpHandler (in esecuzione in una HttpApplication) che genera questi eventi. Se si esegue lo stesso WebControl da una libreria che non si trova in un progetto ASP.Net, nulla di tutto ciò accadrà mai e il controllo sarà inutile. Tuttavia, quella stessa libreria esatta sarebbe abbastanza funzionale se eseguita nel contesto di un processo ASP.Net.

Si riduce davvero a quale processo si sta eseguendo la libreria. Nella maggior parte dei casi, i processi ASP.Net vengono generati da IIS, anche se è possibile ospitare un processo ASP.Net anche in altri tipi di programmi .

Purtroppo non esiste un semplice processo in 5 passaggi per la conversione di un progetto Web in una libreria. Ma come regola generale, webcontrols, .aspx e.ascx codebehind non ha intenzione di convertire.

Per uno sguardo più dettagliato a ciò che rende il codice in un programma ASP.Net, vedere Rick Strahl di "A Low level look at ASP.Net".

3

Se si va su "File"> "Nuovo"> "Nuovo progetto ... nell'elenco a sinistra, ti viene data la possibilità di creare un progetto "Libreria di classi". È possibile estrarre tutto il codice rilevante in uno di questi e quindi fare riferimento nella "MAINSITE".

Sarà necessario fare riferimento alla sezione "Riferimenti" del progetto MAINSITE e potrebbe essere necessario importare il progetto della libreria utilizzando la parola chiave import.

+1

Yup: probabilmente sarà molto più pulito rispetto al tentativo di convertire SUBSITE in una libreria di classi. – cwap

+2

Funzionerebbe solo se il suo "sito secondario" contiene solo classi o altri file "di codice". Cose come i file ASPX e ASCX dipendono dalla compilazione ASP.NET e probabilmente verrebbero semplicemente referenziati come una risorsa incorporata in una normale libreria di classi. –

+0

bene ha detto che la parte "sito web" di SUBSITE non è usata, solo alcuni dei file di codice ... è per questo che ho suggerito questo metodo. – Jason

Problemi correlati