Ε, αυτή την κουβέντα την είχα χάσει! Βλέπεις, ξεκίνησε όταν περίμενα τον ΟΤΕ να μεταφέρει τη γραμμή μου ... για ένα μήνα.
Καταρχήν, άλλο πράγμα το ORM, άλλο μα τελείως άλλο, μα εντελώς άσχετα άλλο είναι ο app server και το Remoting (το οποίο μας άφησε χρόνους μεταξύ άλλων). Στο Remoting δεν θα αναφερθώ, καθώς (πέρα από το ότι καταργήθηκε με το WCF) ήταν κατάλληλο μόνο για interprocess communication στο ίδιο μηχάνημα. Κάτι το οποίο άλλωστε η μαμά Microsoft το λέει από το 2003. Οι κατάλληλες τεχνολογίες για distributed apps ήταν πάντα τα Web Services (για Interop) ή τα Enterprise Services (για transaction management, security, lifecycle management κλπ). Όλα αυτά πλέον έχουν μπει κάτω από την ομπρέλα του WCF.
Μιλώντας τώρα για ORM, ο χώρος στο .NET είναι σε συνεχή αναβρασμό. Σε αντίθεση με τη Java, όπου το Hibernate είναι το Α και το Ω, στο .NET υπάρχουν δεκάδες εργαλεία με παρόμοια χαρακτηριστικά αλλά διαφορετικές φιλοσοφίες. Το NHibernate είναι κλασσικό ORM με mapping files, αν και ως Open Source δεν προλαβαίνει να ακολουθήσει τις εξελίξεις της πλατφόρμας. Η ταχύτητα ανάπτυξης του όμως αυξάνεται συνεχώς καθώς αυξάνονται οι developers που το χρησιμοποιούν και συνεισφέρουν στο έργο. Το LLBLGen Pro από την άλλη βασίζεται στη δημιουργία κώδικα. Είναι επίσης πολύ καλό, με πολύ καλή υποστήριξη και features.
Το Φεβρουάριο του 2006 ο Jason Mauss έγραψε το How-To-Select an Object-Relational Mapping Tool for .NET όπου σύγκρινε περίπου 30 ORMs. Από τότε, σχεδόν όλα τα ORM έχουν εξελιχθεί σε σημείο που παρέχουν σχεδόν τα ίδια features! Διαφοροποιήσεις υπάρχουν πάντως σε πιο εξεζητημένα θέματα, όπως π.χ. κατά πόσο το ORM συνεργάζεται με το LINQ.
Για τους app server (και τί είναι ή εννοεί ο καθένας app server) θα απαντήσω αργότερα, αλλά η βασική ιδέα είναι: Τί παραπάνω από το WCF χρειάζεσαι? Ουκ ολίγα, αλλά η ερώτηση είναι σημαντική για να ξεχωρίσουν οι απαιτήσεις και τα προϊόντα
Παναγιώτης Καναβός, Freelancer
Twitter: http://www.twitter.com/pkanavos