it-swarm-fr.com

Quels sont les critères pour évaluer un orm pour.net?

Je cherche à évaluer les ormes.

J'ai utilisé subsonne , LINQ-TO-SQL et cadre d'entité . J'ai une équipe de développeurs allant des juniors aux personnes âgées.

Quels sont les critères d'évaluation d'un orm pour.net?

30
Nickz

C'est une question chargée.
[.____] Il y a beaucoup de très bons ormes qui approchent du sujet de différentes philosophies.
[.

Ce que vous devriez vous demander lors de la sélection d'un orj:

  1. Qu'est-ce que cela doit faire pour vous ?
    [.____] Si vous avez déjà un ensemble d'exigences pour votre application, vous devez sélectionner l'ORM qui correspond mieux à ceux-ci plutôt qu'à un "meilleur" hypothétique.

  2. Vos données sont-elles partagées ou juste locales ?
    [.____] Une grande partie de la poitrité dans ORM est causée par la manière dont ils traitent la concurrence et les modifications apportées aux données de la base de données lorsque plusieurs utilisateurs détentent une version des mêmes données.
    [.____] Si votre DataStore est destiné à un utilisateur unique, la plupart des ormes feront un bon travail. Cependant, posez-vous quelques questions difficiles dans un scénario multi-utilisateurs: comment le verrouillage est-il manipulé? Que se passe-t-il quand je supprime un objet? Comment affecte-t-il d'autres objets associés? L'ORM est-il proche du métal du backend ou est-il en train de mettre en cache beaucoup de données (amélioration des performances au détriment de l'augmentation du risque de détournement).

  3. L'ORM est bien adapté à votre type d'application ? Un orje particulier peut être difficile à travailler avec (beaucoup de performances aériennes, difficiles à coder) si c'est un service utilisé dans un service ou assis à l'intérieur d'une Application Web. Il peut être au contraire être idéal pour les applications de bureau.

  4. Devez-vous abandonner des améliorations spécifiques à la base de données ?
    [.____] Les ormes ont tendance à utiliser l'ensemble de dénominateurs le plus bas de SQL pour s'assurer qu'ils travaillent avec beaucoup de backend de base de données.
    [.
    [.____] une amélioration typique spécifique à la DB est une capacité de recherche en texte intégral par exemple; Assurez-vous que votre ormes vous fournit un moyen d'accéder à ces fonctionnalités si vous en avez besoin.

  5. Comment l'orèse gère-t-il les changements dans le modèle de données ?
    [.____] Certains peuvent mettre à jour le DB automatiquement dans une certaine mesure, d'autres ne font rien et vous devrez faire le bon travail vous-même; Autre fournit un cadre de traitement des changements qui vous permet de contrôler les mises à jour de la base de données.

  6. Faites votre esprit pour coupler votre application aux objets de l'ormission ou préférez-vous gérer les POCOS et l'utilisateur d'un adaptateur pour la persistance ?
    [.____] Le premier est généralement simple à gérer, mais créez des dépendances sur vos objets de données spécifiques à ORM partout, ce dernier est plus flexible, au coût d'un peu plus de code.

  7. Avez-vous besoin de transférer vos objets à distance ?
    [.____] Tous les ormes ne sont pas égaux lorsqu'il s'agit d'extraire des objets d'un serveur distant, examinez de près ce qui est possible ou impossible à faire. Certains sont efficaces, d'autres non.

  8. Y a-t-il quelqu'un que vous pouvez vous tourner vers l'aide ?
    [.____] Y a-t-il un bon soutien commercial? Quelle est la taille de la communauté autour du projet?
    [.____] Quels sont les problèmes que les utilisateurs existants ont avec le produit?
    [.____] Est-ce qu'ils reçoivent des solutions rapides?

Quelques ormes que j'ai regardés:

  • XPO
    [.____] Développeur Express: est petit et simple, Code-Centric. Ils l'utilisent pour leur cadre d'application expressapp .
  • NHibernate
    [.____] est libre, mais la courbe d'apprentissage est plutôt rare. Beaucoup de goodies mais il est difficile de trouver ce qui est vraiment pertinent parfois dans toute la documentation fragmentée.
  • llblgen pro
    Projet très mature, pas la plus simple mais beaucoup de pensée a été mise en place.
  • cadre d'entité
    [.____] arriver là-bas. Les dernières versions sont plutôt bonnes et la SP écoute, bien qu'elle soit toujours un peu jeune comparée à d'autres ormes plus matures.
  • dataObject.net
    [.____] a l'air prometteur, mais est également un peu nouveau pour risquer un projet important sur l'IMHO. Assez actif cependant.

Il y a beaucoup d'autres bien sûr.

Vous pouvez consulter le site controversé Battle ORM qui répertorie des points de repère de performance, bien que vous devez savoir que la vitesse brute n'est pas nécessairement le facteur le plus important de votre projet et que les producteurs du site Web. est dataObject.net.

43
Renaud Bompuis

J'utilise NHibernate et je l'ai trouvé plutôt bien.

Dans mon cas, lié à une base de données MS SQL, mais vous pouvez vous connecter à d'autres bases de données.

Il ne faut pas longtemps pour se lever et courir - il suffit de mapper votre objet sur le modèle - J'utilise un fichier XML, mais vous pouvez le faire couramment le code. Il y a une grande communauté, et personnellement, j'ai trouvé Ayende's Travailler pour être très utile - j'utilise NHProf qui est un outil de profilage SQL.

J'utilise principalement les fonctions de la boîte - mappage d'objet droit, mais j'ai également utilisé la langue de la requête Hibernate, qui est assez facile à prendre en main.

14
Sam J

Malheureusement, dans mes trois derniers emplois, nous avons eu trois ormes cultivés à domicile. Dans chaque cas, ils suquèrent principalement des raisons diverses.

J'ai récemment évalué - Framework d'entité 4 et son soutien POCO (une belle pas à pas - ici ) et je suis vraiment impressionné par la façon dont il reste vraiment hors de mon visage et me fait sentir Comme je suis à nouveau la programmation plutôt que d'élevage de données.

6
Jesse C. Slicer
6
Amir Rezaei

[Disclaimer: Je travaille pour DevExpress]

Vous pouvez voir des captures d'écran d'applications typiques créées par DevExpress Application Frameworks ici . Cette page contient également une très bref annonce de nos produits. Pour des informations plus détaillées sur Pourquoi , je vous suggère de vérifier les pages de produit respectives de notre site Web.

Quant à Devexpress XAF et XPO, ici est une bonne explication sur la raison pour laquelle choisir nos cadres d'application. De plus, nous fournissons un soutien et une documentation, ce qui est également important et mérite d'être mentionné. N'hésitez pas à nous contacter en cas de questions.

3
Dennis Garavsky

J'aime beaucoup Linq à SQL. C'est simple et a un designer décent. Cependant, j'espère de la fin de la vie en faveur du cadre d'entité. J'aimerais pouvoir tirer parti de la capacité de modifier les générateurs afin que je puisse avoir des objets personnalisés.

Le plus grand avantage que ceux-ci ont sur les autres (à mon avis) sont qu'ils sont hors de la boîte avec vs. C'est également un négatif dans lequel vous êtes à la merci de la SP (voir Linq à SQL).

3
Jeremy Roberts

Nous utilisons NHibernate + Nibernate fluide, avec LINQ-TO-SQL sur de petits projets. La raison en est que:

1) (pas la principale raison) NHibernate semble avoir un facteur "respect" plus élevé parmi les développeurs (est-ce vrai?),

2) Par rapport à LINQ-TO-SQL, NHibernate permet la cartographie de l'orme entre les objets DB et les entités qui ne correspondent pas à 1 à 1,

3) Nous n'avons pas largement comparé NHibernate à l'entité Framework 4.0 mais voici une bonne comparaison: http://ayende.com/blog/archive/2010/01/05/snibernate-vs.-entity-Framework- 4.0.aspx

nHibernate a un peu une courbe d'apprentissage escarpée et ses cartes XML peuvent être assez verbeuses, mais commencez par la documentation de site NHibernate fluide et fonctionnent votre chemin en arrière.

2
fjxx

Eh bien, il n'y a pas de choix "meilleur", mais je dirais que le vieil Linq régulier à SQL répond à vos besoins. Ce n'est pas un "vrai" orm en soi, mais il est très léger et vous donne la flexibilité nécessaire pour écrire du code sans être conscient, si cela a du sens. Ce que je veux dire, c'est que vous pouvez continuer à écrire du code comme normal, sans avoir à être vraiment au courant de Linq autres que le (s) fichier dbml. Vous pouvez toujours écrire des abstractions à ce sujet, en utilisant les motifs de référentiel ou de passerelle et L2S remplit le rôle principal d'un orj, qui est de contourner l'inadéquation relative à l'objet.

L'entité framework est un peu lourd et, bien que je ne faisais qu'un peu, c'est plus "dans ton visage" que de base Linq à SQL, mais EF est beaucoup plus un véritable orje que Linq. Je regarderais tous les critères que vous recherchez dans une orèse. Est-ce juste parce que vous voulez éviter de devoir écrire SQL cru ou, pire, avoir des centaines de procédures stockées? Avez-vous besoin de fonctionnalités supplémentaires que Linq brut à SQL ne peut pas fournir? Vous devez répondre à ces questions, mais en fonction de votre réponse brève ("léger et facile à utiliser"), je pense que Linq est légèrement plus facile que quelque chose comme subsonique et est intégré à Visual Studio.

1
Wayne Molina

Je vous conseillerais de regarder - Devexpress XPO . Ceci avec DevExpress XAF fera vie de tout développeur facile une fois que sa courbe d'apprentissage est croisée.

1
Yogi Yang 007

Il n'y a pas de "meilleur" cadre orm car ils ont tous différentes combinaisons de forces et de faiblesses et qu'il a tendance à être le cas que si les développeurs choisissent de se concentrer mieux sur la fabrication d'une vase, il existe d'autres domaines qui souffrent en comparaison (code d'abord vs Modèle Première base de données VS en premier).

Il y a, d'autre part, un certain nombre de très bonnes dont certaines seront une meilleure correspondance à vos circonstances personnelles et philosophie que d'autres.


EDIT: Pour ce que sa valeur, j'utilise actuellement Linq vers SQL - principalement parce que c'est là en partie parce que cela fait beaucoup de droit à un effort minimal et progressera probablement vers le cadre d'entité "car il y a de la même manière qu'il y ait aussi Beaucoup sur EF4 qui a raison ainsi que des trucs qui ne vont pas). La préoccupation, en particulier avec ce dernier, devrait être une performance, mais pour la plupart de mes affaires, ce n'est pas une question énorme et la capacité de gérer des données dynamiques et des ODATA à partir des modèles (L2S et EF) a des avantages considérables pour moi en termes de " pas cher "gagne.

1
Murph

Nous avons eu de la chance avec l'ensemble de l'entité. Notre situation est quelque peu inhabituelle, cependant, nous effectuons une collecte de données pour l'équipe de reporting afin de concevoir la base de données. Nous obtenons la base de données, puis utilisez simplement EF pour générer les classes d'accès aux données. Fonctionne idéal pour nous, mais nous ne faisons que des charges de données en vrac, je ne peux donc pas garantir à quel point cela fait dans un environnement plus transactionnel.

1
TMN

NHibernate (+ fluentnibernate) serait l'option par défaut pour moi. Il est très flexible, extensible et robuste. Il a une énorme quantité d'utilisateurs et il est très activement entretenu. L'inconvénient est la courbe d'apprentissage escarpée.

Lightspeed de Mindscape est simple et convivial, mais toujours assez flexible et capable. Il a une surface de concepteur comme L2S/EF et une implémentation de l'unité de travail.

1
rmac

ECO :) C'est beaucoup plus qu'un orj, tandis que les machines d'état et l'OCL exécutable (nommément EAL) sont des supports. Il existe une version gratuite avec une limitation de 12 classes de domaine que je pense devoir être assez soignée pour de petits projets.

0
William