7
votes

Qu'est-ce que ASP.NET MVC n'est pas bon?

Je suis un grand fan de ce que fait ASP.NET MVC, à de nombreux niveaux.

Je suis sur le point de participer à la ré-construite d'un site Web très très trafiqué et que je ne suis pas le meilleur cadre (le cas échéant).

Le site aura besoin des éléments suivants:

  • Pour prendre en charge les pages très interactives JavaScript - lourdes
  • Mais en même temps, fournissez un HTML sémantique sous-jacent pour les moteurs de recherche
  • Supporte plusieurs langues
  • être skinnable
  • Exposez une API de service Web reposant pour les partenaires

    Autant que je puisse dire, il n'y a aucune raison de ne pas utiliser ASP.NET MVC pour cela.

    • Je peux présenter des HTML sémantiques et couche JavaScript sur le dessus en utilisant JQuery.
    • Plusieurs langues peuvent être consultées pour l'utilisation de fichiers de ressources (identiques à l'heure actuelle).
    • Skinning peut être fait avec CSS (cela ne nécessitera pas de modifications au balisage).
    • Je peux centraliser la logique commerciale de sorte que les contrôleurs et le service Web WCF utilisent le même code.

      Mais y a-t-il des inconvénients potentiels pour utiliser MVC que je n'ai pas pris en compte?

      Je ne veux pas être le gars qui choisit une technologie parce que c'est cool mais trouve plus tard sur la piste que ce n'est pas très approprié pour le travail.


0 commentaires

5 Réponses :


11
votes

ASP.NET MVC n'est pas bon lorsque tout votre part est de faire un site Web qui nécessite un code côté serveur (mais c'est aussi vrai sur ASP.NET également).

Dans votre cas, je pense que MVC serait un excellent moyen d'y aller. MVC s'est révolutionnaire sur des sites Web élevés de trafic (par exemple, celui-ci). Cependant, vous devez vous rappeler que le MVC est nouveau et change. Une bibliothèque peut ne pas exister pour effectuer une tâche spécifique qui signifie que vous devrez écrire ce code vous-même.

bonne chance sur votre reconstruction!


1 commentaires

Plus un pour celui-ci! :);



6
votes

Vous êtes prêt à partir avec MVC donné ce que vous avez dit sur votre projet.

En ce qui me concerne, ASP.NET MVC n'est vraiment pas bon pour les situations où vous avez une grande base de code de code dans Webforms (ce qui signifie que vous avez beaucoup de contrôles d'utilisateur ASP.NET, des contrôles personnalisés, etc.). Ce n'est pas non pas bon si vous allez avoir des gens qui travaillent dessus qui ne savent pas ce que c'est tout. Outre cela, c'est une technologie assez jolie.


0 commentaires

0
votes

Je n'aime pas ASP.NET MVC à cause des raisons suivantes:

1. API de routage laid, il http://ayende.com/blog/archive/2008/11/05/a-case-study-of-bad-api-design-asp.net-mvc-trouting.aspx est la description de ce qui ne va pas. À propos, des URL amicales peuvent être facilement implémentées sans MVC http://demo.liveui.net/bugtracker/tasks/7

2. Modèle d'objet médiocre. Il est prouvé qu'un bon logiciel doit être composé de composants réutilisables. Il n'y a rien qui puisse être réutilisé dans le site Web basé sur ASP.NET MVC. Par exemple, si vous avez implémenté une liste de dépose intelligente une fois qu'il sera difficile de l'utiliser à nouveau (même sur le même site Web).

3. Manque de contrôles. Certaines fonctionnalités (comme TreeView ou Menu) sont déjà implémentées comme des contrôles et il serait une perte de temps pour les réichier à l'aide de MVC.

Si j'étais vous, j'essaierais de trouver des CMS et de le personnaliser pour les besoins du site Web.

aux réponses: OUI. Je sais sur les inconvénients des contrôles ASP.NET, mais la question concerne ASP.NET MVC. On peut écrire un livre sur ce qui est bon et ce qui est mauvais dans ASP.NET, mais je ne pense pas qu'il convient de le discuter ici.


8 commentaires

Je vais bownviger cela s'il s'agissait de wiki communautaire comme cette question et de ses réponses devraient être. Vous n'avez pas vraiment abordé ses points. Les contrôles ont tendance à avoir une mauvaise balise. Vous pouvez facilement effectuer des composants réutilisables (essayez d'utiliser Spark au lieu du moteur de vue WebForms). Vous pouvez avoir un point sur l'API de routage. Cela peut être moche, mais cela fonctionne suffisamment bien.


Je suis d'accord avec son point que le moteur de routage pourrait être amélioré. À propos de la ré-utilisabilité, il est vrai que vous ne pouvez pas utiliser Classic ASP.NET Controls, mais vous peut Utiliser des composants JQuery / JavaScript beaucoup plus facilement dans ASP.NET MVC, tout en maintenant une balise propre et sémantique.


Je ne vois pas des raisons pour lesquelles les contrôles devraient avoir une mauvaise balise. Même MVC comme la syntaxe peut être utilisée dans n'importe quel contrôle de l'ASCX. À propos de mauvais modèle d'objet. Il est prouvé qu'il est utile d'avoir un modèle d'objet qui peut être modifié ou personnalisé après la création. Par exemple, avoir le modèle d'objet basé sur le contrôle, je peux modifier les propriétés des contrôles d'écouter les événements et ainsi de suite ... alors que l'idéologie MVC est difficile de changer quelque chose une fois la vue créée.


Au fait, JQuery est gentil. Mais la conception de composants basés sur la plupart des jQuery est mauvais pour la même raison. Il y a un mauvais modèle d'objet. Il est généralement difficile de remplacer ou de personnaliser quelque chose. ExtJs en contraste a une excellente conception et un modèle d'objet flexible.


Vous avez pensé que vous pouvez créer des méthodes HTML Helper pour implémenter des éléments tels que des dépositions intelligentes et la réutiliser tout au long de votre site.


Vous pouvez réutiliser des composants de MVC, l'un des points est une séparation des préoccupations. En tant que tel, vous pouvez changer à peu près tout et échanger les autres projets, tels qu'un moteur de vue personnalisé. Il est trivial de réutiliser des composants (i.e baisse intelligente) BTW. Dans MVC 2.0, ils auront des contrôles modèles pour résoudre certains de ces problèmes, c'est-à-dire que c'est bien.


Le manque de contrôle avec les commandes WebForm était trop contrôlant pour moi. JOKES ASSIDE Il y a beaucoup de HTML douteux en eux (crée un style vraiment difficile) et MVC vous donne vraiment le contrôle d'être modulaire et de rester en contrôle afin que je ne suis pas d'accord avec cette réponse.


1) Je suis d'accord 2) Vous pouvez facilement réutiliser des composants si vous définissez bien votre code. Vous pouvez écrire une classe responsable de la logique latérale du serveur de Drop Down et une classe de base de données ou de service injectable, si nécessaire, ce qui signifie que vous pouvez prendre ces objets dans un autre projet et utiliser un système de base de données différent ou un nouvel ensemble d'API. TDD aide vraiment ici. 3) Je déteste les contrôles. Bien sûr, vous n'avez pas besoin d'écrire votre propre balisage, mais je n'aime pas la manière dont vous devez vous inscrire pour coder les événements pour recevoir des données. L'envoi de données à une méthode côté serveur est beaucoup plus propre et sonore architecturale.



3
votes

Mes deux cents:

ASP.NET MVC est une excellente option, mais il y a une petite courbe d'apprentissage impliquée, assurez-vous donc que votre plan / chronologie de votre projet a traité cette traitée. Il pourrait y avoir des développeurs de votre équipe qui pourraient ne pas être à l'aise de travailler avec ASP.NET MVC, ce qui peut entraîner des retards possibles (beaucoup de développeurs travaillent toujours dans ASP.NET 1.1!).

@Alex: manque de contrôles. Certaines fonctionnalités (comme TreeView ou Menu) sont déjà implémentées comme des contrôles et il serait une perte de temps pour les réichier à l'aide de MVC.

imo L'idée d'utiliser des contrôles dans ASP.NET MVC n'a pas beaucoup de sens. Vous pouvez créer un contrôle d'une arborescence à l'aide de JQuery facilement. Classic ASP.NET Server Controls a porté beaucoup de bagages (ViewState, etc.) et donc ASP.NET MVC n'a utilisé aucun de ces contrôles (bien que vous puissiez utiliser des aides).

Enfin, ASP.NET MVC est une alternative, et non un remplacement des formulaires Web. Je n'utiliserais pas ASP.NET MVC car il évolue toujours, et mon équipe n'est pas très à l'aise avec elle, mais je suppose que de plus en plus de programmeurs changèrent à cette option (meilleure).


0 commentaires

0
votes

Il existe de meilleurs moyens de mettre en œuvre MVC sans utiliser ASP.NET MVC. Je l'ai fait dans le passé, même avant que ASP.NET MVC est venu vivre. MVC est un modèle, pas une technologie, je ne comprends pas pourquoi certaines personnes appellent cela une technologie. Vous pouvez séparer toutes les préoccupations en supprimant le code-derrière des formes Web et créez vos propres contrôleurs et routeurs et vous aurez toujours l'avantage des commandes WebForm, etc., à laquelle la plupart des développeurs ASP.NET sont utilisés à utiliser. ASP.NET MVC est agréable pour les personnes qui n'ont pas vraiment le temps de créer correctement une application MVC dans un environnement WebForms et également à ceux qui n'ont pas le temps d'archiver une meilleure solution. En Conlcusion, ASP.NET MVC est bon, mais il y a un bien meilleur moyen de le faire et enfin, MVC n'est pas une technologie.


0 commentaires