2009-07-13 3 views
1

Je n'utilise pas hibernate et ce n'est pas une alternative valable du tout. J'ai développé un framework basé sur ADO.NET. Ce framework a des opérateurs par défaut pour chaque entité de base de données.Dois-je utiliser des méthodes statiques pour les opérateurs communs DataAccess?

Par exemple, les couches d'accès aux données a des opérateurs par défaut comme suit:

Insert 
Update 
Delete 
Get 
GetAll 

Pour accéder à ces méthodes, nous travaillons comme tha exemple de code ci-dessous:

DataAccess.Order daoOrder; 

Entity.Order entityOrder; 
DataAccess.Order daoOrder; 

entityOrder = new Entity.Order(); 
entityOrder.ID = 1090; 

daoOrder = new DataAccess.Order(); 
daoOrder.Insert(entityOrder); 

Je pensais à une utilisation statique méthodes, de sorte que le code serait simple comme:

Entity.Order entityOrder; 

entityOrder = new Entity.Order(); 
entityOrder.ID = 1090; 

DataAccess.Order.Insert(entityOrder); 

Supposons que le système a 30 tables et 30 entités. Nous avons besoin de 30 objets DataAccess fonctionnant comme des objets statiques. Cette structure statique nous permettrait d'économiser quelques cycles de processeur et d'économiser de la mémoire car ses coûts sont moindres pour le garbage collector. Dois-je utiliser des méthodes statiques pour les opérateurs communs Business et DataAccess de cette manière? Pouvez-vous parler des avantages et des inconvénients de cette approche? (Je veux dire, la mémoire, la performance ...)

Répondre

3

La différence de performance entre les deux options que vous mentionnez ci-dessus sera pratiquement inexistante. J'opterais pour la conception la plus propre et la plus flexible que vous puissiez gérer, en tenant compte de votre modèle de domaine et des autres besoins de l'entreprise, puis vous inquiéter de l'optimisation des performances une fois que vous serez opérationnel. N'essayez pas de deviner les goulots d'étranglement avant d'avoir construit votre système.

Voir ce post par Greg Beech pour une analyse des static versus instance performance ..

Sa conclusion:

en appelant une méthode de deux milliards de fois que vous pourriez vous épargner autour de 5ms en le rendant statique, ce qui est une économie d'à peu près rien pour chaque appel de méthode

+0

Greg Beech a fait quelques tests mais je suis toujours confus car GC ne fonctionne pas très bien sur .net 2.0. Comme vous instanciez des objets, parfois GC ne les dispose pas très bien. C'est pourquoi le processus de w3wp.exe augmente son workset comme le feu en enfer! –

+0

Eh bien, la performance est négligeable dans les deux cas, aussi longtemps que votre conception est saine, l'utilisation de méthodes statiques devrait être bien - c'est moins de lignes de code;) – flesh

+0

@flesh Lien est cassé., –

1

Si vous utilisez des méthodes statiques dans cette classe, chaque objet qui interagira avec Je suis fortement couplé avec ça. En fait, votre code n'est pas bien testable. Si j'étais vous, j'éviterais d'utiliser des méthodes/classes statiques ainsi que des Singletons. Sauf si vous ne voulez pas tester votre application.

+1

Désolé, ce n'est pas vrai! –

+1

Oh, pourriez-vous donner quelques explications? Quelle partie de ma séquence n'est pas vraie? Vous avez posé des questions sur les avantages et les inconvénients, et c'est mon point de vue. Corrigez-moi si j'ai tort, s'il-vous plait. – rafek

Questions connexes