Avantages et inconvénients de NHibernate
Quels sont les avantages/inconvénients de l'utilisation de NHibernate ?
Ce type d'applications devraient être (& ne devrait pas être) construit à l'aide de NHibernate ?
source d'informationauteur Eros
Vous devez vous connecter pour publier un commentaire.
Depuis d'autres ppl ont énuméré les avantages, je vais juste énumérer les inconvénients
Inconvénients
Avantages:
Inconvénients:
Déjà mentionné de la courbe d'apprentissage. Vous pouvez commencer à utiliser NHibernate très rapide, mais il faudra des mois pour le maîtriser. J'avais les recommande fortement de lire Manning NHibernate livre.
L'écriture de mappage XML peut être très fastidieux, surtout pour les grandes bases de données avec des centaines et des milliers de tables et les vues et les procédures stockées. Oui, il y a des outils qui vont vous aider à générer ces mappages mais vous aurez à faire beaucoup de travail manuel. NHibernate Fluent semblent simplifier ce processus en se débarrassant de mappages XML, donc est Château ActiveRecord (AR-même est impossible à utiliser pour anémique de domaine comme vous le définir des mappages dans les attributs sur votre modèle de classes).
La Performance peut être faible pour certains scenarious. Par exemple, les grandes opérations en bloc. Pour celles que vous pourriez avoir à utiliser IStatelessSession mais sa maladroite de l'expérience, moins à dire...
Avantages:
Inconvénients:
(voir, par exemple, de la performance et de LINQ tests sur ormbattle.net)
Avantages:
Inconvénients:
Des Applications, vous devez l'utiliser pour:
Quelques raisons plus spécifiques à l'instar NHibernate
Inconvénients: NHibernate est pas un produit Microsoft, et va donc face à une certaine résistance de la part de leurs collègues qui n'ont pas entendu parler de lui. En particulier les logiciels libres à des fanatiques. Configuration les fichiers de mappage et paresseux/désireux comportement de chargement peut prendre du temps. Si votre base de données bizarre convention de nommage, design atypique ou de très strictes exigences de performance, plus de travail que prévu.
Je le dis beaucoup, mais ActiveRecord est une grande couche de NHibernate. Il utilise des attributs de la carte les points de données pour les membres de la classe à droite dans les classes elles-mêmes. Les gens ne sont pas à l'aide de cette chose assez.
Le haut niveau de réponse est que NHibernate est dans une classe à part et il n'est pas près de concurrence.
Si vous avez besoin d'CRUD sur une base de données à partir d'un .NET application, vous devriez être à l'aide de NHibernate, pour au moins deux raisons:
1) Vous obtenez le support Linq (qui exige quelque chose comme un ORM)
2) NHibernate est très mature
Il n'y a pas de graves inconvénients. Il y a d'autres options, mais les autres options ont des inconvénients.
J'ai écrit un peu plus sur ça il y a longtemps:
.NET et ORM - les Décisions, les décisions