Mon équipe et moi avons reçu un financement pour commencer à développer une application Web au niveau de l'entreprise (je n'entrerai pas dans les détails de ce qu'elle fait). L'application aura de nombreuses pages Web séparées, mais deux de ces pages seront plus ciblées et très lourdes - lourdes comme dans beaucoup d'interactions utilisateur, des modaux qui affichent des données de masse, des connexions Websocket, un chat, etc.
J'ai été affecté à l'architecte en chef sur le projet, donc je fais des recherches sur les derniers frameworks Web. Pour le back-end, nous avons fait quelques tests et avons décidé d'aller avec la plateforme Azure SQL. Jusqu'à présent, j'apprécie les améliorations qui ont été apportées et qui sont en train d'être apportées à ASP.NET avec Core 2.0. Plus précisément le moteur Razor, par rapport aux versions précédentes d'ASP.NET MVC.
Je voulais obtenir des avis d'experts sur le "nouveau" Razor vs Angular / React et autres. Je suis particulièrement préoccupé par la performance. Comment Core 2.0 Razor résiste-t-il aux frameworks de rendu côté client? Les différences sont-elles négligeables? Notre application cible 1 000 000 d'utilisateurs potentiels (environ 100 000 utilisateurs simultanés).
Merci d'avance!
Réponses:
Nous avons finalement opté pour un front-end angulaire et un backend API ASP.NET Core, utilisant Azure SQL. Nous avons testé Core Razor et, bien que meilleur que l'ancien Razor, Angular a finalement été beaucoup plus rapide pour nous. En ce qui concerne l'expérience utilisateur, Angular (ou React) est bien supérieur en termes de performances. Les aspects de liaison de modèle d'Angular nous ont semblé être un avantage gigantesque du rendu côté serveur. L'utilisation de Razor (ou du rendu côté serveur en général) se prête cependant à une meilleure intégrité globale en ce qui concerne les données et permet une meilleure transition des données du front-end au back-end. Il existe une véritable déconnexion entre un framework front-end et une API. Toutes les données transmises au serveur doivent être converties en objets typés - cela signifie que vous devez gérer deux ensembles de modèles POCO distincts. Cela peut entraîner des problèmes si les objets serveur et les objets frontaux ne sont pas alignés. Pour le moment, Entity Framework Core n'est pas très mature, nous avons donc des problèmes avec la mise à jour des objets, l'interrogation d'objets, y compris les objets enfants, etc.
Dans l'ensemble, cette configuration a très bien fonctionné pour nous jusqu'à présent! J'imagine que React serait un remplaçant similaire à Angular si vous êtes plus à l'aise avec cela. J'ai dû apprendre Angular, ce qui était une transition très facile, et je l'adore maintenant!
la source
En utilisant Angular / React avec l'API côté serveur:
Mais en utilisant Angular / React, vous devriez vous inquiéter des clients:
la source
Je n'ai pas de repères. Mais, j'ai plusieurs projets exécutant JQuery, Razor, .NET MVC (C #), AJAX. Pas à l'échelle que vous abordez.
Conseils .. Assurez-vous de bien réfléchir et de suivre les meilleures pratiques. Pour que les choses restent maintenables, assurez-vous de diviser les contrôleurs, les vues et le modèle en groupes plus petits et significatifs. Quand j'ai commencé, j'ai commis l'erreur de tout mettre dans un seul contrôleur Home et une tonne de vues dans le dossier partagé. C'était bien au début, mais lorsque le fluage des fonctionnalités a commencé, il est devenu un gâchis et difficile de revenir en arrière et de redessiner.
J'utilise également Linq2SQL. J'ai commis l'erreur de créer des modèles pour tout, puis j'ai réalisé que je pouvais simplement renvoyer l'ensemble de résultats de mes requêtes en tant que modèle. duh.
Si vous utilisez .NET MVC et que vous êtes préoccupé par les performances, voici les choses que j'ai rencontrées:
NE renvoyez PAS de vues partielles qui créent de gros blocs de HTML! Assurez-vous de tout minimiser. Débarrassez-vous de tout l'espace blanc. Utilisez des noms d'identification plus petits. Prenez le temps de créer un HTML le plus léger possible. Renvoyez JSON et demandez au client de faire une partie du travail.
Faites attention à la façon dont vous développez votre CSS. N'utilisez pas un tas de styles en ligne, prenez le temps de les incorporer dans des fichiers CSS que vous pourrez minimiser plus tard.
Il en va de même pour votre JS côté client. Il est tentant de placer le JS dans des vues partielles. Gardez les choses organisées.
Le rendu sur IE est horrible. Surtout s'il y a beaucoup d'images. Assurez-vous de compresser les images autant que possible, sans perdre en qualité bien sûr.
la source