Question 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 ou je peux créer un site Web ASP.NET.

Quelle est la différence entre une application Web ASP.NET et un site Web ASP.NET? Pourquoi devrais-je choisir un sur l'autre?

La réponse est-elle différente selon la version de Visual Studio que j'utilise?


777
2017-12-29 16:24


origine


Réponses:


Site Internet:

le Site Internet le projet est compilé à la volée. Vous vous retrouvez avec beaucoup plus de fichiers DLL, ce qui peut être pénible. Cela pose également des problèmes lorsque vous avez des pages ou des contrôles dans un répertoire qui doivent référencer des pages et des contrôles dans un autre répertoire, car l'autre répertoire n'est peut-être pas encore compilé dans le code. Un autre problème peut être dans la publication.

Si Visual Studio n'est pas dit de réutiliser les mêmes noms en permanence, il trouvera de nouveaux noms pour les fichiers DLL générés par les pages tout le temps. Cela peut conduire à avoir plusieurs copies proches de fichiers DLL contenant le même nom de classe, ce qui générera beaucoup d'erreurs. Le projet de site Web a été introduit avec Visual Studio 2005, mais il s'est avéré ne pas être extrêmement populaire.

Application Web:

le Application Web Le projet a été créé en tant que complément et existe maintenant en tant que partie de SP 1 pour Visual Studio 2005. Les principales différences sont le projet d'application Web a été conçu pour fonctionner de manière similaire aux projets Web livrés avec Visual Studio 2003. Il compilera l'application dans un seul fichier DLL lors de la construction. temps. Afin de mettre à jour le projet, il doit être recompilé et le fichier DLL publié pour que les changements se produisent.

Une autre belle fonctionnalité de l'application Web projet est qu'il est beaucoup plus facile d'exclure des fichiers de la vue du projet. dans le Projet de site Web, chaque fichier que vous excluez est renommé avec un fichier exclu mot-clé dans le nom de fichier. Dans le projet d'application Web, le projet garde trace des fichiers à inclure / exclure de la vue du projet sans les renommer, rendant les choses beaucoup plus ordonnées.

Référence

L'article ASP.NET 2.0 - Projet de site Web par rapport à Web Application donne également des raisons sur pourquoi utiliser l'un et pas l'autre. Voici un extrait de celui-ci:

  • Vous devez migrer de grandes applications Visual Studio .NET 2003 vers VS   2005? utilisez le projet d'application Web.
  • Vous voulez ouvrir et éditer n'importe quel répertoire en tant que projet Web sans   créer un fichier de projet? utiliser le site Web   projet.
  • Vous devez ajouter des étapes de pré-construction et de post-construction lors de la compilation?    utiliser le projet d'application Web.
  • Vous devez créer une application Web à l'aide de plusieurs sites Web   projets? utiliser le projet d'application Web.
  • Vous voulez générer un assemblage pour chaque page? utiliser le projet de site Web. 
  • Vous préférez la compilation dynamique et travaillez sur des pages sans construire   site entier sur chaque page vue? utiliser le Web   Projet de site. 
  • Vous préférez un modèle de code à une seule page au modèle code-behind? utiliser le site Web   projet.

Projets d'application Web et projets de site Web(MSDN) explique les différences entre le site Web et les projets d'application Web. En outre, il traite de la configuration à effectuer dans Visual Studio.


507
2018-03-09 19:16



Site Internet est ce que vous déployez sur un serveur Web ASP.NET tel que 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). Génération de code et compilation de pages Web (telles que .aspx, .ascx, .master) dynamiquement à l'exécutionet les modifications apportées à ces fichiers sont détectées par le framework et automatiquement recompilées. Vous pouvez mettre le code que vous voulez partager entre les pages dans le dossier App_Code spécial, ou vous pouvez le pré-compiler et placer l'assembly dans le dossier Bin.

Application Web est un projet spécial Visual Studio. La principale différence avec les sites Web est que lorsque vous générez le projet, tous les fichiers de code sont compilés dans un seul assembly, qui est placé dans le répertoire bin. Vous ne déployez pas de fichiers de code sur le serveur Web. Au lieu d'avoir un dossier spécial pour les fichiers de code partagés, vous pouvez les placer n'importe où, comme vous le feriez dans la bibliothèque de classes. Étant donné que les applications Web contiennent des fichiers qui ne sont pas destinés à être déployés, tels que les fichiers de projet et de code, il existe Publier commande dans Visual Studio pour générer un site Web à un emplacement spécifié.

App_Code vs Bin

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

CodeBehind

Cette rubrique est spécifique aux fichiers .aspx et .ascx. Cette rubrique est de plus en plus pertinente dans les nouveaux cadres d'application tels que ASP.NET MVC et les pages Web ASP.NET qui n'utilisent pas les fichiers codebehind.

En faisant en sorte que tous les fichiers de code soient compilés en un seul assemblage, y compris codebehind fichiers de pages .aspx et les contrôles .ascx, dans les applications Web, vous devez recréer pour chaque petite modification, et vous ne pouvez pas apporter de modifications en direct. Cela peut être très pénible pendant le développement, car vous devez continuer à reconstruire pour voir les changements, tandis qu'avec les sites Web, les modifications sont détectées par le moteur d'exécution et les pages / contrôles sont automatiquement recompilés.

Le fait que le runtime gère les assemblages codebehind est moins de travail pour vous, car vous n'avez pas besoin de vous soucier de donner des noms uniques aux pages / contrôles, ou de les organiser dans des espaces de noms différents.

Je ne dis pas que le déploiement de fichiers de code est toujours une bonne idée (spécialement dans le cas de fichiers de code partagés), mais les fichiers codebehind ne doivent contenir que du code qui exécute des tâches spécifiques, des gestionnaires d'événements, etc. en couches afin que le code important finisse toujours dans le dossier Bin. Si tel est le cas, le déploiement de fichiers codebehind ne devrait pas être considéré comme dangereux.

Une autre limitation des applications Web est que vous ne pouvez utiliser que la langue du projet. Dans les sites Web, vous pouvez avoir quelques pages en C #, certaines en VB, etc. Pas besoin de support Visual Studio spécial. C'est la beauté de l'extensibilité du fournisseur de build.

En outre, dans les applications Web, la détection des erreurs ne se fait pas dans les pages / contrôles, car le compilateur compile uniquement vos classes codebehind et non le code de balisage (dans MVC, vous pouvez le corriger à l'aide de l'option MvcBuildViews).

Visual Studio

Étant donné que les applications Web sont des projets Visual Studio, certaines fonctionnalités ne sont pas disponibles sur les sites Web. Par exemple, vous pouvez utiliser des événements de construction pour effectuer une variété de tâches, par ex. réduire et / ou combiner les fichiers Javascript.

Une autre fonctionnalité intéressante introduite dans Visual Studio 2010 est Transformation Web.config. Ceci n'est pas non plus disponible sur les sites Web. Travaille maintenant avec les sites Web dans VS 2013.

Construire une application Web est plus rapide que la construction d'un site Web, spécialement pour les grands sites. Ceci est principalement dû au fait que les applications Web ne compilent pas le code de balisage. Dans MVC si vous définissez MvcBuildViews à true, il compile le code de balisage et vous obtenez la détection d'erreur, ce qui est très utile. L'inconvénient est que chaque fois que vous construisez la solution, il construit le site complet, ce qui peut être lent et inefficace, surtout si vous ne modifiez pas le site. Je me retrouve à activer et désactiver MvcBuildViews (ce qui nécessite un déchargement de projet). D'un autre côté, avec les sites Web, vous pouvez choisir si vous voulez construire le site dans le cadre de la solution ou non. Si vous choisissez de ne pas le faire, la création de la solution est très rapide et vous pouvez toujours cliquer sur le nœud Site Web et sélectionner Générer, si vous avez apporté des modifications.

Dans un projet d'application Web MVC, vous disposez de commandes et de boîtes de dialogue supplémentaires pour les tâches courantes, telles que "Ajouter une vue", "Afficher", "Ajouter un contrôleur", etc. Ces sites ne sont pas disponibles sur un site Web MVC.

Si vous utilisez IIS Express comme serveur de développement, vous pouvez ajouter des répertoires virtuels dans les sites Web. Cette option n'est pas disponible dans les applications Web.

NuGet Package Restore ne fonctionne pas sur les sites Web, vous devez installer manuellement les paquets listés sur packages.config La restauration de paquet fonctionne maintenant avec des sites Web à partir de NuGet 2.7


153
2018-03-04 14:19



Site Internet = utiliser lorsque le site web est créé par des graphistes et que les programmeurs n'éditent qu'une ou deux pages

Application Web = utiliser lorsque l'application est créée par des programmeurs et que les graphistes n'éditent qu'une ou deux images / pages paginées.

Les sites Web peuvent être travaillés en utilisant des outils HTML sans avoir de studio de développement, car les fichiers de projet n'ont pas besoin d'être mis à jour, etc. Les applications Web sont meilleures quand l'équipe utilise principalement studio de développement et qu'il y a beaucoup de code.

(Certaines erreurs de codage se trouvent dans les applications Web au moment de la compilation et ne se trouvent pas dans les sites Web avant l'exécution.)

Attention:  J'ai écrit cette réponse il y a plusieurs années et je n'ai pas utilisé Asp.net depuis. Je m'attends à ce que les choses aient évolué.


69
2017-07-15 20:15



Sauf si vous avez un besoin spécifique pour un projet compilé dynamiquement, ne pas utiliser un projet de site web.

Pourquoi? Parce que le projet de site Web vous conduira vers le haut du mur en essayant de changer ou de comprendre votre projet. Les fonctionnalités de recherche de typage statique (par exemple, trouver des utilisations, refactoriser) dans Visual Studio prendront une éternité sur tout projet de taille raisonnable. Pour plus d'informations, consultez la question Stack Overflow Lent "Trouver toutes les références" dans Visual Studio.

Je ne vois vraiment pas pourquoi ils ont abandonné des applications Web dans Visual Studio 2005 pour le type de projet de site Web de carbuncle induisant la douleur, la santé mentale et la productivité.


37
2018-01-24 12:16



Il y a un article dans MSDN qui décrit les différences:

Comparaison de projets de sites Web et de projets d'application Web

BTW: il y a des questions similaires sur ce sujet, par exemple:


26
2017-12-29 17:23



Cela peut sembler un peu évident, mais je pense que c'est quelque chose qui est mal compris parce que Visual Studio 2005 est seulement livré avec le site Web à l'origine. Si votre projet porte sur un site Web assez limité et qui ne comporte pas beaucoup de séparation logique ou physique, le site Web est parfait. Cependant, s'il s'agit vraiment d'une application Web avec différents modules où de nombreux utilisateurs ajoutent et mettent à jour des données, il vaut mieux utiliser l'application Web.

Le plus grand pro du modèle de site Web est que quelque chose dans le app_code section est compilée dynamiquement. Vous pouvez effectuer des mises à jour de fichiers C # sans redéploiement complet. Cependant, cela vient à un grand sacrifice. Beaucoup de choses se passent sous des couvertures difficiles à contrôler. Les espaces de noms sont difficiles à contrôler et l'utilisation spécifique de la DLL sort de la fenêtre par défaut pour tout ce qui est sous app_code puisque tout est compilé dynamiquement.

Le modèle d'application Web n'a pas de compilation dynamique, mais vous prenez le contrôle des choses que j'ai mentionnées.

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

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


19
2017-07-07 11:56



De l'examen MCTS auto-entraîné kit de formation examen 70-515:

Avec une application web (projet),

  1. Vous pouvez créer une application MVC.
  2. Visual Studio stocke la liste des fichiers dans un fichier de projet (.csproj ou .vbproj), plutôt que de s'appuyer sur la structure de dossiers.
  3. Vous ne pouvez pas mélanger Visual Basic et C #.
  4. Vous ne pouvez pas modifier le code sans arrêter une session de débogage.
  5. Vous pouvez établir des dépendances entre plusieurs projets Web.
  6. Vous devez compiler l'application avant le déploiement, ce qui vous empêche de tester une page si une autre page ne compile pas.
  7. Vous n'avez pas besoin de stocker le code source sur le serveur.
  8. Vous pouvez contrôler le nom et la version de l'assembly.
  9. Vous ne pouvez pas modifier des fichiers individuels après le déploiement sans recompilation.

18
2018-01-03 13:52



Compilation  Premièrement, il y a une différence dans la compilation. Site Web n'est pas pré-compilé sur le serveur, il est compilé sur le fichier. C'est possible   un avantage parce que quand vous voulez changer quelque chose dans votre Web   Site, vous pouvez simplement télécharger un fichier spécifique à partir du serveur, le changer et   télécharger ce fichier sur le serveur et tout irait bien. En Web   Application que vous ne pouvez pas faire parce que everthing est pré-compilé et   vous vous retrouvez avec un seul DLL. Lorsque vous modifiez quelque chose dans un fichier de   votre projet, vous devez recompiler tout à nouveau. Donc si vous voulez   aimer avoir une possibilité de changer certains fichiers sur le site Web du serveur est   meilleure solution pour vous. Il permet également à de nombreux développeurs de travailler sur un   Site Internet. D'un autre côté, si vous ne voulez pas que votre code soit   disponible sur le serveur, vous devriez plutôt choisir l'application Web. Ce   option est également mieux pour Unit Testing en raison d'un fichier DLL étant   créé après la publication de votre site Web.

Project structureIl y a aussi une différence dans la structure du projet. Dans Application Web, vous avez un fichier de projet comme vous l'avez fait dans une application normale. Dans le site Web il n'y a pas de fichier de projet traditionnel, tout ce que vous avez est un fichier de solution. Toutes les références et les paramètres sont stockés dans le fichier web.config. @Page directive  Il existe un attribut différent dans la directive @Page pour le fichier qui contient la classe associée à cette page. Dans Web Application, il est standard "CodeBehind", dans le site Web, vous utilisez "CodeFile". Vous pouvez le voir dans les exemples ci-dessous:

Web Application:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs"  
Inherits="WebApplication._Default" %>  

Site Internet:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> 

Namespaces - Dans l'exemple ci-dessus, vous pouvez voir aussi une autre différence -   comment les espaces de noms sont créés. Dans l'espace de noms d'application Web est simplement un   Nom du projet. Dans le site Web, il existe un espace de nom ASP par défaut pour   pages compilées dynamiquement.

Modifier et continuer - Dans l'application Web Modifier et continuer est   disponible (pour l'activer, vous devez aller dans le menu Outils, cliquez sur Options   puis trouvez Modifier et continuer dans le débogage). Cette fonctionnalité ne fonctionne pas   dans Web Site.ASP.NET MVCIf vous voulez développer des applications web en utilisant

ASP.NET MVC (Model View Controller) la meilleure et l'option par défaut est   Application Web. Bien qu'il soit possible d'utiliser MVC dans un site Web, il est   non recommandé.

Résumé - La différence la plus importante entre l'application Web ASP.NET   et le site Web est la compilation. Donc, si vous travaillez sur un plus grand projet où   quelques personnes peuvent le modifier, il est préférable d'utiliser le site Web. Mais si vous êtes   En faisant un petit projet, vous pouvez également utiliser l'application Web.


12
2018-01-24 12:17



Cela dépend de ce que vous développez.

Un site Web axé sur le contenu aura son contenu change fréquemment et un site Web est meilleur pour cela.

Une application a tendance à stocker ses données dans une base de données et ses pages et codes changent rarement. Dans ce cas, il est préférable d'avoir une application Web où le déploiement des assemblages est beaucoup plus contrôlé et qui supporte mieux les tests unitaires.


12
2018-01-24 12:19