nHibernate versus LLBLGen Pro
j'essaie de travailler avec ORM tool pour passer à deux candidats.
nHibernate or LLBLGen Pro
s'il vous Plaît pouvez-vous les gars me donner les avantages et les inconvénients dans l'utilisation de ces deux outils, surtout si vous avez de l'expérience dans les deux. Je ne suis pas vraiment intéressé par d'autres outils, mais je veux des mises en garde pour que je puisse décider quel outil pour passer du temps à apprendre....
je sais déjà que l'un est libre et l'autre pas, je sais aussi que nHibernate pourrait prendre un certain apprentissage....
Merci beaucoup, Richard
8 réponses
j'ai utilisé les deux. Au début j'ai été vendu sur nHibernate et a refusé d'essayer quoi que ce soit d'autre même si je savais au sujet d'autres options.
avec LLBLGen Pro, j'étais sceptique, mais j'ai vite vu les avantages aussi. Je n'ai pas totalement abandonné nHibernate. Je vais continuer à garder un int dans ma "boîte à outils". J'ai trouvé le LLBLGen utile dans certains cas, surtout lorsque vous interagissez avec une base de données qui existe déjà et que vous n'avez pas le choix de la reconcevoir. Il prend moins de plus d'une heure (selon la taille de la base de données bien sûr) pour générer mes objets D'Entity LLBLGen à partir de la base de données, au lieu d'avoir à tout coder manuellement avec nHibernate, et de faire les correspondances. il manque à nHibernate une interface graphique agréable pour créer les mappages. Ce fait devient encore plus important lorsque la base de données est massive avec des milliers de tables que vous devez potentiellement accéder dans votre application.
bien que LLBLGen soit plus une couche D'accès aux données générateur (et je ne suis pas normalement un fan de générateurs de DAL), il a beaucoup de caractéristiques d'un outil "vrai ORM" aurait. À mon avis, il a le meilleur des deux mondes. Une fois que vous commencez à travailler avec elle, vous commencez à réaliser qu'il est très souple et extensible. Une partie que j'aime beaucoup est qu'il est possible pour moi de créer des classes partielles pour les objets entity générés, où je peux coder dans ma logique d'affaires, ainsi que la validation.
la génération de code est templated donc vous avoir le plein contrôle sur le code qu'il génère. Avec nHibernate, je me retrouve à écrire le même genre de code encore et encore. Avec LLBLGen, je peux le générer et me concentrer plus rapidement sur la logique de l'entreprise et les problèmes.
pour quelqu'un qui commence juste à utiliser des outils de type ORM, je recommande vraiment de commencer avec LLBLGen, parce que nHibernate peut être écrasante. Et à la fin vous aurez obtenu le même résultat (Plus ou moins).
Edit #1: LLBLGen a maintenant aussi 100% de soutien pour LINQ. (Donc si vous aimez LINQ à SQL pour cette raison) D'autres LLBLGen peuvent prendre en charge de nombreuses bases de données, où LINQ à SQL est seulement pour la base de données SQL de Microsoft.
Edit #2: selon Graviton vous pouvez utiliser CodeSmith pour faire une partie du code générant pour vous pour nHibernate. C'est vraiment cool, mais pour un nouveau venu à ORM je recommande toujours LLBLGen. Pour moi, c'est ajouter plus de dépendances là où LLBLGen a tout dans un paquet. Aussi, comme je l'ai dit avant que la courbe d'apprentissage est beaucoup moins raide et vous obtiendrez les mêmes avantages, qui vous aidera aussi à l'aise dans nHibernate si jamais vous décidez d'y aller.
la différence majeure est que LLBLGen est un générateur de code, alors que NHibernate est une bibliothèque" vraie " ORM.
LLBLGen avantages :
- designer de modèle facile à utiliser. Peut importer votre schéma de base de données existante
- Entièrement tapé modèle objet et le langage de requête
LLBLGen désavantages :
- Vous besoin de l'Application designer pour changer votre modèle
- Non libre
- peut gonfler votre code parce que beaucoup de code est généré
NHibernate avantages :
- aucune application de créateur n'est nécessaire. Uniquement code
- largement utilisé (basé sur L'ORM Java le plus populaire, hibernation)
- très puissant pour cartographier n'importe quel modèle de données que vous pouvez imaginez
- Open source
NHibernate inconvénients :
- difficile à apprendre "151970920 Pas fortement typé que l'on voudrait (en particulier les requêtes)
bien sûr, c'est juste mon point de vue personnel...
j'ai tapé une réponse assez longue avant de réaliser que c'était une question un peu vieille. Oh bien. C'est toujours très pertinentes.
vous avez réduit votre liste aux deux meilleurs candidats pour un ORM dans le monde.NET. J'ai peu d'expérience avec soit, mais j'ai beaucoup lu sur les avantages et les inconvénients des deux. Ils répondent vraiment à des besoins quelque peu différents de différentes façons.
dans le LLBLGen Pro 3.0 à venir, Frans Bouma a parlé de ajout de fonctionnalités pour générer des mappages NHibernate. Donc, ce n'est même pas nécessairement une décision de l'un ou l'autre.
si vous voulez faire" class first "design (par opposition à" database first " design), NHibernate est à peu près votre meilleur et seule option en ce moment (ni LLBLGen Pro ni Entity Framework support ce mode, bien qu'il semble que le cadre Entity améliore son support dans la prochaine version).
NHibernate et LLBLGen Pro tous deux travaillent dur pour travailler bien avec les bases de données existantes laquelle vous ne pouvez pas changer et vivre avec. C'est leur force. Ils travaillent aussi avec Linq. Ils prennent tous deux en charge une certaine quantité de modélisation graphique, bien que LLBLGen Pro soit de loin supérieur à cet égard ( ActiveWriter for NHibernate se sent comme le concepteur LinqToSql dans Visual Studio, mais ce n'est pas vraiment aussi riche en fonctionnalités).
LLBLGen Pro a des capacités de génération de code beaucoup plus fortes, mais trop de code la génération peut conduire à une testabilité et une maintenabilité compromises (un petit tweak peut causer des quantités massives de code à avoir besoin de nouveau test).
alors que NHibernate veut vous aider à travailler à travers des scénarios de cartographie objet / relationnelle assez complexes comme l'héritage de classe, LLBLGen Pro est vraiment juste exposer votre base de données comme une couche de données et des objets d'affaires d'une manière très rapide.
si vous pouvez acheter LLBLGen Pro et avoir un peu de temps, je voudrais essayer les deux et voir qui mieux répond à vos besoins. Apprendre les deux ORMs est bon pour votre CV dans tous les cas.
donc, à la fin, je dirais que c'est situationnel. Le coût de NHibernate et son absence de défauts graves font un cas assez convaincant dans la majorité des situations.
la nouvelle version de LLBLGen Pro (3.0) vous permet de générer du code pour NHibernate, donc ne pas avoir à choisir :). Il vous permet également de diviser votre entités dans différents domaines.
je préfère encore L'exécution LLBLGen pro, mais L'interpréteur LINQ est plus complet et il a un meilleur suivi des champs.
malheureusement, il n'y a pas beaucoup de nouvelles fonctionnalités dans le nouveau LLBLGen Pro 3.0 runtime, car le créateur a d'abord voulu se concentrer plus sur l'outillage que d'améliorer le cadre existant.
j'ai utilisé nHibernate, LLBLGen Pro, une couche de données personnalisée de ma société de conseil, la bibliothèque D'entreprise, et LINQ. LLBLGen est de loin mon préféré et il permet d'écrire une couche d'affaires qui peut parler à différents types de bases de données en utilisant le même code fournissant l'indépendance de la base de données! Une autre caractéristique incroyable est qu'il permet des connexions multiples à différentes bases de données. Cela est très utile lorsque dans une grande entreprise et un système est écrit dans le serveur Sql et L'autre vous devez interface avec est dans Oracle.
LLBLGen Pro est un produit étonnant soutenu par Frans qui est très actif et travaille dur pour résoudre les problèmes. LLBLGen est comme PhotoShop, c'est un outil incroyable et qui peut faire d'incroyables effets dans les mains de quelqu'un qui sait comment l'utiliser. Et comme tout outil qui permet d'économiser beaucoup de temps, il faut une semaine ou deux pour apprendre à l'utiliser, mais vous permettra d'économiser des mois plus tard sur votre projet.
n'a pas seulement accéléré la génération DAL côté de mon application, il est également facile de créer des requêtes dans la couche Business et d'Envoyer à la couche présentation. Il a rendu facile de créer une application de classe d'entreprise.
si vous voulez vraiment utiliser nHibernate, commencez avec LLBLGen Pro et générez le code nHibernate. Si plus tard votre ministère décide de passer de nHibernate à LINQ, vous êtes couvert. Vous voulez passer de Sql Server à Oracle? Cela est possible et relativement facile avec LLBLGen tandis qu'avec manuellement code nHibernate codé, vous devez réécrire tout ce qui est presque impossible de justifier le coût.
Frans était également disponible et a répondu à certaines de mes questions.
N'oubliez pas L'un des plus grands points d'hibernation: HQL. Avec HQL, votre compétence SQL n'est pas gaspillée. Et Hibernate fournit un soutien très agréable, sans couture pour la requête native aussi bien. Si vous avez une base de données étrange et hors norme, il est presque certain que vous avez besoin de vos compétences SQL à un moment donné, et bonne chance avec LLBL!
Pour moi, cela se résume à la base de données centrée sur le (LLBLGen Pro) par rapport au modèle de domaine centric (NHibernate).
depuis que je suis un gars DDD/OO, le choix a toujours été très facile pour moi, mais je vois pourquoi LLBLGen Pro est populaire.
nous utilisons LLBLGen au travail, et il est injurié -- à savoir parce que nous avons plusieurs schémas similaires, mais vous avez besoin d'avoir une DLL/bibliothèque de classe différente pour chaque schéma, ce qui signifie qu'il devient ennuyeux d'écrire du code qui peut cibler n'importe quel schéma.
bien sûr, c'est un environnement inhabituel, donc il peut ne pas s'appliquer à vous.