Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Κατευθύνσεις για την ανάπτυξη database back-end (data entry app)

  •  19-10-2007, 10:21

    Κατευθύνσεις για την ανάπτυξη database back-end (data entry app)

    Ο τίτλος είναι γενικός, συνεπώς πρέπει να σας εξηγήσω αναλυτικά περι τίνος πρόκειται:

    Ο στόχος είναι μια εφαρμογή back-end η οποία θα παρέχει ένα data entry interface για βάσεις δεδομένων του SQL Server (2000/2005). Οι προϋποθέσεις και χοντρικά η λειτουργικότητα είναι όπως παρακάτω:

    - Δημιουργούμε ή λαμβάνουμε μια database με μη προκαθορισμένο/γνωστό schema στην οποία όμως έχουν οριστεί με ακρίβεια πίνακες, keys και constraints (relationships) μεταξύ των πινάκων.
    - Διαβάζουμε όλη αυτή τη μεταπληροφορία από την εφαρμογή μας και δημιουργούμε ASP.NET Webforms οι οποίες χρησιμεύουν για την καταχώρηση πληροφοριών στους πίνακες, ερμηνεύοντας με έξυπνο τρόπο τα constraints ωστε να αποφασίσουμε ή να έχουμε μια ένδειξη ποιές είναι οι κύριες οντότητές μας, ποιά τα lookups, και γενικά πώς ερμηνεύεται το σύνολο των δεδομένων μας.
    - Φυσικά, η εφαρμογή θα συμπεριφερεται "έξυπνα" και θα επιδέχεται περαιτέρω ρυθμίσεις (ορισμός περαιτέρω validations σε πεδία, ή fine-tuning του ποιες είναι οι κύριες οντότητές μας και του πώς διαμορφώνονται οι σχέσεις μεταξύ τους), μέχρι κάποιο επίπεδο. Η εφαρμογή θα έχει πρόσθετες δυνατότητες, όπως το να "μαντεύει" ή να δέχεται από εμάς ορισμούς για το ποιές ομάδες πινάκων αντιπροσωπεύουν π.χ. ιεραρχίες, ωστε να παράγεται το αντίστοιχο interface, και άλλα τέτοια όμορφα.

    Τα παραπάνω απλά αναφέρονται σαν ένδειξη του τι θα κάνει μια τέτοια εφαρμογή. Δεν εξετάζω σε αυτή τη δημοσίευση τη σκοπιμότητα ούτε το concept, μια και αυτά είναι παγιωμένα και υπάρχουν λόγοι για τους οποίους είναι απαραίτητη μια τέτοια λειτουργικότητα. Αυτό όμως που θέλω είναι να περιγράψω το πώς γίνεται αυτό σήμερα σε ένα prototype που υπάρχει κατασκευασμένο, και να παραθέσω πιθανές κατευθύνσεις στην ανάπτυξη της πραγματικής εφαρμογής ωστε να δούμε διαφορετικές απόψεις.

    Ετσι λοιπον υπάρχει σήμερα ένα prototype που λειτουργεί ως generator: Παράγει εφαρμογή ASP.NET 1.1 (σελίδες ASPX που κάνουν τις εργασίες που αναφέρθηκαν παραπάνω) δημιουργώντας τις με απλά string concatenations (τόσο το designer όσο και το code behind κομμάτι).

    Οι πιθανές κατευθύνσεις που έχουν πέσει στο τραπέζι για την ανάπτυξη της εφαρμογής σε full scale είναι οι εξής:

    ΠΡΟΣΕΓΓΙΣΗ 1: Code generation του code behind (είχα κάνει και παλιότερα μια ερώτηση για codedom) με καποιον τρόπο (αξιοποιώντας το codeDom, το myGeneration ή άλλο/αλλα APIs για τη δημιουργία του code behind. Για τη δημιουργία του designer / UI μέρους, μια template - based προσέγγιση. Εκεί θα ήθελα κάποιες προτάσεις / λύσεις. Ο,τι έχει αναφερθεί αυτή τη στιγμή περιλαμβάνει τα εξής εναλλακτικά σενάρια (ανεξαρτήτως βιωσιμότητας): String concatenation, XML/XSLT, codeDom, myGeneration ή myGeneration-like προσέγγιση.

    ΠΡΟΣΕΓΓΙΣΗ 2: Εναλλακτικά, δυναμική δημιουργία σελίδων στο runtime (σελίδες που κατασκευάζονται διαβάζοντας τα metadata της βάσης και τις πρόσθετες δικές μας ρυθμίσεις στο runtime). Σε αυτή την περίπτωση δεν θα έχουμε "παραγόμενη" εφαρμογή αλλά μία και μοναδική εφαρμογή διαχείρισης, η οποία θα λειτουργεί δυναμικά ανάλογα με τα metadata που θα την "ταϊζουμε".

    Στην προσέγγιση 1 ειναι λογικό οτι με ένα σύστημα abstract/concrete κλάσεις θα είναι εύκολο το regeneration του όλου πράγματος αν αλλάξει το schema, χωρίς να χάνεται όποιο customization έχει (σχετικά εύκολα) γίνει στις concrete κλάσεις. Από την άλλη μεριά, στην προσέγγιση 2 έχουμε μεγαλύτερη ευελιξία αλλά βραδύτερο response και φυσικά ο μόνος τρόπος να κανουμε customization είναι να χώσουμε hooks τα οποία θα αξιοποιούμε με reflection.

    Αν και καταλαβαίνω οτι θα μπορούσα να συνεχίσω να γράφω λεπτομέρειες, σταματώ εδώ. Θα ήθελα την δικής σας άποψη / ερωτήσεις και πρόσθετες / εναλλακτικές προτάσεις πάνω στο ποιά από τις δύο αυτές προσεγγίσεις κρίνετε πιό αποτελεσματική (ή αν έχετε να προτείνετε κάποια εναλλακτική προσέγγιση). Μιλάμε πάντοτε για Web-based interface με βασικούς άξονες την ευελιξία, τη συντηρησιμότητα και την ευκολία προσθήκης νέων features.


    Σωτήρης Φιλιππίδης

    DotSee Web Services

    View Sotiris Filippidis's profile on LinkedIn

    DotNetNuke them!
    Δημοσίευση στην κατηγορία: , , , , ,
Δείτε όλες τις δημοσιεύσεις της Θεματική Ενότητας
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems