Je travaille sur une application Web qui modifie un document XML stocké dans une base de données. Il est fait pour imiter exactement comme n'importe quel programme lorsque vous cliquez sur l'option "préférences" dans le menu. Le document XML est lu par une application client locale et toutes les modifications sont répercutées dans le client local. Je suppose que vous diriez que la page aspx est la «vue», une couche de service où je valide/traite toutes les entrées utilisateur, et une couche de données où je mets à jour le document XML.Performances de Linq to Objects et meilleure implémentation
Pour chaque page de paramètres, j'avais parcouru récursivement tous les contrôles de la page et si j'en avais un sur lequel je voulais travailler (case à cocher, zone de texte, ...) je l'ai ajouté à un IList puis J'ai envoyé IList à la couche de service où j'ai dû retirer le contrôle de la liste pour pouvoir travailler dessus. J'ai remarqué que cela semblait être un peu lent donc j'ai profilé la page et, fondamentalement, les requêtes LINQ to Objects que j'utilisais ont tendance à consommer beaucoup de temps.
(CheckBox)lstControls.Where(x => x.ID == "some_id").SingleOrDefault();
je puis passer à ajouter manuellement les commandes de la page à un IList puis en les tirant dans la couche de service par indexeur dans l'ordre où ils ont été mis en. Ceci est fugly et dépend entièrement de vous pas visser l'index du contrôle que vous recherchez. Enfin, cela casse la règle consistant à mélanger des éléments de la vue avec la couche de service ou la couche de données. Je sais que je ne devrais travailler qu'avec des données, mais je ne sais pas comment le faire efficacement.
Chaque page de paramètres comporte entre une et trente commandes à traiter. Comment puis-je obtenir toutes les données des contrôles à la couche de service sans envoyer les contrôles réels?
Merci pour l'aide ....
Que l'on en particulier pourrait être améliorée de la manière suivante: (CheckBox) lstControls.SingleOrDefault (x => x.ID == « some_id ») – mquander
Vous pouvez utiliser un Dictionary pour les contrôles au lieu d'une liste. Ensuite, leur accès serait O (1) au lieu de O (n). –
configurator