3 votes

Quels sont les facteurs clés qui garantissent l'évolutivité des applications ASP.NET ?

Lorsque vous démarrez une nouvelle application ASP.NET, en sachant qu'à un moment donné dans le futur, elle devra évoluer, quelles sont les décisions de conception les plus importantes qui permettront une évolutivité future sans refactoring complet ?

3voto

Mauro Points 2938

Mes trois principales décisions sont

  1. Désactiver ou stocker l'état de la session dans une base de données.
  2. Stocker le moins possible en état de session.
  3. Bonne architecture N-Tier. La séparation de la logique métier et l'utilisation de services Web au lieu de l'accès direct aux DLL vous permettent de faire évoluer à la fois la couche métier et la couche de présentation. Votre base de données sera probablement capable de gérer tout ce que vous lui enverrez, bien que vous puissiez aussi la regrouper si nécessaire.

Vous pouvez également envisager de partitionner les données dans la base de données.

Je dois cependant admettre que je fais cela indépendamment du fait que le site doive évoluer ou non.

3voto

joeysim Points 399

Il s'agit de nos règles internes ASP.Net à faire et à ne pas faire pour les applications web à forte fréquentation :

Directives générales

  • Ne pas utiliser les sessions - SessionState=Off
  • Désactiver complètement ViewState - EnableViewState=False
  • N'utilisez aucun des contrôles UI complets d'ASP.Net, tenez-vous-en à la base (DataGrid vs. Simple repeater).
  • Utiliser l'accès aux données le plus rapide et le plus court les plus rapides et les plus courts (s'en tenir aux lecteurs sql sur le site principal)

Architecture d'application

  • Créez un gestionnaire de mise en cache avec une couche d'abstraction. Cela vous permettra de remplacer le simple System.Web.Cache par une solution de mise en cache distribuée plus complexe à l'avenir, lorsque vous commencerez à faire évoluer votre application.
  • Créer un gestionnaire d'E/S dédié avec une couche d'abstraction pour supporter la croissance future (S3 quelqu'un ?)
  • Intégrez à vos principaux pipelines un système de traçage temporel que vous pouvez activer et désactiver, ce qui vous permettra de détecter les goulots d'étranglement lorsqu'ils se produisent.
  • Utilisez un mécanisme de traitement en arrière-plan et déplacez tout ce qui n'est pas nécessaire au rendu de la page actuelle pour qu'il puisse le mâcher.
  • Mieux encore, pensez à envoyer des événements de votre application à d'autres applications pour qu'elles puissent effectuer ce travail asynchrone.
  • Préparez l'extensibilité de la base de données, placez votre propre couche afin de pouvoir décider ultérieurement si vous souhaitez partitionner votre base de données ou travailler avec plusieurs serveurs de lecture dans un scénario maître-esclave.

Surtout, apprenez des réussites et des échecs des autres et restez positif.

1voto

redsquare Points 47518

Assurez-vous d'avoir une politique de mise en cache solide pour les données transitoires/statiques. Les appels aux bases de données sont coûteux, surtout avec des serveurs physiques distincts, alors soyez agressif avec votre mise en cache.

1voto

joseph.ferris Points 8468

Les considérations sont si nombreuses qu'on pourrait écrire un livre sur le sujet. En fait, il existe un excellent livre et il est gratuit ;-)

Microsoft a publié Amélioration des performances et de l'évolutivité des applications .NET en tant que livre électronique au format PDF.

Il vaut la peine d'être lu d'un bout à l'autre, si le style d'écriture drolatique ne vous dérange pas. Il identifie non seulement les principaux scénarios de performance, mais aussi l'établissement de points de référence, la mesure de la performance et la manière d'appliquer ce que vous avez appris.

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