Subsonic Vs NHibernate

Quel est le consensus sur le moment d'utiliser l'un de ces outils par rapport à l'autre ? Je trouve Subsonic très utile pour faire avancer les choses rapidement, mais sur les grands projets, il a tendance à ne pas évoluer et il lie votre modèle de domaine à votre modèle de base de données. C'est là qu'intervient Nhibernate car il vous donne des POCO légers qui ne sont pas liés à votre modèle de base de données, mais le temps de configuration est beaucoup plus long.

请先 登录 后评论

4 réponses

Bob

Je pense que vous avez à peu près réussi. Subsonic génère du code, de sorte que vos objets métier reflètent la structure de votre base de données. nHibernate utilise des fichiers de mappage qui mappent vos objets métier à la base de données afin que vos objets puissent être structurés comme vous le souhaitez.

Quelle est la taille d'un projet ? Un soutien à long terme sera-t-il nécessaire ? La rentabilité de Subsonic va-t-elle compenser les problèmes de mise à l'échelle potentiels ?

请先 登录 后评论
Jon Galloway

Je recommanderais SubSonic si votre projet fonctionne avec la vue ActiveRecord que la base de données est votre modèle. Vous aurez une classe par table et tout fonctionnera comme par magie. Vous pouvez bien sûr modifier et remplacer les choses, mais si vous (ou votre projet) n'êtes pas fondamentalement d'accord avec l'approche classe par table, je regarderais NHibernate car il commence par l'approche plus complexe (mais plus flexible) de mapper votre modèle de domaine à votre base de données.

Si vous utilisez une base de données relativement simple sous votre contrôle (comme dans, vous pouvez modifier les colonnes sans envoyer huit formulaires à un comité de révision de la division de la base de données), je vous recommande de commencer par SubSonic et de passer à NHibernate si SubSonic ne répond pas à vos besoins.

请先 登录 后评论
ignu

Tenez compte de la taille de votre équipe et de votre projet lorsque vous envisagez d'activer ActiveRecord.

D'après mon expérience, ActiveRecord est une abstraction au-dessus de NHibernate qui commence à fuir comme un tamis lorsque vous essayez des scénarios plus compliqués.

Si vous avez un schéma modérément à très compliqué ou non simple, restez avec NHibernate. Vous pouvez le trancher et le couper en dés presque à la perfection.

L'autre endroit où vous pourriez avoir des ennuis est lorsque vous avez besoin d'une requête modérément compliquée. ActiveRecord cache une grande partie de l'implémentation de NHibernate... mais vous en aurez besoin pour une requête compliquée, qui deviendra très difficile si vous n'êtes pas du tout familier avec HQL. Faites attention que les membres de l'équipe ne se contentent pas de pirater les bords au lieu d'apprendre NHibernate et HQL.

请先 登录 后评论
Colin Jack

Le conseil que j'ai reçu sur le sujet est que Subsonic n'évolue pas pour gérer des scénarios plus complexes et donc si vous suivez cette voie, vous vous retrouverez avec un travail essayant de passer à un ORM plus avancé.

Je suis donc plus intéressé par l'utilisation de NHibernate pour les cas complexes, Castle Active Record pour les cas plus simples et je garde un œil sur Fluent NHibernate qui devrait rendre la cartographie NHibernate beaucoup plus facile (surtout une fois que la prise en charge de la cartographie basée sur les conventions est améliorée).

请先 登录 后评论