WCF configuration blues


Διάβαζα πριν λίγο το post του Γιώργου Χατζημανώλη και θυμήθηκα τις προάλλες που πάλευα με τα config αρχεία καθώς προσπαθούσα να σετάρω ένα WCF Service και τον αντίστοιχο client. H όλη διαδικασία μου έσπασε τα νεύρα! Και αυτό γιατί όταν χρησιμοποιείς τo out-of-box configuration όλα είναι ωραία και καλά. Όταν όμως θέλεις να υλοποιήσεις σενάριο όπως "SQL role & membership provider over HTTPS" πρέπει να πάρεις ανάσα και να βουτήξεις στα βαθειά νερά των config αρχείων. Μετά από αρκετή προσπάθεια και εν τέλει με τη πολύτιμη βοήθεια του "Windows Communication Foundation Step by Step" τα κατάφερα. Κατόπιν σκέφτηκα ότι όλα αυτά δεν θα έπρεπε να είναι καθόλου έτσι! Θα έπρεπε να υπήρχε ένας wizard-style scenario-driven config editor:

– Παρακαλώ, τι θα θέλατε;

– Θα ήθελα ένα secure public WCF service, hosted σε IIS με CardSpace authentication

– Φυσικά κύριε, ορίστε το web.config, το client app.config και αυτό το generated code sample για να τα δοκιμάσετε.

– Αχ, υπέροχα, ευχαριστώ πολύ.

Αυτό λέγεται "productivity". Αν ήθελα να κάνω edit σε XML αρχεία, δεν θα έγγραφα σε VB. Θα μου πείτε, υπάρχει ο WCF Configuration Editor αλλά ουσιαστικά πρόκειται για έναν property editor. Πιστεύω ο ρόλος μου είναι να λαμβάνω αποφάσεις. Που θα γίνεται hosting το service; Τι security μηχανισμό θα χρησιμοποιεί; Τι transport μηχανισμό; Δεν με νοιάζουν τα υπόλοιπα… Μακάρι να υπήρχε αυτό το wizard-style scenario-driven tool να καλύπτει το 80% των τυπικών σεναρίων και ας έκανα την βουτιά στο web.config για το υπόλοιπο 20% παρέα με το reference guide. Εξάλλου, εκεί που πραγματικά πάσχουν τα out-of-box generated services είναι η έλλειψη security μηχανισμών καθώς σχεδόν πάντοτε ένα service όταν πρόκειται να βγει σε production θα πρέπει να προστατευθεί.

Σίγουρα, το WCF παρέχει τεράστιο πλήθος από πιθανά configurations. Ωστόσο αν ο τρόπος δημιουργίας ενός set από ερωτήσεις και αντίστοιχα configuration settings είναι ανοιχτός, θα μπορούσε να να δημιουργηθεί ένα δημόσιο repository (βλ. Codeplex) για να συνεισφέρει ο καθένας. Πολύ ενδιαφέρον project αλλά δυστυχώς δεν ξέρω τόσο καλά WCF για να το ξεκινήσω…

Advertisements