IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Les librairies ORM


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    -
    Inscrit en
    Septembre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : -

    Informations forums :
    Inscription : Septembre 2014
    Messages : 4
    Par défaut Les librairies ORM
    Bonjour !

    Je cherche une librairie pour faire de l'ORM du style NHibernate, je suis actuellement coincé.
    Je suis en train de coder un serveur de jeu, pour être précis j'ai besoin de 2 base de données, la première sera accédée par 2 serveurs, l'autre sera accédée par 3 serveurs.

    J'ai utilisé Fluent.NHibernate pendant plusieurs mois, et je ne lui reproche pas grand chose, si ce n'est son temps de démarrage trop important (même en utilisant la sérialisation de configuration) et le fait de ne pas faire de "migration" de la base de données (obligé de recréer les BDD à chaque changement de schéma ..). En général il me fallait à peu près 15 secondes.

    J'ai tenté Entity Framework hier et j'ai déjà beaucoup plus de choses à reprocher notamment:
    • Ne pas pouvoir utiliser les types non signés
    • La lenteur encore plus hallucinante
    • Etre forcé à utiliser une clé primaire

    et j'en passe sûrement ...

    Pour ce qui est de la lenteur de EF6, voici mes tests:
    Compilation en release, x64, NET Framework 4.5.2 + RyuJIT
    3 entités

    Temps pour context.Database.Initialize = 62 864 ms
    2è essai = 47 242 ms
    Consommation RAM: 37Mo

    Je sais bien qu'il y a pas mal de boulot dérrière, mais je suis encore en développement de mon serveur, je ne peux pas me permettre 1 minute d'initialisation dans la mesure où je dois redémarrer mon serveur à peu près toutes les 2 minutes. Qu'est-ce que ça sera quand j'aurais une vingtaine d'entités, et une fois que ma DB sera sur un serveur distant .. ?

    Si vous pouvez me conseiller, merci

  2. #2
    Membre averti
    Homme Profil pro
    Business Developer chez SoftFluent
    Inscrit en
    Juin 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Business Developer chez SoftFluent
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 38
    Par défaut CodeFluent Entities
    Hello Mato,

    Je te conseille de jeter un coup d'œil à CodeFluent Entities. Pour faire simple, tu commences par définir un modèle métier de manière graphique depuis Visual Studio et tu génères ta base SQL et ta couche d'accès aux données (C#).
    Rien ne t'empêchera par la suite d'étendre le code généré pour ajouter des comportements spécifiques à ton application.

    Tu as une version pour utiliser le produit de manière gratuite (Personnel).

    Ensuite, pour répondre à tes différents points:

    J'ai utilisé Fluent.NHibernate pendant plusieurs mois, et je ne lui reproche pas grand chose, si ce n'est son temps de démarrage trop important (même en utilisant la sérialisation de configuration) et le fait de ne pas faire de "migration" de la base de données (obligé de recréer les BDD à chaque changement de schéma ..). En général il me fallait à peu près 15 secondes.
    Pas de temps de démarrage à ma connaissance.

    Le produit contient un moteur différentiel qui permet une génération continue à partir du modèle, avec conservation des données existantes. C'est à dire que le système va analyser ta base existante pour générer le différentiels (ajout de colonnes, mise à jour des contraintes d'intégrité nécessaires, etc.). Tu n'auras donc pas de problèmes de ce type.

    J'ai tenté Entity Framework hier et j'ai déjà beaucoup plus de choses à reprocher notamment:
    • Ne pas pouvoir utiliser les types non signés
    • La lenteur encore plus hallucinante
    • Etre forcé à utiliser une clé primaire
    Pas de problème pour utiliser la majorité des types connus y compris les non signés.

    Pour la lenteur, teste par toi-même mais le code généré est lisible et l'accès aux données se fait via des procédures stockées générées. Tu pourras donc facilement comprendre ce que fais le produit en lisant le code.

    La clé primaire n'est pas obligatoire mais pourquoi s'en passer sur une base de données relationnelle ?

  3. #3
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2008
    Messages
    381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2008
    Messages : 381
    Par défaut
    Pour EntityFramework j'utilise l'approche Database-First, j'ai une centaine d'entité et le temps d'initialisation est tellement court que je ne m'en aperçoit même pas. C'est peut-être un problème de configuration, parce que c'est vraiment bizarre comme chiffre.

Discussions similaires

  1. Actualiser les librairies
    Par Madmac dans le forum Linux
    Réponses: 2
    Dernier message: 02/12/2005, 05h28
  2. Question sur les librairies .lib
    Par elvivo dans le forum Autres éditeurs
    Réponses: 5
    Dernier message: 05/10/2005, 20h06
  3. [Ada 95] où trouver les librairies ??
    Par kindool dans le forum Ada
    Réponses: 1
    Dernier message: 23/05/2005, 17h59
  4. [ClassPath]Comment inclure les librairies dans un .BAT
    Par Kyti dans le forum Général Java
    Réponses: 2
    Dernier message: 26/03/2005, 08h07
  5. Problème avec les librairies ZLIB et LIBPNG
    Par VenusX117 dans le forum Bibliothèques
    Réponses: 1
    Dernier message: 14/03/2005, 14h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo