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

 

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

List Definitions σε (C Sharp) κώδικα η με CAML ?

Îåêßíçóå áðü ôï ìÝëïò Underwater. Τελευταία δημοσίευση από το μέλος Παναγιώτης Καναβός στις 09-10-2011, 18:49. Υπάρχουν 1 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  09-10-2011, 18:18 67691

    List Definitions σε (C Sharp) κώδικα η με CAML ?

    κατι, αλλο..... όταν ένα Visual Studio 2010 SharePoint project περίεχε τα List Definitions σε (C Sharp) κώδικα μέσα σε Feature Receiver Event, μας δίνει δυνατότητα να κάνουμε Debug, όμως χάνουμε (?) αυτή την δυνατότητα όταν  δημιουργούμε τα List Definitions σε CAML ?   Υπάρχει κάποιο advantage να γράφουμε List Definition με CAML κατευθείαν?


    “Don’t worry if it doesn’t work right. If everything did, you’d be out of a job.”
    (Mosher’s Law)
  •  09-10-2011, 18:49 67694 σε απάντηση της 67691

    Απ: List Definitions σε (C Sharp) κώδικα η με CAML ?

    Χμμμμμμμμμμμμμμμμμμμμμμ, η μεγάλη ερώτηση. Προφανώς, χρησιμοποιώντας CAML έχεις μία "no-code", αν μπορείς να το πεις έτσι, μέθοδο, η οποία επιδέχεται κάποιου είδους version control και μπορεί να ελεγχθεί ως ένα σημείο από το Sharepoint κατά το deployment. Δεν έχεις όμως τη δυνατότητα να κάνεις upgrade διάφορα definitions, να προσθέσεις/αφαιρέσεις πεδία, να αλλάξεις τύπους, να κάνεις migrate δεδομένα και content types, και πολλές άλλες απαραίτητες εργασίες. Ακόμα και αν θέλεις να φτιάξεις ένα publishing site, είναι ευκολότερο να ενεργοποιήσεις το Publishing μέσω κώδικα παρά να το κάνεις με CAML. Τελικά απλά δεν αρκεί το CAML για να πεις ότι θα φτιάξεις ένα επαρκές πακέτο για deployment.

    Από την άλλη, με κώδικα μπορείς να κάνεις πολύ περισσότερους ελέγχους, όπως να ελέγξεις αν υπάρχουν τα πεδία που θέλεις, να προσθέσεις νέα, να κάνεις upgrade στήλες και content types και πολλά άλλα. Το "κακό" είναι ότι θα πρέπει να κάτσεις να γράψεις ουσιαστικά ένα δικό σου deployment framework για να κάνει όλα αυτά τα πράγματα, εκτός και αν έχεις σκοπό να ξαναγράφεις τον ίδιο κώδικα κάθε φορά που φτιάχνεις ένα καινούριο project. Άλλος πονοκέφαλος είναι ότι υπάρχουν πάρα πολλές ρυθμίσεις που μπορείς να κάνεις κατά το deployment, είτε μέσω CAML είτε μέσω κώδικα. 

    Είχα δοκιμάσει αυτή τη λύση παλιότερα, φτιάχνοντας "κάτι σαν μίνι DSL" για Sharepoint, όπου όριζα τη δομή πχ. μίας λίστας με τον παρακάτω τρόπο στον κώδικα:
    var list=Site.List("MyList", ListType)
                    .Field("MyField1",Integer)
                    .Field("MyField2",Text,20)
                    .LookupField("MyLookupField","MyLookupID","MyDisplayField")

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

    Μία καλύτερη λύση φυσικά θα ήταν να χρησιμοποιήσω κάποιο parser generator για να φτιάξω μία ωραία γλώσσα που να κάνει αυτά που θέλω, ή κάποια γλώσσα η οποία επιτρέπει τη δημιουργία πιο κατανοητών DSLs.

    Φυσικά, ούτε λόγος να γίνεται για να φτιάξω το schema που θέλω σε XML. Αυτό είναι η CAML και είναι η καλύτερη απόδειξη ότι η XML είναι ΑΚΑΤΑΛΛΗΛΗ για αυτή τη δουλειά.

    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems