Underwater:
Εάν μεταφέρω το domain model έξω από λίστες του SharePoint για να τα βάλω στο SQL,
Να ξαναεπαναλάβω, οι λίστες ΔΕΝ είναι πίνακες ούτε domain entities. ΔΕΝ μπορείς να ξεκινήσεις από ένα domain model για να σχεδιάσεις ένα SharePoint site. Αν κάτι πλησιάζει (πως λέμε Πάτρα-Αθήνα) τα domain entities, είναι τα content types. Πρόκειται όμως για απλή ομοιότητα. Το SharePoint ανήκει στις κατηγορίες των Enterprise Content Management και Document Management προϊόντων, όπου το domain modelling δεν έχει εφαρμογή, τουλάχιστον όχι όπως το εννοείς.
Καταρχήν, όταν μιλάς για entities μιλάς πρώτα για συμπεριφορά και μετά για δεδομένα. Στο SharePoint ΔΕΝ υπάρχει συμπεριφορά με αυτή την έννοια. Ο κώδικας που μπορείς να προσθέσεις είναι σε πολύ περιορισμένο επίπεδο, είτε Event Receivers είτε custom actions σε φόρμες ή μενού και πάντα ανεξάρτητος από συγκεκριμμένα instances. Τα workflows δεν τα αναφέρω γιατί ουσιαστικά συμπεριφέρονται είτε σαν event receivers είτε σαν actions, ανάλογα πως τα ενεργοποιείς.
Αλλά και οι λίστες διαφέρουν πάρα πολύ από τα τυπικά entities. Καταρχήν, δεν είναι όλες οι σημαντικές οντότητες λίστες ή έστω content types. Για παράδειγμα, οι χρήστες είναι μία demi κατάσταση - δεν είναι λίστα αλλά ένα υποσύνολο του functionality φαίνεται σαν λίστα σε κάποια σημεία. Το υπόλοιπο θέλει "τούμπες" και ειδικές κλάσεις για να εμφανιστεί. Από την άλλη, ένα "πεδίο" μπορεί να είναι αρκετά περίπλοκο, με πολλαπλά "πεδία" και συμπεριφορά, η οποία ορίζεται ανεξάρτητα από τη λίστα ή το content type του.
Να μην πω τώρα για τις βιβλιοθήκες που μπορεί να φαίνονται ίδιες με τις απλές λίστες εξωτερικά, σε επίπεδο API όμως πρέπει να κάνεις τούμπες.
Το μοντέλο του SharePoint γενικά δεν είναι τόσο καθαρό όσο το παρουσιάζουν σε courses και video. Δεν πρόκειται για μία πλατφόρμα αλλά για μία εφαρμογή που χτίστηκε σιγά-σιγά και μετά άρχισε να εξελίσσεται σε πλατφόρμα. Επιπλέον, πολλές λειτουργίες υπάρχουν μόνο στις server εκδόσεις και δεν παρουσιάζονται καν στο βασικό API. Εκεί οφείλεται η διχοτομία μεταξύ λίστας/βιβλιοθήκης (στο SP 2003 ήταν εντελώς ανεξάρτητες), το διάσπαρτο functionality για τους χρήστες (στο SP 2003 δεν υπήρχαν τα περισσότερα features και στο SP 2007 υπήρχαν στη server έκδοση).
Παναγιώτης Καναβός, Freelancer
Twitter: http://www.twitter.com/pkanavos