867 votes

Site Web ASP.NET ou Application Web ASP.NET?

Lorsque je démarre un nouveau projet ASP.NET dans Visual Studio, je peux créer une application Web ASP.NET et de nouveaux sites Web ASP.NET dans Visual Studio crée un nouveau site Web.

Quelle est la différence entre ces deux sites Web ASP.NET Web et ASP.NET? Pourquoi devrais-je choisir un sur l'autre?

Si j'utilise Visual Studio 2005 au lieu de Visual Studio 2008 ou Visual Studio 2010, la réponse est-elle différente?

564voto

Andreas Grech Points 39188

Site web:

Le Site Web du projet est compilé à la volée. Vous vous retrouvez avec beaucoup plus de fichiers DLL, ce qui peut être une douleur. Il a également donne des problèmes lorsque vous avez des pages ou des contrôles dans un répertoire besoin de faire référence à des pages et des contrôles dans un autre répertoire depuis l'autre répertoire ne peut pas être compilé en code encore. Un autre problème peut être dans la publication.

Si Visual Studio n'est pas dit de ré-utiliser les mêmes noms constamment, il sera à venir avec de nouveaux noms pour les fichiers DLL généré par pages tous les temps. Qui peut conduire à avoir près de plusieurs copies de fichiers DLL contenant le même nom de classe, ce qui va générer beaucoup d'erreurs. Le projet de Site Web a été introduit avec Visual Studio 2005, mais il est avéré ne pas être extrêmement populaire.

Application Web:

L' Application Web Projet a été conçu comme un complément et existe maintenant dans le cadre du service pack 1 de Visual Studio 2005. Les principales différences sont le Projet d'Application Web a été conçu pour fonctionner comme le Web des projets livrés avec Visual Studio 2003. Compiler l'application en un seul fichier DLL à construire temps. Afin de mettre à jour le projet, il doit être recompilé et le fichier DLL publié pour que les changements se produisent.

Une autre fonctionnalité intéressante de l'Application Web projet est il est beaucoup easer pour exclure des fichiers de la vue projet. Dans le Projet de Site Web, chaque fichier que vous excluez est renommé avec une exclure mot clé dans le nom de fichier. Dans le Projet d'Application Web, le projet vient de conserve la trace des fichiers à inclure/exclure de la vue projet, sans les renommant, de rendre les choses beaucoup tider.

Référence: http://www.megasolutions.net/AspNet/difference-between-Web-Site-and-Web-Application-Project-27210.aspx

L'article ASP.NET 2.0 - Site Web vs projet d'Application Web donne également les raisons justifiant l'utilisation de l'un et pas l'autre. Voici un extrait:

  • Vous avez besoin de migrer grande Visual Studio .NET 2003 à VS En 2005? utiliser le projet d'Application Web.
  • Vous voulez ouvrir et modifier n'importe quel répertoire comme un projet Web sans la création d'un fichier de projet? l'utilisation du Site Web projet.
  • Vous avez besoin d'ajouter de pré-construction et de la post-construire les étapes lors de la compilation? l'utilisation de l'Application Web du projet.
  • Vous avez besoin de créer une application Web à l'aide de plusieurs Web les projets? l'utilisation de l'Application Web du projet.
  • Vous souhaitez générer un assembly pour chaque page? l'utilisation du Site Web du projet.
  • Vous préférez la compilation dynamique et de travailler sur des pages sans la construction d' site complet sur chaque affichage de la page? utiliser Web Projet de Site.
  • Vous préférez une seule page modèle de code de modèle code-behind? l'utilisation du Site Web projet.

Les Projets d'Application Web et Projets de Site Web (en anglais) explique les différences entre le site web et projets d'application web. Aussi, il traite de la configuration à être effectué dans Visual Studio.

168voto

Max Toro Points 13050

Le Site Web est ce que vous déployez pour un ASP.NET serveur web (IIS. Juste un tas de fichiers et de dossiers. Il n'y a rien dans un Site Web qui vous lie à Visual Studio (il n'y a pas de fichier de projet). La génération de Code et la compilation de pages web (tels que .aspx, .ascx, .maître) est fait dynamiquement à l'exécution, et les modifications apportées à ces fichiers sont détectés par le cadre et automatiquement re-compilé. Vous pouvez mettre le code que vous souhaitez partager entre les pages spéciales le dossier App_Code, ou vous pouvez pré-compiler et de mettre de l'assemblée dans le dossier Bin.

Une Application Web est un particulier de projet Visual Studio. La principale différence avec les Sites Web, c'est que lorsque vous générez le projet, tous les fichiers de code compilé dans une seule assemblée, qui est placée dans le répertoire bin. Vous n'avez pas de déployer le code des fichiers vers le serveur web. Au lieu d'avoir un dossier spécial pour le partage de fichiers de code, vous pouvez les mettre n'importe où, tout comme vous le feriez dans la bibliothèque de la classe. Parce que les Applications Web contient des fichiers qui ne sont pas destinés à être déployées, telles que le projet et les fichiers de code, il y a un Publier de commande de Visual Studio pour la sortie d'un Site Web à un emplacement spécifié.

App_Code vs Bin

Le déploiement de code partagé des fichiers est généralement une mauvaise idée, mais cela ne signifie pas que vous devez choisir l'Application Web. Vous pouvez avoir un Site Web qui fait référence à un projet de bibliothèque de classes qui contient tout le code pour le Site Web. Les Applications Web est juste un moyen pratique de le faire.

Le code-behind

Cette rubrique est spécifique .aspx et .fichiers ascx. Cette rubrique est de moins en moins pertinente dans les nouvelles structures d'application telles que ASP.NET MVC et ASP.NET les Pages Web qui n'utilisent pas le code-behind de fichiers.

En ayant tous les fichiers de code compilé dans une seule assemblée, y compris le code-behind de fichiers .pages aspx et .ascx des contrôles, dans les Applications Web que vous avez à re-construire pour chaque petit changement, et vous ne pouvez pas faire vivre des changements. Cela peut être une vraie douleur au cours du développement, depuis que vous avez à garder re-bâtiment pour voir les changements, tandis que les Sites Web des changements sont détectés par le moteur d'exécution et des pages/les contrôles sont automatiquement recompilés.

Avoir le moteur d'exécution de gérer le codebehind assemblées est moins de travail pour vous, puisque vous n'avez pas besoin de s'inquiéter à propos de donner pages/contrôles des noms uniques, ou en organisant des espaces de noms différents.

Je ne dis pas que le déploiement de fichiers de code est toujours une bonne idée (surtout pas dans le cas de partage de fichiers de code), mais le code-behind fichiers ne doivent contenir du code que de l'INTERFACE utilisateur d'effectuer des tâches spécifiques, le fil des événements de gestionnaires, etc. Votre application doit être en couches de sorte que le code important finissent toujours dans le dossier Bin. Si c'est le cas, alors le déploiement de code-behind de fichiers ne devraient pas être considérées comme néfastes.

Une autre limitation des Applications Web est que vous pouvez utiliser uniquement la langue du projet. Dans les Sites Web vous pourrez avoir des pages en C#, certains en VB, etc. Pas de besoin particulier support Visual Studio. C'est la beauté de la construction fournisseur de l'extensibilité.

Aussi, dans les Applications Web, vous n'obtenez pas de détection d'erreur dans les pages/contrôles que le compilateur ne compile le code-behind de classes et non pas le code de balisage (MVC, vous pouvez résoudre ce problème à l'aide de la MvcBuildViews option), qui est établie au moment de l'exécution.

Visual Studio

Parce que les Applications Web sont des projets Visual Studio, vous obtenez quelques fonctionnalités ne sont pas disponibles dans les Sites Web. Par exemple, vous pouvez utiliser les événements de construction pour effectuer une variété de tâches, par exemple, minifier et/ou combiner des fichiers Javascript.

Une autre fonctionnalité intéressante introduite dans Visual Studio 2010 est Web.config de transformation. Ce n'est également pas disponible dans les Sites Web. Fonctionne maintenant avec les Sites Web de VS 2013.

Création d'une Application Web est plus rapide que la construction d'un Site Web, spécialement pour les grands sites. C'est principalement parce que les Applications Web ne sont pas compiler le code de balisage. Dans MVC si vous définissez MvcBuildViews est vraie, alors il compile le code de balisage et vous obtenez l'erreur de détection, ce qui est très utile. L'inconvénient est que chaque fois que vous créez la solution, il crée le site complet, qui peut être lent et inefficace, spécialement si vous ne modifiez pas le site. l me retrouve à tourner MvcBuildViews sur et en dehors (ce qui nécessite un projet de déchargement). D'autre part, des Sites Web, vous pouvez choisir si vous voulez construire le site en tant que partie de la solution ou pas. Si vous choisissez de ne pas, puis de la création de la solution est très rapide, et vous pouvez toujours cliquer sur le nœud Site Web et sélectionnez " Build, si vous avez effectué des modifications.

Dans une Application Web MVC projet vous avez des commandes et boîtes de dialogue pour les tâches courantes, comme "Add View", "Aller À la Vue", "Ajouter un Contrôleur", etc. Ces ne sont pas disponibles dans un MVC Site Web.

Si vous utilisez IIS Express en tant que serveur de développement, dans les Sites Web que vous pouvez ajouter des répertoires virtuels. Cette option n'est pas disponible dans les Applications Web.

Package NuGet de Restauration ne fonctionne pas sur les Sites Web, vous devez installer manuellement les paquets indiqués sur les emballages.config Paquet de Restauration fonctionne maintenant avec les Sites Web de départ NuGet 2.7

75voto

Ian Ringrose Points 19115

Site Web = utiliser lorsque le site web est créé par les graphistes et les programmeurs modifie uniquement 1 ou 2 pages

Application Web = utiliser lors de la création de l'application par les programmeurs et les graphistes n'éditer que 1 ou deux paginé/images.

Les Sites Web peuvent être travaillés à l'aide de n'importe quel code HTML outils sans avoir developer studio, comme les fichiers de projet n'ont pas besoin d'être mis à jour etc. Les Applications Web sont meilleures lorsque l'équipe est principalement à l'aide de developer studio et il y a un haut contenu du code.

(Quelques erreurs de codage sont trouvés dans des Applications Web au moment de la compilation qui ne sont pas trouvés dans les Sites Web jusqu'à l'exécution.)

40voto

ninj Points 561

Sauf si vous avez un besoin spécifique pour un compilé dynamiquement projet, n'utilisez pas un projet de site web.

Pourquoi? Parce que projet de site web va vous conduire jusqu'au mur lorsque vous essayez de modifier ou de comprendre votre projet. Le typage statique trouver des caractéristiques (par exemple, trouver des usages, refactor) dans Visual Studio va tous prendre une éternité à toute taille raisonnable projet. Pour de plus amples informations, consultez le Dépassement de Pile question Lent "Rechercher Toutes les Références" dans Visual Studio.

Vraiment, je ne vois pas pourquoi ils ont abandonné les applications web dans Visual Studio 2005 pour la douleur induisant, la santé mentale-le drainage, la productivité de l'escarboucle site web type de projet.

24voto

Daniel Auger Points 8459

Cela peut sembler un peu évident, mais je pense que c'est quelque chose qui est mal compris parce que Visual Studio 2005 livrés avec le site web de l'origine. Si votre projet concerne un site web qui est assez limité et n'a pas beaucoup de logique ou physique de séparation, le site est très bien. Toutefois, si c'est vraiment une application web avec différents modules où de nombreux utilisateurs d'ajouter et de mettre à jour des données, vous êtes mieux avec l'application web.

Le plus grand pro du site web modèle est que rien dans l' app_code section est compilé dynamiquement. Vous pouvez faire C# fichier de mises à jour sans un redéploiement complet. Toutefois, cela vient à un grand sacrifice. Beaucoup de choses se produisent sous les couvertures qui sont difficiles à contrôler. Les espaces de noms sont difficiles à contrôler et DLL spécifique de l'utilisation de la fenêtre par défaut pour quoi que ce soit en vertu de l' app_code depuis le tout est compilé dynamiquement.

L'application web modèle ne dispose pas de la compilation dynamique, mais vous gagnez le contrôle sur les choses que j'ai mentionnées.

Si vous faites de la n-tier de développement, je vous recommande fortement de l'application web de modèle. Si vous faites une limitée ou d'un site web rapide et sale de la mise en œuvre, le modèle site web peut avoir des avantages.

Une analyse plus détaillée peut être trouvée dans:

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X