Je suis en train d'écrire un cadre pour une réécriture d'une application existante. Nous disposons d'un modèle de données d'environ 900 tableaux avec 11 000 champs au total et de bases de données d'environ 120 Go sur le terrain. Les éléments de base de ma nouvelle implémentation sont WPF, NHibernate 3, C#, .NET 4.0, NHibernate.Validator et Spring. L'application elle-même est très riche en données/transactions et notre plus grande installation compte environ 300 utilisateurs simultanés.Partir de zéro avec NHibernate: conseils pour une nouvelle application de grande taille
Quelques choses que je voudrais commentaires sur sont:
Spring un bon choix? Pourquoi devrais-je en choisir un autre (Castle?). J'ai des problèmes avec le temps de démarrage, mais j'ai été capable de ramener cela à 14 secondes. Cependant, je n'ai pas remarqué beaucoup de différence entre Spring et Castle. Des temps de démarrage plus courts sont bien sûr les bienvenus; J'utilise des champs d'identité, mais je comprends que ce n'est pas la meilleure option. Quelle alternative viable existe-t-il?
L'affichage des données se fait avec des sessions courtes, une par requête. D'autre part, la saisie de données a une session/transaction pour toute la durée d'un flux de travail, ce qui peut prendre jusqu'à 10-20 minutes maximum (2-4 minutes est plus habituel). Existe-t-il des alternatives à une session/transaction pour toute cette durée et comment pourrais-je l'installer?
Je suis ouvert à tous et toutes les entrées et souhaitent intégrer les idées des personnes qui ont travaillé plus longtemps, et ont plus d'expérience avec NHibernate que moi.
(BTW: Je sais que je suis en chemin sur ma tête, mais c'est la façon dont je le préfère.)
EDIT: j'étais trop sévère en ce qui concerne HiLo, mais après quelques recherches Guid de ne semblent adapter ma situation mieux.
HiLo * est une bonne idée. – Jay
J'ai lu plus à ce sujet et recherché par exemple. l'implémentation dans NHibernate, et je dois dire que ça a l'air intéressant. Je pense que j'ai mal interprété la documentation antérieure. Je vais considérer cela. –
J'ai décidé d'aller avec Guid. Ce choix est dû au fait que je dois prendre en charge la réplication, j'aime l'idée d'avoir des ID uniques sur toutes les entités et cela me laisserait trop peu de valeurs pour y mettre tous les ID. Le système hérité ne possédait pas d'ID de substitution pour toutes les entités, ce qui cause des problèmes pour ce nouveau système. –