Lorsque je démarre un nouveau projet ASP.NET dans Visual Studio, je peux créer une application Web ASP.NET ou créer un site Web ASP.NET.
Quelle est la différence entre l'application Web ASP.NET et le site Web ASP.NET? Pourquoi en choisirais-je un plutôt qu'un autre?
La réponse est-elle différente selon la version de Visual Studio que j'utilise?
asp.net
.net
visual-studio
projects-and-solutions
Robert S.
la source
la source
Réponses:
Site Internet:
Le projet de site Web 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 peut ne pas encore être compilé dans le code. Un autre problème peut être lié à la publication.
Si Visual Studio n'est pas invité à réutiliser les mêmes noms en permanence, il trouvera constamment de nouveaux noms pour les fichiers DLL générés par les pages. Cela peut conduire à avoir plusieurs copies proches de fichiers DLL contenant le même nom de classe, ce qui générera de nombreuses erreurs. Le projet de site Web a été introduit avec Visual Studio 2005, mais il s'est avéré ne pas être populaire.
Application Web:
Le projet d' application Web a été créé en tant que complément et existe désormais dans le cadre du SP 1 pour Visual Studio 2005. Les principales différences sont que le projet d'application Web a été conçu pour fonctionner de manière similaire aux projets Web fournis avec Visual Studio 2003. Il compiler l'application dans un seul fichier DLL au moment de la génération. Pour mettre à jour le projet, il doit être recompilé et le fichier DLL publié pour que les modifications se produisent.
Une autre fonctionnalité intéressante du projet d'application Web 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 mot clé exclu dans le nom de fichier. Dans le projet d'application Web, le projet garde simplement la trace des fichiers à inclure / exclure de la vue du projet sans les renommer, ce qui rend les choses beaucoup plus ordonnées.
Référence
L'article ASP.NET 2.0 - Site Web vs projet d'application Web donne également des raisons pour lesquelles utiliser l'un et pas l'autre. En voici un extrait:
Projets d'application Web et projets de site Web (MSDN) explique les différences entre le site Web et les projets d'application Web. Il explique également la configuration à effectuer dans Visual Studio.
la source
Le site Web 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 relie à Visual Studio (il n'y a pas de fichier de projet). La génération de code et la compilation de pages Web (telles que .aspx, .ascx, .master) sont effectuées dynamiquement au moment de l'exécution , et les modifications apportées à ces fichiers sont détectées par le framework et recompilées automatiquement. Vous pouvez placer le code que vous souhaitez partager entre les pages dans le dossier spécial App_Code, ou vous pouvez le précompiler et placer l'assembly dans le dossier Bin.
L'application Web est un projet Visual Studio spécial. 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 en 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 des fichiers de projet et de code, il existe une commande Publier dans Visual Studio pour générer un site Web vers un emplacement spécifié.
App_Code vs Bin
Le déploiement de fichiers de code partagés est généralement une mauvaise idée, mais cela ne signifie pas que vous devez choisir une application Web. Vous pouvez avoir un site Web qui référence un projet de bibliothèque de classes qui contient tout le code du site Web. Les applications Web ne sont qu'un moyen pratique de le faire.
CodeBehind
Cette rubrique est spécifique aux fichiers .aspx et .ascx. Cette rubrique est de moins en moins pertinente dans les nouveaux cadres d'application tels que ASP.NET MVC et les pages Web ASP.NET qui n'utilisent pas de fichiers codebehind.
En ayant tous les fichiers de code compilés en un seul assembly, y compris les fichiers codebehind des pages .aspx et des contrôles .ascx, dans les applications Web, vous devez reconstruire pour chaque petite modification, et vous ne pouvez pas apporter de modifications en direct. Cela peut être très difficile pendant le développement, car vous devez continuer à reconstruire pour voir les modifications, 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.
Avoir le runtime à gérer les assemblys codebehind est moins de travail pour vous, car vous n'avez pas à vous soucier de donner aux pages / contrôles des noms uniques, ou de les organiser en différents espaces de noms.
Je ne dis pas que le déploiement de fichiers de code est toujours une bonne idée (surtout pas dans le cas de fichiers de code partagés), mais les fichiers codebehind ne doivent contenir que du code qui effectue des tâches spécifiques à l'interface utilisateur, des gestionnaires d'événements câblés, etc. Votre application doit être 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 doit 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 certaines pages en C #, certaines en VB, etc. Pas besoin de prise en charge spéciale de Visual Studio. C'est la beauté de l'extensibilité du fournisseur de build.
De plus, dans les applications Web, vous n'obtenez pas de détection d'erreur dans les pages / contrôles car le compilateur compile uniquement vos classes codebehind et non le code de balisage (dans MVC, vous pouvez résoudre ce problème en utilisant l'option MvcBuildViews), qui est compilé au moment de l'exécution.
Visual Studio
Étant donné que les applications Web sont des projets Visual Studio, certaines fonctionnalités ne sont pas disponibles dans les sites Web. Par exemple, vous pouvez utiliser des événements de génération pour effectuer une variété de tâches, par exemple réduire et / ou combiner des fichiers Javascript.
Une autre fonctionnalité intéressante introduite dans Visual Studio 2010 est la transformation Web.config .
Ce n'est pas non plus disponible sur les sites Web.Fonctionne désormais avec les sites Web dans VS 2013.La création d'une application Web est plus rapide que la création d'un site Web, spécialement pour les grands sites. Cela est principalement dû au fait que les applications Web ne compilent pas le code de balisage. Dans MVC, si vous définissez MvcBuildViews sur true, il compile le code de balisage et vous obtenez une détection d'erreur, 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, 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'autre part, avec les sites Web, vous pouvez choisir si vous souhaitez créer 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», «Aller à la vue», «Ajouter un contrôleur», etc. Elles ne sont pas disponibles sur un site Web MVC.
Si vous utilisez IIS Express comme serveur de développement, dans les sites Web, vous pouvez ajouter des répertoires virtuels. Cette option n'est pas disponible dans les applications Web.
La restauration de package NuGet ne fonctionne pas sur les sites Web, vous devez installer manuellement les packages répertoriés sur packages.configLa restauration de packages fonctionne désormais avec les sites Web à partir de NuGet 2.7la source
Site Web = à utiliser lorsque le site Web est créé par des graphistes et que les programmeurs ne modifient qu'une ou deux pages
Application Web = à utiliser lorsque l'application est créée par des programmeurs et que les graphistes ne modifient qu'une ou deux images / pages paginées.
Les sites Web peuvent être utilisés à l'aide de n'importe quel outil HTML sans avoir à avoir Developer Studio, car les fichiers de projet n'ont pas besoin d'être mis à jour, etc. Les applications Web sont optimales lorsque l'équipe utilise principalement Developer Studio et que le contenu en code est élevé.
(Certaines erreurs de codage se trouvent dans les applications Web au moment de la compilation et ne sont trouvées dans les sites Web qu'au moment de l'exécution.)
Attention: j'ai écrit cette réponse il y a plusieurs années et je n'ai plus utilisé Asp.net depuis. J'espère que les choses ont évolué.
la source
Sauf si vous avez un besoin spécifique pour un projet compilé dynamiquement, n'utilisez pas de projet de site Web .
Pourquoi? Parce que le projet de site Web vous fera monter dans le mur lorsque vous essayez de changer ou de comprendre votre projet. Les fonctionnalités de recherche de frappe 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 Slow «Rechercher toutes les références» dans Visual Studio .
Je ne vois vraiment pas pourquoi ils ont abandonné les applications Web dans Visual Studio 2005 pour le type de projet de site Web Carbuncle induisant la douleur, drainant la santé mentale et la productivité.
la source
Il existe un article dans MSDN qui décrit les différences:
Comparaison de projets de sites Web et de projets d'applications Web
BTW: il y a des questions similaires à ce sujet, par exemple:
la source
Cela peut sembler un peu évident, mais je pense que c'est quelque chose qui est mal compris car Visual Studio 2005 n'a été livré qu'avec le site Web à l'origine. Si votre projet concerne un site Web qui est assez limité et n'a pas beaucoup de séparation logique ou physique, le site Web est très bien. 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 avantage du modèle de site Web est que tout dans la
app_code
section est compilé 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 DLL disparaît par défaut pour tout ce qui se trouve sousapp_code
ce qui se trouve puisque tout est compilé dynamiquement.Le modèle d'application Web n'a pas de compilation dynamique, mais vous contrôlez les choses que j'ai mentionnées.
Si vous faites du développement à n niveaux, 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:
la source
À partir du livre de l'examen 70-515 de la trousse de formation personnelle des SCTM:
la source
Cela dépend de ce que vous développez.
Un site Web axé sur le contenu verra son contenu changer fréquemment et un site Web est préférable pour cela.
Une application a tendance à avoir ses données stockées dans une base de données et ses pages et son code changent rarement. Dans ce cas, il est préférable d'avoir une application Web où le déploiement des assemblys est beaucoup plus contrôlé et prend mieux en charge les tests unitaires.
la source
Project structure
Il existe également une différence dans la structure du projet. Dans l'application Web, vous avez un fichier de projet comme vous l'aviez 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 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 l'application Web, il est standard "CodeBehind", dans le site Web, vous utilisez "CodeFile". Vous pouvez le voir dans les exemples ci-dessous:Application Web:
Site Internet:
la source
Oui, l'application Web est bien meilleure que les sites Web, car les applications Web nous donnent la liberté:
Pour avoir plusieurs projets sous un même parapluie et établir des dépendances entre les projets. Par exemple, pour PCS, nous pouvons avoir à la suite dans l'application Web-
Pour exécuter des tests unitaires sur le code qui se trouve dans les fichiers de classe associés aux pages ASP.NET
la source
L'une des principales différences est que les sites Web compilent dynamiquement et créent des assemblages à la volée. Les applications Web se compilent en un seul grand assemblage.
La distinction entre les deux a été supprimée dans Visual Studio 2008.
la source
Les applications sont généralement compilées avant le déploiement lorsque le site Web utilise le répertoire app_code. Lorsque quelque chose change dans le dossier de code de l'application, le serveur recompilera le code. Cela signifie que vous pouvez ajouter / modifier du code avec un site Web à la volée.
L'avantage d'une application est qu'il n'y a pas de recompilation et donc les temps de démarrage initiaux seront plus rapides.
la source
Je vous recommande de regarder la vidéo Projets d'application Web et projets de déploiement Web sur le site Web ASP.NET qui explique la différence en détail, cela m'a été très utile.
Soit dit en passant, ne vous laissez pas confondre par le titre, une grande partie de la vidéo explique la différence entre les projets de site Web et les projets d'application Web et pourquoi Microsoft a réintroduit des projets d'application Web dans Visual Studio 2005 (comme vous le savez probablement déjà, il initialement fourni avec uniquement des projets de site Web, puis des projets d'application Web ont été ajoutés dans SP1). Une excellente vidéo que je recommande vivement à tous ceux qui veulent faire la différence.
la source
Un "site Web" a son code dans un répertoire App_Code spécial et il est compilé en plusieurs DLL (assemblys) au moment de l'exécution. Une «application Web» est précompilée en une seule DLL.
la source
Site Web et projet >> site Web sont deux méthodes différentes pour créer une application ASP.NET à l'aide de Visual Studio. L'un est sans projet et un autre est l'environnement du projet. Les différences sont aussi
il n'y a pas beaucoup de différence fondamentale dans l'utilisation de l'une ou l'autre approche. Mais si vous créez un site Web qui prendra plus de temps, optez pour l'environnement du projet.
la source
Modèle de projet d'application Web
Modèle de projet de site Web
la source
Cela dépend toujours de l'exigence de votre client. ASP.NET comprend simplement des fonctionnalités flexibles dont l'utilisateur a besoin pour la sécurité et la maintenance facile de votre application.
Vous pouvez considérer une application Web comme un fichier binaire qui s'exécute à l'intérieur du cadre ASP.NET. Et les sites Web tant que page Web statique sur laquelle vous pouvez consulter et déployer facilement le code source.
Mais les avantages et les inconvénients de ces deux technologies ASP.NET viennent en bien.
la source
Sites Web - Aucun fichier de solution ne sera créé. Si nous voulons créer des sites Web, pas besoin de studio visuel.
Application Web - Un fichier de solution sera créé. Si nous voulons créer une application Web, nous devons avoir besoin du studio visuel. Il créera un seul
.dll
fichier dans le dossier bin.la source
Dans les projets d'application Web, Visual Studio a besoin de fichiers .designer supplémentaires pour les pages et les contrôles utilisateur. Les projets de site Web ne nécessitent pas cette surcharge. Le balisage lui-même est interprété comme le design.
la source
WebSite: Il génère automatiquement le dossier app_code et si vous le publiez sur le serveur et ensuite si vous effectuez des modifications dans un fichier ou une page en particulier, vous n'avez pas à compiler tous les fichiers.
Application Web Il génère automatiquement un fichier de solutions que le site Web ne génère pas et si vous modifiez un fichier, vous devez compiler le projet complet pour refléter ses modifications.
la source
Dans une application Web, vous pouvez créer les couches de la fonctionnalité de votre projet et créer des interdépendances entre elles en la divisant en plusieurs projets, mais vous ne pouvez jamais le faire sur un site Web.
la source
Certainement une application Web, un fichier DLL unique et facile à entretenir. Mais un site Web est plus flexible; vous pouvez modifier le fichier aspx sur la route.
la source
Les applications Web nécessitent plus de mémoire, probablement parce que vous n'avez pas d'autre choix que de compiler en un seul assembly. Je viens de convertir un grand site hérité en application Web et j'ai des problèmes de manque de mémoire, à la fois au moment de la compilation avec le message d'erreur ci-dessous:
erreur, et lors de l'exécution avec ce message d'erreur comme ci-dessous:
Ma recommandation pour convertir des sites plus grands sur du matériel hérité à mémoire limitée est de choisir l'option pour revenir au modèle de site Web. Même après un premier succès, le problème pourrait remonter plus tard.
la source
Ici, l'application Web Supportive est un exemple de site Web. Le site Web et l'application Web peuvent tous deux être dynamiques / statiques, cela dépend des exigences, voici un exemple pour comprendre le fonctionnement du site Web et de l'application Web.
la source
Pour résumer certaines des réponses ci-dessus:
Flexibilité , pouvez-vous apporter des modifications en direct à une page Web?
Site Web : Possible. Pro: avantages à court terme. Inconvénient: risque à long terme de chaos du projet.
Web App : Con: pas possible. Modifiez une page, archivez les modifications apportées au contrôle de code source, puis créez et déployez l'ensemble du site. Pro: maintenir un projet de qualité.
Problèmes de développement
Site Web : structure de projet simple sans fichier .csproj. Deux pages .aspx peuvent avoir le même nom de classe sans conflits. Nom de répertoire de projet aléatoire menant à des erreurs de génération, comme pourquoi le framework .net entre en conflit avec son propre fichier généré et pourquoi le framework .net entre en conflit avec son propre fichier généré . Pro: Simple (simpliste). Con: erratique.
Web App : structure de projet similaire au projet WebForms, avec un fichier .csproj. Les noms de classe des pages asp doivent être uniques. Pro: Simple (intelligent). Inconvénient: aucun, car une application Web est toujours simple.
la source