Confronto tra progetti di applicazione Web e progetti di sito Web in Visual Studio

In Visual Studio è possibile creare progetti di applicazione web o progetti di sito Web. Crea o si apre un progetto di applicazione web scegliere Nuovo progetto o Apri progetto nel menu di Visual Studio File. Crea o si apre un progetto di sito Web in Nuovo sito Web o Apri sito Web nel menu File.

Poiché ogni tipo di progetto comporta vantaggi e svantaggi, è utile comprenderne le differenze per selezionare quello più appropriato per le proprie esigenze. È necessario selezionare il tipo di progetto appropriato prima di creare un progetto, in quanto la conversione da un tipo di progetto all'altro non è un'attività pratica.

Nota

Per alcuni scenari, non è possibile scegliere.Ad esempio, se si desidera creare un'applicazione MVC ASP.NET, è necessario utilizzare un progetto di applicazione web.

Di seguito sono elencate le diverse sezioni di questo argomento:

  • Scenari

  • Riepilogo delle differenze

  • Struttura dei file di progetto

  • Compilazione

  • Distribuzione

Scenari

Gli scenari in cui i progetti di applicazione web costituiscono la scelta più appropriata sono inclusi i seguenti:

  • Si desidera utilizzare la funzionalità Modifica e continuazione del debugger di Visual Studio.

  • Si desidera eseguire unit test su codice contenuto in file di classe associati alle pagine ASP.NET.

  • Si desidera fare riferimento alle classi associate a pagine e controlli utente da classi autonome.

  • Si desidera stabilire dipendenze di progetto tra i progetti Web.

  • Si desidera che il compilatore crei un singolo assembly per l'intero sito.

  • Si desidera poter controllare il nome dell'assembly e il numero di versione generati per il sito.

  • Si desidera utilizzare MSBuild o Team Build per compilare il progetto. Ad esempio, è possibile aggiungere passi di postbuild e di prebuild.

  • Si desidera evitare di inserire codice sorgente in un server di produzione.

  • Si desidera utilizzare gli strumenti di distribuzione automatizzati disponibili in Visual Studio.

Tra gli scenari in cui i progetti di sito Web costituiscono la scelta più appropriata sono inclusi i seguenti:

  • Si desidera includere il codice di Visual Basic che C# in un singolo progetto Web. (Per impostazione predefinita, un'applicazione web viene compilata in base alle impostazioni della lingua nel file di progetto. È possibile effettuare eccezioni, ma è relativamente difficile.

  • Si desidera aprire il sito di produzione in Visual Studio e aggiornarlo in tempo reale tramite FTP.

  • Non si desidera dover compilare in modo esplicito il progetto per distribuirlo.

  • Se si precompila il sito, si desidera che il compilatore crei più assembly per il sito, ad esempio un assembly per pagina o per controllo utente oppure uno o più assembly per cartella.

  • Si desidera essere in grado di aggiornare singoli file in produzione semplicemente copiando le nuove versioni nel server di produzione o modificando i file direttamente nel server di produzione.

  • Se si precompila il sito, si desidera poter aggiornare le singole pagine Web ASP.NET (file ASPX) senza dover ricompilare l'intero sito.

  • Si desidera mantenere il codice sorgente nel server di produzione perché possa servire come una copia di backup aggiuntiva.

Riepilogo delle differenze

Nella tabella seguente è incluso un riepilogo delle principali differenze.

Area

Progetti di applicazione Web

Progetti di sito Web

Struttura dei file di progetto

In un file di progetto di Visual Studio (con estensione csproj o vbproj) sono archiviate informazioni sul progetto, ad esempio l'elenco di file inclusi nel progetto e qualsiasi riferimento da progetto a progetto.

Non è disponibile alcun file di progetto (con estensione csproj o vbproj). Tutti i file presenti in una struttura di cartelle vengono automaticamente inclusi nel sito.

Compilazione

  • Si compila in modo esplicito il codice sorgente nel computer utilizzato per lo sviluppo o il controllo del codice sorgente.

  • Per impostazione predefinita, la compilazione dei file di codice (esclusi i file con estensione aspx e ascx) produce un singolo assembly.

  • Il codice sorgente viene in genere compilato dinamicamente (automaticamente) da ASP.NET nel server la prima volta che viene ricevuta una richiesta dopo che il sito è stato installato o aggiornato.

    È possibile precompilare il sito (compilazione in anticipo in un computer di sviluppo o nel server).

  • Per impostazione predefinita, la compilazione produce più assembly.

Spazi dei nomi

Per impostazione predefinita, vengono aggiunti spazi dei nomi espliciti a pagine, controlli e classi.

Non vengono aggiunti spazi dei nomi espliciti a pagine, controlli e classi per impostazione predefinita, ma è possibile aggiungerli manualmente.

Distribuzione

  • Si copia l'assembly in un server. L'assembly è prodotto dalla compilazione dell'applicazione.

  • Visual Studio fornisce strumenti integrati con Distribuzione Web (lo strumento di distribuzione Web IIS) per automatizzare molte attività di distribuzione.

  • Si copiano i file di origine dell'applicazione in un computer in cui è installato IIS.

  • Se si precompila il sito in un computer di sviluppo, vengono copiati nel server IIS gli assembly prodotti dalla compilazione.

  • Visual Studio fornisce strumenti per la distribuzione, ma non automatizzano tante attività di distribuzione come gli strumenti disponibili per i progetti di applicazione web.

Struttura dei file di progetto

I progetti di applicazione Web utilizzano file di progetto di Visual Studio (con estensione csproj o vbproj) per tenere traccia delle informazioni sul progetto. Ciò consente di specificare i file inclusi in o esclusi dal progetto e pertanto i file compilati durante una compilazione.

Per i progetti di sito Web, tutti i file in una struttura di cartelle vengono automaticamente considerati essere inclusi nel sito Web. Se si desidera escludere un elemento dalla compilazione, è necessario rimuovere il file dalla cartella del progetto di sito Web o modificare l'estensione di file con un'estensione che non è compilata né gestita da IIS.

Un vantaggio di utilizzare i file di progetto in progetti di applicazione web è il seguente:

  • È facile rimuovere temporaneamente file dal sito continuando a tenerne traccia, in quanto tali file vengono mantenuti nella struttura di cartelle. Se, ad esempio, una pagina non è pronta per la distribuzione, è possibile escluderla temporaneamente dalla compilazione senza eliminarla dalla struttura di cartelle. È possibile distribuire l'assembly compilato e quindi includere nuovamente il file nel progetto. Questo aspetto è particolarmente importante se si utilizza un repository del controllo del codice sorgente.

Un vantaggio dell'utilizzo della struttura di cartelle senza file di progetto in progetti di sito Web è il seguente:

  • Non è necessario gestire la struttura del progetto esclusivamente in Visual Studio. Ad esempio, è possibile copiare i file nel progetto o eliminarli dal progetto utilizzando Esplora file.

Compilazione

Per i progetti di applicazione web, in genere si compila il progetto in Visual Studio o tramite il compilatore batch ASP.NET in un computer diverso dal server IIS di produzione. Tutti i file di classe code-behind e file di classe autonoma nel progetto vengono compilati in un singolo assembly, che viene quindi inserito nella cartella bin del progetto di applicazione web. (File con estensione aspx e ascx compilati dinamicamente in modo simile a quanto avviene per i progetti di sito Web).

Per i progetti di sito Web, non è necessario compilare manualmente il progetto. i progetti di sito Web vengono in genere compilati dinamicamente da ASP.NET (sia nel computer di sviluppo che nel server IIS di produzione). È possibile scegliere tra la modalità di compilazione batch, che produce in genere un assembly per cartella, e la modalità di compilazione fissa, che produce in genere un assembly per ogni pagina o controllo utente.

I vantaggi del modello di compilazione per i progetti di applicazione web sono inclusi i seguenti:

  • È possibile utilizzare MSBuild per creare un processo di compilazione batch personalizzato.

  • È facile specificare attributi dell'assembly come nome e versione.

  • La compilazione in anticipo fa sì che gli utenti non debbano attendere durante la compilazione del sito nel server di produzione. Se il sito è molto grande, la compilazione dinamica di un progetto di sito Web può richiedere una quantità di tempo significativa. La compilazione dinamica si verifica quando viene ricevuta una richiesta di una risorsa del sito in seguito a un aggiornamento nel sito e la richiesta che genera la compilazione può subire ritardi durante la compilazione della risorsa richiesta. Se il ritardo è inaccettabile, è possibile precompilare il sito. In questo modo, tuttavia, si perdono alcuni dei vantaggi della compilazione dinamica.

  • Si dispone del controllo completo sulla posizione dei file di codice nella struttura di cartelle del progetto e sul modo in cui le classi nel progetto fanno riferimento le une alle altre. Per la compilazione dinamica è necessario che il codice sorgente per qualsiasi classe utilizzata in tutto il sito si trovi nella cartella App_Code. Non è possibile fare riferimento alla classe di una pagina o di un controllo utente da una classe in App_Code.

Tra i vantaggi del modello di compilazione per progetti di sito Web sono inclusi i seguenti:

  • È possibile testare pagine specifiche indipendentemente dallo stato di altre pagine. Ciò è dovuto al fatto che l'esecuzione di una singola pagina non richiede la corretta compilazione dell'intero sito, ma solo della pagina e di tutti i componenti che da essa dipendono, ad esempio il codice nella cartella App_Code o il file Global.asax. (In un progetto di applicazione web, se sono presenti errori di compilazione in qualsiasi punto del sito, non è possibile creare l'assembly e pertanto non è possibile testare neanche le parti del sito compilate correttamente.)

  • È facile aggiornare un sito Web in produzione. È possibile aggiornare singoli file di codice sorgente nel server di produzione senza dover ricompilare in modo esplicito il sito. È possibile aggiornare singoli file pronti per la distribuzione anche se altri file non sono pronti a causa di errori di compilazione. È inoltre possibile aprire il sito Web nel server IIS di produzione direttamente in Visual Studio e aggiornarlo in tempo reale.

  • La precompilazione in più assembly può offrire un vantaggio in termini di prestazioni in alcuni scenari. Un esempio tipico è costituito da un sito che include molte pagine per cui è stata scritta un'elevata quantità di codice. La maggior parte delle pagine viene richiesta raramente e solo alcune vengono utilizzate di frequente. Se si compila un sito come questo in più assembly, il server di produzione può caricare solo gli assembly necessari per le richieste correnti. Se una pagina non viene richiesta, l'assembly corrispondente non viene caricato.

Nota

Non vi sono differenze in termini di prestazioni tra un progetto di sito Web e un progetto di applicazione web.Le uniche eccezioni significative sono già state descritte e riguardano in pratica solo siti di dimensioni molto grandi.La prima richiesta al sito Web potrebbe richiedere il sito di essere compilato, che può comportare un ritardo.E se il sito Web viene eseguito in un server IIS con poca memoria, incluso l'intero sito in un singolo assembly può contenere più memoria necessaria per più assembly.

Distribuzione

Per distribuire un progetto di applicazione web, copiare l'assembly creato la compilazione del progetto in un server IIS. Al contrario, distribuire un progetto di sito Web, è in genere necessario copiare i file di origine del progetto in un server IIS.

I vantaggi della strategia di distribuzione per i progetti di applicazione web sono inclusi i seguenti:

  • È possibile evitare di distribuire codice sorgente nel server IIS. In alcuni scenari, ad esempio in ambienti host condivisi, l'accesso non autorizzato al codice sorgente nel server IIS può costituire un rischio. (Per un progetto di sito Web, è possibile evitare questo rischio precompilazione in un computer di sviluppo e distribuzione di assembly generati anziché il codice sorgente. In tal caso, tuttavia, si perderanno alcuni dei vantaggi correlati alla semplicità degli aggiornamenti del sito.

  • La distribuzione comporta spesso altre attività oltre alla copia di assembly o codice in un server. Potrebbe essere necessario, ad esempio, eseguire gli script del database in produzione e modificare le stringhe di connessione nel file Web.config per un server di produzione. Visual Studio fornisce strumenti quali la pubblicazione con un clic che utilizzano i progetti di applicazione web per automatizzare molte di queste attività. Questi strumenti non sono disponibili per i progetti di sito Web.

I vantaggi della strategia di distribuzione per i progetti di sito Web sono inclusi i seguenti:

  • Se si apporta una piccola modifica a un sito Web, non è necessario ridistribuire l'intero sito. Sarà invece possibile copiare solo il file o i file modificati nel server IIS di produzione. È inoltre possibile modificare i file direttamente nel server di produzione. (Poiché i file di codice di un progetto di applicazione web vengono compilati in un singolo file di assembly, è necessario distribuire l'intero sito anche per piccole modifiche, a meno che l'unica modifica sia in un file con estensione aspx o ascx).

Vedere anche

Concetti

Mappa del contenuto per la distribuzione Web per Visual Studio e ASP.NET

Altre risorse

Progetti di applicazione Web e progetti di sito Web