2012-02-02 4 views
3

Il s'agit d'un problème de performances et de refactoring.Réorganisation du contrôle utilisateur

J'ai un contrôle utilisateur .NET (UCA.ascx) ... qui utilise à son tour 5 autres contrôles utilisateur en interne. Chacune de ces commandes utilisateur est exécutée sur plus de 2 000 lignes de code.

La page Web charge d'abord UCA.ascx ... puis les 5 autres contrôles utilisateur sont chargés dynamiquement en fonction des actions dans UCA.ascx. Le code de ces commandes utilisateur utilise des objets DTO et contient une logique métier.

Le principal problème est de résoudre le long temps de chargement et le temps de fonctionnement différé (en raison des postbacks). Pour résoudre ce problème, je devrais d'abord comprendre le code.

  • Alors, est-il des conseils sur ce qui devrait être et ce qui ne doit pas être dans le code-behind-contrôle utilisateur codebase?

  • Existe-t-il un moyen, piloté par un outil ou plus facile, de réorganiser les commandes utilisateur volumineuses et lourdes?

+3

Particulièrement avec ces grandes quantités de code, vous ne devriez pas simplement chercher des choses qui semblent mauvaises et les corriger. Les chances sont que cela vous occupera pendant un certain temps avant même de commencer à résoudre les vrais problèmes. Vous devez profiler le code pour voir où il passe son temps et se concentrer sur l'optimisation de * cela *. – Servy

Répondre

1
  • Idéalement, il devrait y avoir aucune logique métier ou la logique d'accès aux données dans votre couche de présentation du tout. Le code de votre couche de présentation ne doit contenir que du code pour extraire les objets métier et les lier aux contrôles appropriés de la page. ReSharper a quelques outils de refactoring intégrés dans lesquels vous pouvez extraire des méthodes de votre base de code, mais de manière générale, le refactoring comme ceci est délicat et devrait être approché très soigneusement, avec prévoyance à la façon dont vous approchez de la refonte.

Comme vous le refactoring, essayez de garder à l'esprit SOLID principes et ajouter des tests unitaires partout où il est possible.

Questions connexes