119 votes

ASP.NET Core 2.0 Razor vs Angular / React / etc

Mon équipe et moi avons reçu un financement pour la mise en développement d'une Entreprise au niveau de l'application web (n'entrerai pas dans les détails de ce qu'il fait). L'application aura un grand nombre de pages web mais deux de ces pages étant plus concentré et très lourd - lourd comme dans beaucoup d'interaction avec l'utilisateur, les auxiliaires modaux qui affichent des données en masse, websocket connexions, chat, etc.

J'ai été affecté à l'Architecte en Chef sur le projet, j'ai donc fais quelques recherches sur le web les plus récentes des cadres. Pour le back-end, nous avons fait quelques tests et ont décidé d'aller avec la plate-forme Azure SQL. Jusqu'à présent, je suis aimer les améliorations qui ont été faites, et sont en train d'être faite, à ASP.NET avec le Noyau 2.0. Plus précisément, le moteur de Rasoir, sur les précédentes versions de ASP.NET MVC.

Je voulais avoir quelques avis d'experts sur la "nouvelle" Rasoir vs Angulaire, de Réagir et de le comme. Je suis plus particulièrement concerné par les performances. Comment est-Core 2.0 Rasoir hold-up pour le rendu côté client cadres? Les différences sont négligeables? Notre application est le ciblage d'un potentiel de 1 000 000 d'utilisateurs (environ 100.000 personnes en même temps).

Merci à l'avance!

82voto

TchPowDog Points 1051

Nous avons fini par aller avec un rapporteur d'angle frontal et un ASP.NET de Base de l'API backend, à l'aide de SQL Azure. Nous avons testé de Base de Rasoir et, bien que meilleur que celui de l'héritage de Rasoir, Angulaire a été beaucoup plus rapide pour nous à la fin. Aussi loin que l'expérience utilisateur va, Angulaire (ou Réagir) est de loin supérieur en termes de performances. Le modèle de liaison aspects Angulaire nous avons trouvé pour être un gigantesque avantage de rendu côté serveur. À l'aide de Rasoir(ou côté serveur de rendu en général) n'a, cependant, se prête à une meilleure intégrité dans la limite des données va et il permet une meilleure transition des données à partir de " front-end back-end. Il y a un vrai décalage entre un cadre et d'une API. Toutes les données qui est transmis au serveur doit être jeté dans les objets de type - cela signifie que vous avez à gérer deux POCO modèle fixe. Cela peut entraîner des problèmes si des objets de serveur frontal et les objets ne sont pas alignés. Pour le moment, Entity Framework de Base n'est pas très mûri si nous avons des problèmes avec la mise à jour des objets, interroger les objets, y compris les objets enfants, etc.

Dans l'ensemble, cette configuration a très bien fonctionné pour nous à ce jour! J'imagine Réagir serait similaire de remplacement Angulaire si vous êtes plus à l'aise avec elle. J'ai dû apprendre Angulaire, ce qui était très facile de transition, et je l'adore maintenant!

57voto

Mohsen Esmailpour Points 5832

En utilisant Angulaire/Réagir avec l'api côté serveur:

  • vous éliminez le processus de génération de code HTML, dans le côté serveur et vous économiser du cpu
  • api génère une petite charge utile (json) et Rasoir (html) d'un cours serait beaucoup plus grand en taille, pleine page se recharge et de publication aller-retour. donc, api et spa économiser de la bande passante
  • api et d'un spa peut avoir différentes versions, mise à l'échelle et les scénarios de déploiement
  • En utilisant l'api, vous pouvez soutenir l'application mobile trop et si vous commencez par le Rasoir, vous pouvez avoir besoin de l'api à l'avenir

mais en utilisant Angulaire/Réagir vous devez vous soucier des clients.

  • le client doit activer javascript
  • le client doit avoir les navigateurs modernes
  • le client doit disposer d'assez de matériel puissant
  • SEO

27voto

Keith Aymar Points 491

Je n'ai pas de repères. Mais, j'ai plusieurs projets en cours d'exécution JQuery, un Rasoir .NET MVC (C#), L'AJAX. Pas à l'échelle que vous êtes la lutte contre les.

Des conseils.. assurez-vous de penser les choses à travers et de suivre les meilleures pratiques. Pour garder les choses maintenable assurez-vous de briser les contrôleurs, les points de vue, le modèle en plus petit et groupes significatifs. Quand j'ai commencé, j'ai fait l'erreur de mettre le tout dans un contrôleur de la Maison, et une tonne de points de vue dans le dossier partagé. Était très bien au début, mais quand la fonction de fluage a commencé, il est devenu un gâchis et difficile de revenir en arrière et de remaniement.

J'utilise aussi Linq2SQL. J'ai fait l'erreur de créer des modèles pour tout, et alors réalisé que je pouvais juste retour de l'ensemble de résultats de mes requêtes comme un modèle. duh.

Si vous allez .NET MVC et êtes inquiet au sujet de la performance, ce sont les choses que j'ai rencontré:

NE PAS retourner les vues partielles qui créent de grands blocs de HTML! Assurez-vous de minimiser tout. Se débarrasser de tous les blancs de l'espace. Utilisez les petits noms de code. Prenez le temps de créer le code html qui est aussi léger que possible. De retour JSON et demander au client de faire une partie du travail.

Soyez prudent sur la façon d'élaborer votre feuille de style CSS. Ne pas utiliser un tas de styles en ligne, prenez le temps de les incorporer dans les fichiers CSS que vous pouvez ensuite réduire.

En va de même de votre côté client en JS. Il est tentant de mettre le JS dans les vues partielles. Garder les choses organisées.

Le rendu sur IE est horrible. Surtout si il y a beaucoup d'images. Assurez-vous de compresser les images autant que possible, sans perdre de la qualité des cours.

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