"... θα κάνεις και από μόνος σου κάτι παρόμοιο."
Πως το κατάλαβες? Με αυτό τον τρόπο είχαμε καταφέρει πάντως να φτιάχνουμε εφαρμογές σε ελάχιστο χρόνο. Βλέπεις ΚΑΙ το business logic (ως actions των business objects) ήταν αποθηκευμένο στη βάση σε μορφή VBScript. Τα πεδία των business objects διαβάζονταν σαν object1.Property("XYZ"). Τα περιεχόμενα των business objects προέρχονταν από
disconnected shaped recordsets. Τα relations ήταν SQL statements.
Το αποτέλεσμα ήταν ότι η ανάπτυξη της πλατφόρμας πήρε αρκετό χρόνο, αλλά όχι τόσο όσο ακούγεται (περιείχε και πολλά άλλα καλούδια βεβαίως-βεβαίως). Η παραμετροποίηση μιας συγκεκριμμένης εφαρμογής χρειαζόταν ... όσο χρόνο έπαιρνε στον παρμετροποιητή να γράψει τα απλά SQL! Και παρά το ότι φοβόμασταν ότι η ταχύτητα θα επηρρεαστεί αρνητικά, το σύστημα πέτυχε τρελές επιδόσεις στα stress test (χιλιάδες ταυτόχρονοι χρήστες), πόσο μάλλον στην κανονική λειτουργία (150 χρήστες). Και χωρίς queues!

Ο σημαντικότερος λόγος γι αυτό ήταν ότι το data manipulation γινόταν στον SQL Server με stored procedures αντί για τη μνήμη με objects. Αλλά και τα stored procedures κατασκευάζονταν αυτόματα από τα metadata (άθλια λέξη).
Πιστεύω ότι κάπου εκεί πρέπει να κρύβεται και το μυστικό για τη σωστή χρήση του nHibernate. Για να πετύχει κανείς καλό concurrency θα πρέπει να σηκώνει όσο το δυνατόν λιγότερα αντικείμενα στη μνήμη και να μεταφέρει όσο από τον κώδικα πειράζει data σε stored procedures ή έστω parameterized queries.
Τώρα με το .NET βλέπω τα datasets, βλέπω το CodeDom και μου τρέχουν τα σάλια! Δεν αντέχω, κάποια στιγμή θα την ξαναφτιάξω την ιστορία με .NET! (Και τα ίδια ακούω και από τους υπόλοιπους του παλιού team!)
Παναγιώτης Καναβός, Freelancer
Twitter: http://www.twitter.com/pkanavos