NHibernate vs Entity Framework 6 performances pour un grand nombre d'utilisateurs
Je suis en train de construire grosse application web qui doit communiquer avec la base de données très souvent.
Je me demande ce que la bibliothèque doit-je utiliser pour la communication NHibernate ou Entity Framework 6?
Voici ma demande spécifications:
- Utilisateurs: L'application construite pour le grand nombre d'utilisateurs, permet de commencer avec 100 000 utilisateurs enregistrés. 50 000 utilisateurs en ligne, chaque utilisateur peut envoyer jusqu'à 1 message à la seconde. De 15 000 messages obtenu envoyés chaque seconde.
- Mémoire: Il est très important de garder la mémoire dans l'état normal, alors je suppose que je devrais utiliser
LazyLoad
? - La base de données: la structure de La base est très compliqué.
- Les utilisateurs du moteur: Actuellement, je suis en utilisant ASP.NET MVC 5 Identité avec Entity Framework 6
UserStore
.
Choses importantes:
- Le confort est très important pour moi!
- Le Premier Code: je déteste lorsque le code est généré.
- Performance: La performance est la chose la plus importante ici!
source d'informationauteur Zilberman Rafael
Vous devez vous connecter pour publier un commentaire.
Comme quelqu'un qui est à l'aide de NHibernate pour plusieurs années, j'ai peut-être pas la bonne personne pour vous aider à choisir entre EF ou NHibernate, mais voici quelques conseils que j'ai appris de ces années:
-Être en contrôle : je veux dire choisir un ORM qui vous permettent de contrôler tous les aspects de son fonctionnement.Heureusement pour nous , NHibernate est l'un d'entre eux. Vous pouvez appeler SPs et d'autres objets de Base de données et cartographie de leur résultat à vos objets.Vous pouvez écrire des intercepteurs à intercepter NHibernate fonctionnalité et ainsi de suite.
-Éviter l'ORM questions dès le départ:l'un d'eux (qui a un gros impact sur les performances) est SÉLECTIONNEZ N+1.
-D'utiliser des profils pour voir comment votre ORM de travail: je pense que c'est vraiment important pour nous d'être en mesure de voir comment l'ORM de travail et quelles requêtes sont effectivement en cours d'exécution dans le dos.
-Utiliser le cache à chaque fois que possible: je ne sais pas sur EF, mais Nhibernate a un deuxième niveau, un mécanisme de cache que vous pouvez utiliser pour mettre en cache ferequently lire et de données statiques dans la mémoire d'acquérir une meilleure performance
-Avoir un plan pour les tests de charge et le stress test de votre application: peu importe la PLATEFORME que vous choisissez , il y aura des moments que vous devez augmenter les performances de votre application.Je pense que la meilleure façon de voir comment l'application fonctionne sur une grande échelle est en quelque sorte le simuler et d'essayer de le modifier pour qu'il fonctionne au mieux de sa forme.
-Avoir un Plan B : Formulaires sont conçus pour nous aider à résoudre le dilemme de stocker des données dans des tableaux et de les utiliser comme des objets de notre application.Ainsi, ils sont en train de faire quelque chose de plus pour nous et ils ont tendance à être plus lent que d'utiliser les données sous forme de tableaux.Il y a donc des fois qu'il serait préférable d'utiliser une plaine forme d'un tableau dans notre application, au lieu de les convertir en objets (Prendre en montrant une liste d'informations par exemple)
P. S. Cela peut être hors sujet, mais avez-vous pensez à utiliser une base de données NoSql la place d'un relationnel ?