Υποηχητικά Vs NHibernate

ψήφοι
72

Ποια είναι η συναινετική για το πότε πρέπει να χρησιμοποιήσετε ένα από αυτά τα εργαλεία adversed στην άλλη; Θεωρώ υποηχητικά πολύ χρήσιμη από την άποψη της να γίνουν τα πράγματα γρήγορα, αλλά σε μεγάλα έργα τείνει όχι σε κλίμακα, και τους δεσμούς της μοντέλου τομέα σας με το μοντέλο της βάσης δεδομένων σας. Αυτό είναι όπου NHibernate έρχεται δεδομένου ότι σας δίνει ελαφρύ POCOs που δεν έχουν σχέση με το μοντέλο της βάσης δεδομένων σας, αλλά ο χρόνος εγκατάστασης είναι πολύ μεγαλύτερη.

Δημοσιεύθηκε 04/08/2008 στις 17:29
πηγή χρήστη
Σε άλλες γλώσσες...                            


15 απαντήσεις

ψήφοι
83

Παίρνω αυτή την ερώτηση πολύ και πραγματικά έρχεται κάτω σε πόσο θέλετε να παιδεύεστε. Δεν μπορώ να σας πω πόσο επιζήμια σχόλια Chris Cyvas της RE Υποηχητικά κλιμάκωση ήταν - και έχω να ανταποκρίνεται σε αυτά από τότε :(.

Η συμφωνία είναι - διατρήσεων-σοφός, υποηχητική κλίμακες πολύ όμορφα. Από την άποψη της ανάπτυξης του έργου - οποιοδήποτε εργαλείο που χρησιμοποιείτε θα απαιτήσει την προσοχή σας. Ακόμη και NHibernate.

Έγραψα μια θέση για το πώς να χρησιμοποιήσετε το αποθετήριο μοτίβο με DI (όπως θα κάνατε με NHIb ή οποιοδήποτε εργαλείο για εκείνο το θέμα) με Υποηχητικά 2.1:

http://blog.wekeroad.com/blog/subsonic-writing-decoupled-testable-code-with-subsonic-2-1/

Έγραψα επίσης μια θέση για την απόδοση των υποηχητικών:

http://blog.wekeroad.com/blog/subsonic-scaling/

Η ελπίδα αυτό βοηθά.

Απαντήθηκε 12/09/2008 στις 22:54
πηγή χρήστη

ψήφοι
45

Θα ήθελα να συστήσω Υποηχητικά αν το έργο σας λειτουργεί με την άποψη ActiveRecord ότι η βάση δεδομένων είναι το μοντέλο σας. Θα πάρετε μία κατηγορία ανά τραπέζι και όλα λειτουργούν ακριβώς μαγικά. Φυσικά μπορείτε να ρυθμίσετε και να παρακάμψετε τα πράγματα, αλλά αν (ή το έργο σας) ουσιαστικά διαφωνούν με την προσέγγιση της κατηγορίας ανά τραπέζι, θα δούμε NHibernate αφού ξεκινά με την πιο σύνθετη (αλλά πιο ευέλικτη) προσέγγιση της χαρτογράφησης σας μοντέλο τομέα στη βάση δεδομένων σας.

Εάν χρησιμοποιείτε μια σχετικά απλή βάση δεδομένων που είναι υπό τον έλεγχό σας (όπως το, μπορείτε να αλλάξετε τις στήλες χωρίς την αποστολή οκτώ μορφές σε μια αναθεώρηση της επιτροπής εποπτείας τμήμα της βάσης δεδομένων), θα ήθελα να συστήσει ξεκινώντας με Υποηχητικά και κινείται προς NHibernate αν Υποηχητικά δεν ανταποκρίνονται στις ανάγκες σας.

Απαντήθηκε 06/08/2008 στις 22:47
πηγή χρήστη

ψήφοι
31

Για ό, τι αξίζει να του ... Είχα την ευκαιρία να χρησιμοποιήσει και τις δύο τεχνολογίες είναι αρκετά abit περισσότερα από την αυτή την ερώτηση. Και έχω να μείνει η οποία, αν αυτές οι τεχνολογίες θα επιλέξετε τα θέματα πολύ λίγο. Σίγουρα NHibernate επιτρέπει επιχειρηματικές οντότητες σας να είναι ελαφρώς λιγότερο συνδεδεμένο με τη δομή της βάσης δεδομένων σας, αλλά εξακολουθώ να διαπιστώσετε ότι υπάρχουν πολλές περιπτώσεις όπου πρέπει ακόμα να κάμψει τη θέληση της βάσης δεδομένων.

Κατά τη γνώμη μου, ο μόνος αληθινός τρόπος για να διαχωρίζει εντελώς Τομέας μοντέλο σας από το μοντέλο βάσης δεδομένων σας είναι να γράψετε τη δική σας DTOS (ουσιαστικά POCOs για το πέρασμα των δεδομένων γύρω), και στη συνέχεια να χαρτογραφήσει τους πίσω στο ORM της επιλογής σας στο στρώμα των δεδομένων σας. Αλλά στις περισσότερες περιπτώσεις, αυτή η προσέγγιση θα μου περισσότερο ταλαιπωρία από την αξία του.

Απαντήθηκε 05/03/2009 στις 10:23
πηγή χρήστη

ψήφοι
13

Ελαφρώς εκτός θέματος, αλλά στο ίδιο πνεύμα. Έχετε κοίταξε Κάστρο ActiveRecord είναι γραμμένο πάνω από NHibernate και καταργεί την ανάγκη να περνούν το χρόνο τους δημιουργώντας αντιστοιχίσεις XML από τον κώδικα στη βάση δεδομένων. Όπως NHibernate μπορείτε να δομήσει αντικείμενα domain σας όπως εσείς θέλετε και στη συνέχεια να δημιουργήσει ένα σχήμα βάσης δεδομένων από αυτή τη δομή.

Χρησιμοποιώντας ActiveWriter , ένα συνέβαλε εργαλείο, μπορείτε εύκολα να χαρτογραφήσει από τη βάση δεδομένων σας σε αντικείμενα τομέα.

Απαντήθηκε 05/08/2008 στις 06:07
πηγή χρήστη

ψήφοι
9

Μπορείτε να εξετάσει την εξέταση άριστα NHibernate? καθιστά τη διαχείριση NHibernate ένα αεράκι. Δεν είστε σίγουροι για το πόσο δύσκολο θα είναι για τη μετάβαση ενός υπάρχοντος σχήματος, αλλά εάν είστε οικοδόμηση μιας νέας εφαρμογής είναι ωραίο να καθορίσει το μοντέλο τομέα και τη δημιουργία της βάσης δεδομένων σε σχεδόν οποιονδήποτε διακομιστή DB μπορείτε να σκεφτείτε. Από την ανάγνωση τα άλλα σχόλια εδώ, νομίζω άριστα NHibernate φέρνει NHibernate στο ίδιο επίπεδο με Υποηχητικά για την ευκολία της διαμόρφωσης.

Απαντήθηκε 04/03/2009 στις 21:17
πηγή χρήστη

ψήφοι
7

Έχω γράψει ένα post στο blog πρόσφατα για το .NET ΝΤΥΠΑ που έχει υποηχητικά σε αυτό, και ActiveRecord. Από την εμπειρία μου, αυτό εξαρτάται από το τι έργο κάνει, υποηχητική λειτουργεί πολύ καλύτερα αν προέρχονται από τον SQL υπόβαθρο, αλλά NHibernate έχει περισσότερα ontop του. ActiveRecord είναι καλό για μικρότερα έργα, δεν είμαι πεπεισμένος ότι είναι πιο γρήγορα για μεγάλα έργα από την προσκόλληση σε NHibernate.

Απαντήθηκε 07/10/2008 στις 11:10
πηγή χρήστη

ψήφοι
7

Δεν μπορώ να δώσω μια καλή σχέση και δεν έχω ακόμα χρησιμοποιηθεί στην πραγματικότητα NHibernate για ένα έργο, αλλά έχω χρησιμοποιήσει Υποηχητικά και ήταν πολύ ικανοποιημένος με αυτό. Μέχρι στιγμής, δεν έχω χτυπήσει σημαντικά εμπόδια όταν το χρησιμοποιείτε.

Ελέγξτε έξω αυτό το post από τον Rob Conery, ένας από τους δημιουργούς του Υποηχητικά. Μιλά για το πώς να αποσυνδεθεί Υποηχητικά κωδικό σας από το υπόλοιπο του app. Αναφέρει ακόμη και το γεγονός ότι αυτή η αρχιτεκτονική θα σας δώσει τη δυνατότητα να ανταλλάξουν αργότερα Υποηχητικά για κάποιο άλλο στρώμα πρόσβασης δεδομένων, όπως NHibernate ή LINQ σε SQL.

Ξέρω ότι δεν απάντησε πραγματικά στην ερώτησή σας, αλλά ελπίζω ότι αυτό βοηθά ακόμα.

Απαντήθηκε 04/09/2008 στις 20:25
πηγή χρήστη

ψήφοι
5

Έχω αξιολογούνται τόσο και πιστεύω ότι δεν θα ήταν δίκαιο να συστήσει ένα πάνω στο άλλο χωρίς να καταλαβαίνουν ποιοι είναι οι στόχοι σας. Στην ερώτησή σας ανέφερε τις διαφορές καλά και πιστεύω ότι πρέπει να είναι αποφασιστικός παράγοντας σας. Προσωπικά έχω χρησιμοποιήσει και τα δύο και θα συνεχίσει να χρησιμοποιεί τόσο ανάλογα με το έργο.

  • NHibernate είναι η επιλογή μου για τα έργα μεγαλύτερης κλίμακας λόγω χρήσεις του ελαφρύ POCO του. Αν έπρεπε να στραφούν ποτέ έξω ORM μου «πιστεύω» αυτό θα ήταν πολύ πιο εύκολο να refactor.
  • Υποηχητικά είναι η επιλογή μου, όταν έχω ένα έργο μικρότερης κλίμακας. Πιστεύω ότι οι επιδόσεις σοφό Υποηχητικά κλίμακες καλά. Ωστόσο, αισθάνομαι καλά σε συνδυασμό με αυτό, επειδή είναι τόσο χαραγμένο στο έργο μου. Σε μικρότερο έργο μπορώ ακόμα να το αλλάξετε έξω, διότι ο κώδικας βάση είναι τόσο μικρό και πραγματικά βοηθά να σχίσει έξω κωδικό όπως διαφημίζεται.
Απαντήθηκε 26/01/2009 στις 14:37
πηγή χρήστη

ψήφοι
4

Και πάλι ελαφρώς εκτός θέματος, αλλά εγώ θα το δεύτερο κάστρο ActiveRecord - αντί να χρησιμοποιούν τη βάση δεδομένων, όπως το μοντέλο σας (υποηχητικά προσέγγιση) ή δαπάνες ώρες στο σπαγγέτι XML (NHibernate προσέγγιση) απλά μέρος αποδίδει στις τάξεις μοντέλο σας.

Μπορείτε ακόμη και να πάρετε ActiveRecord να δημιουργήσει το σχήμα της βάσης δεδομένων σας.

Έχουμε χρησιμοποιήσει αυτήν την προσέγγιση σε πολύ λίγα έργα τώρα και τα οφέλη είναι τα εξής:

  • Εύκολη διαδρομή αναβάθμισης σε NHibernate εάν απαιτείται στο μέλλον
  • Υποστήριξη για απλά μοντέλα κληρονομιά - για παράδειγμα. Αυτοκίνητο -> Όχημα
  • Το σχήμα αυτό δημιουργεί το πιθανότερο είναι πως θα έχετε δημιουργήσει έτσι κι αλλιώς, έτσι ώστε να μπορείτε να περάσετε περισσότερο χρόνο για την οικοδόμηση της εφαρμογής αντί να ανησυχείτε για τη διατήρηση μοντέλο / db σας σε συγχρονισμό.
Απαντήθηκε 16/09/2008 στις 13:15
πηγή χρήστη

ψήφοι
4

Νομίζω ότι λίγο πολύ είναι καρφωμένο. Υποηχητικά δημιουργεί κώδικα, έτσι ώστε τα αντικείμενα των επιχειρήσεων σας θα είναι αντανακλαστικό της δομής της βάσης δεδομένων σας. NHibernate χρησιμοποιεί αρχεία χαρτογράφησης που χαρτογραφήσει την επιχείρησή σας αντικείμενα στη βάση δεδομένων, ώστε τα αντικείμενα σας μπορεί να δομηθεί όπως θέλετε.

Πόσο μεγάλο του έργο είναι αυτό; Θα υπάρξει απαιτείται μακροπρόθεσμη στήριξη; Είναι η σχέση κόστους-αποτελεσματικότητας των υποηχητικά πρόκειται να αντισταθμίσουν τυχόν προβλήματα κλιμάκωση;

Απαντήθηκε 04/08/2008 στις 18:12
πηγή χρήστη

ψήφοι
3

Εξετάστε την ομάδα σας και το μέγεθος του έργου κατά την εξέταση ActiveRecord.

Σύμφωνα με την εμπειρία μου, ActiveRecord είναι μια αφηρημένη έννοια στην κορυφή των NHibernate που αρχίζει να διαρρέει σαν ένα κόσκινο, όταν προσπαθείτε πιο περίπλοκα σενάρια.

Αν έχετε μια μέτρια έως πολύ πολύπλοκες ή μη απλή σχήμα, ραβδί με NHibernate. Μπορείτε να φέτα και ζάρια να αγγίζει την τελειότητα.

Το άλλο μέρος που θα μπορούσε να μπει σε μπελάδες όταν χρειάζεστε ένα μετρίως πολύπλοκο ερώτημα. ActiveRecord κρύβει πολλά εφαρμογής NHibernate ... αλλά θα το χρειαστείτε για ένα πολύπλοκο ερώτημα, το οποίο θα γίνει πολύ δύσκολη, αν είστε απόλυτα εξοικειωμένοι με HQL. Να είστε προσεκτικοί μέλη της ομάδας όχι μόνο hack μακριά στα άκρα, αντί της εκμάθησης NHibernate και HQL.

Απαντήθηκε 02/10/2008 στις 20:26
πηγή χρήστη

ψήφοι
3

Εμείς bootstrapped με υποηχητικά και τώρα προσπαθούν να αξιολογήσουν αν θέλουμε να στραφούν σε NHibernate τώρα που βρισκόμαστε στα σημεία του πόνου των υποηχητικών.

άλλη επιλογή μας είναι να δημιουργήσουμε κάποια μέση λύση όπου χρησιμοποιούμε υποηχητική να διερευνούν και να φορτώσει αυθαίρετα αντικείμενα με τη λειτουργικότητά τους «εκτέλεση ως δακτυλογραφημένο κατάλογο» που κάνει ένα όνομα χαρτογράφηση βασίζεται στα ανοικτά της αυθαίρετης δήλωση SQL στυλ LINQ. Ή για να προσπαθήσουμε και να αναδημιουργήσει ορισμένα από αυτά σε NHibernate και refactor τα υπόλοιπα.

Έτσι λέω υποηχητικών νόημα σε μικρές εφαρμογές, αλλά συντήρησης σε υποηχητική εφαρμογές παίρνει πολύ τριχωτό, έχουμε ιδιαίτερα δύσκολες στιγμές με επικάλυψη κωδικό επικύρωσης και πριν / μετά το κωδικό προκάλεσε τα γεγονότα. Για μια ενεργό μοτίβο ρεκόρ, υποηχητικά είναι σίγουρα το 80% εκεί, αλλά δεν Κάτι σε φύλλο τρόπο, και να σας σταματήσει από το να έχουν κανένα πραγματικό έλεγχο της ιεραρχίας κληρονομικότητας σας, αφού κάθε τάξη πρέπει να κληρονομήσουν ένα τραπέζι για να πάρει πίσω σε εκείνο το τραπέζι.

Απαντήθηκε 30/08/2008 στις 07:18
πηγή χρήστη

ψήφοι
2

Πιστεύω ότι θα πρέπει να επιμείνουμε σε αυτό που μπορείτε να χρησιμοποιήσετε το καλύτερο. Ο απώτερος στόχος είναι η παραγωγικότητα και η καλή απόδοση κωδικού ποιότητας. Εάν γνωρίζετε Υποηχητικά μέσα και έξω, στη συνέχεια, να επιμείνουμε σε αυτό και αν γνωρίζετε NHibernate σε βάθος ραβδί για να NHibernate. Αυτό είναι πολύ υποκειμενικό θέμα. Θα πρέπει επίσης να εξετάσει το γεγονός ότι αυτό που σας ομάδα-μέλος που έχει εμπειρία με. Αν είστε καλός σ 'αυτό θα είστε σε θέση να διατηρήσει εύκολα.

Έχω δει τα μεγάλα έργα που χρησιμοποιούν Υποηχητικά ενώ NHibernate είναι ήδη γνωστά και χρησιμοποιούνται ευρέως.

Η απόφαση του να πάρει ORM δεν εξαρτάται μόνο από την ίδια την ORM.

Απαντήθηκε 03/11/2009 στις 06:52
πηγή χρήστη

ψήφοι
2

Αγκαλιάστε την Αντίσταση Ασυμφωνία!

κοίτα αυτό

:)

Ή δεν το κάνουν. Αν θέλετε επιδόσεις, το κάνετε μόνοι σας. Αν θέλετε γρήγορη και εύκολη, πάει με NHibernate και ActiveRecord. Αν σας αρέσει να προσποιείται ότι ξέρει πραγματικά τι συμβαίνει σε επίπεδο πρόσβασης δεδομένων, χρησιμοποιήστε NHibernate και να καθίσει με XML όλη την ημέρα για να πάρετε μια πολλά σε πολλά θα ... Ή απλά ... εεε .. το κάνετε μόνοι σας - ADO.Net FTW!

Απαντήθηκε 08/02/2009 στις 02:51
πηγή χρήστη

ψήφοι
0

Η συμβουλή που έχω πάρει για το θέμα είναι ότι υποηχητικά δεν κλιμακωθούν για να χειριστεί πιο σύνθετα σενάρια και έτσι αν ακολουθήσουμε αυτό το δρόμο θα καταλήξετε με μια εργασία που προσπαθεί να ανταλλάξουν πάνω σε μια πιο προηγμένη ORM.

Είμαι συνεπώς ενδιαφέρονται περισσότερο για τη χρήση NHibernate για πολύπλοκες περιπτώσεις, Κάστρο Active Record απλούστερες περιπτώσεις και είμαι κρατώντας ένα μάτι για άριστα NHibernate που θα πρέπει να NHibernate χαρτογράφηση πολύ πιο εύκολο (ειδικά όταν η σύμβαση υποστήριξης χαρτογράφησης με βάση είναι βελτιωμένη).

Απαντήθηκε 25/10/2008 στις 15:20
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more