.NET Development su tecnologia SharePoint Parte 1 Object Model, Web Service, Document I/O, Event Handler Paolo Pialorsi [email protected] DevLeap http://www.devleap.com/ Roberto Brunetti [email protected] DevLeap http://www.devleap.com/ Object Model SharePoint Object Model È sviluppato interamente con .NET È parzialmente offuscato ... Prevede alcuni assembly .NET per la parte WSS: Microsoft.SharePoint.dll STSSOAP.DLL In aggiunta ad altri assembly per OSS: Microsoft.SharePoint.Portal.dll Microsoft.SharePoint.Portal.SingleSignOn.dll Microsoft.SharePoint.Search.dll Microsoft.SharePoint.Security.dll Microsoft.SharePoint.WorkflowActions.dll Namespace Principali Microsoft.SharePoint.dll: Microsoft.SharePoint Microsoft.SharePoint.Administration Microsoft.SharePoint.Utilities Microsoft.SharePoint.WebPartPages Microsoft.SharePoint.Workflow Microsoft.SharePoint.Portal.dll: Microsoft.SharePoint.Portal Microsoft.SharePoint.Portal.WebControls Microsoft.SharePoint.Portal.Search Microsoft.SharePoint.Portal.SingleSignOn PortalApplication È il punto di accesso per arrivare ad un PortalContext Di solito si passa da qui per avere accesso al contesto e quindi a tutto il portale Ha quasi solo questa funzione PortalContext context = PortalApplication.GetContext(Context); C# PortalContext Si utilizza per collegarsi a un portale PortalContext.Current si riferisce al portale del quale si sta ricevendo una richiesta HTTP Permette di configurare alcune impostazioni del Portal FromAddress SmtpServerAddress MailEncoding ReplyToAddress Zone Site Model: Container per App Amministrazione SPFarm Farm Web Application SPWebApplication SPSite SPWeb (Root) (SPFolder) Contenuto Site Collections (SPSite) Site (SPWeb) Template Driven SPWeb (SPFolder) Novità Verbo Move Meno barriere fra verbi SPFarm e SPWebApplication SPFarm Rappresenta una Farm di WSS Consente di Creare una Farm Aprire una connessione a una Farm Migrare utenti e/o impostazioni tra Farm Intercettare eventi di backup/restore di Farm SPWebApplication Rappresenta un sito in IIS Con le sue varie configurazioni SPControl Fornisce l’accesso al contesto delle richieste, nelle implementazioni Web Si trova in MS.SP.WebControls Per esempio nel codice delle Web Part SPSite site = SPControl.GetContextSite(Context); SPWeb web = SPControl.GetContextWeb(Context); C# È alla base di molti dei controlli del namespace Microsoft.SharePoint.WebControls Il contesto che accetta come argomento è il contesto ASP.NET HttpContext.Current SPSite Rappresenta un Site su un Virtual Server È contenitore di un elenco di siti Di cui SPSite è root Possiamo ottenerlo da SPControl o con il suo costruttore SPSite(url) o SPSite(guid) Tra le sue proprietà più importanti vi sono: AllowUnsafeUpdates AllWebs IISAllowsAnonymous (read-only) RootWeb SPWeb Rappresenta un singolo sito Web all’interno di un SPSite su un Virtual Server Tra i metodi più importanti DoesUserHavePermissions GetFile GetFolder GetRecycleBinItems SearchDocuments SearchListItems ValidateFormDigest Files, Folders, Users, Roles ContentTypes, Features, WorkflowTemplates SPSite e SPWeb List e Library: Infrastruttura List e Library SPSite SPWeb (Root) SPList (Catalog) SPListItem SPFolder SPFile Field List Item Catalog Liste sul root web che memorizzano risorse Folder SPWeb SPList SPListItem SPFolder SPFile (plus other lists and libraries) Novità Two-Stage Recycle Bin Folder nelle List SPList Descrive una singola lista (sia di elementi qualsiasi che di files) GetItemById GetItems AddWorkflowAssociaton, RemoveWorkflowAssociation WriteRssFeed EventReceivers EventSinkAssembly EventSinkClass EventSinkData Fields ID ItemCount, Items OnQuickLaunch SchemaXml SPListItem Rappresenta il singolo elemento di una lista Attachments Fields[Int32 | String] File ID Item Xml CheckPermissions DoesUserHavePermissions Workflows Attenzione: item.Fields[“Ragione Sociale”] InternalName e DisplayName SPList da codice Gestione e creazione List e Library: Field e Tipi List e Library personalizzabili SPSite SPWeb (Root) SPList (Catalog) SPListItem SPFolder SPFile (plus other lists and libraries) SPWeb SPList SPListItem SPFolder SPFile (plus other lists and libraries) Field Type: Rich Text Choice Currency Lookup a List, User Calculated Column Ecc. Novità Append-Only Field Multi-Valued Lookup Tipi personalizzabili SPField e SPField* Descrivono le colonne di una lista Sono di diverse tipologie a seconda del tipo di contenuto della colonna SPField è la classe base per tutti gli altri Field SPFieldCalculated, SPFieldMultiChoice, SPFieldDateTime, SPFieldLookup, SPFieldMultiChoice, SPFieldMultiLineText, SPFieldNumber, SPFieldText, SPFieldUrl, SPFieldUser NB: Non è più sealed!!! Security Grouppi e Utenti definiti a livello Site Collection SPSite SPWeb (Root) SPList (Catalog) SPListItem Ruoli definiti a livello di site SPFolder SPFile (plus other lists and libraries) SPWeb SPList SPListItem SPFolder SPFile (plus other lists and libraries) Permission cascade: Da Site a Web Da Web a List Da List a Item Security Cascading Security Web Level Security List Level Security Cross-Site Group Novità Item Level Security Folder Security (dentro List/Library) Web Application Policy Permission Level (site group da evitare) ASP.NET Authentication Store Object Model Server-side Object Model SPSite SPWeb (Root) SPList (Catalog) SPListItem SPFolder SPFile (plus other lists and libraries) SPWeb SPList SPListItem SPFolder SPFile (plus other lists and libraries) Novità Property Bag Impersonation e Elevation SystemUpdates SPContext Usare QUESTO nelle pagine SPUtility Admin Object estendibili Changelog Lista delle modifiche agli item GetChanges() SPChangeCollection, SPChangeToken Sempre attivo ! Import e Export Nuove API per import/export Export: site, list, item Merge in siti esistenti Creazione di nuovi siti Open Format Basa su Xml Memorizzato in file CAB Document Management SPFile Rappresenta il singolo File in una SPList di tipo DocumentLibrary Possiamo lavorare sul suo stato usando differenti proprietà e metodi: CheckIn, CheckOut, UndoCheckOut CopyTo, MoveTo OpenBinary, SaveBinary CheckedOutBy Item -> SPListItem Length ServerRelativeUrl Versions Library: Check-in/Check-out Check-in/Check-out di file Novità Checkout obbligatorio Per forzare utilizzo di versioni Miglior controllo in situazioni multi-user Proprietà obbligatorie Non si può fare check-in senza valorizzare le proprietà Documenti senza proprietà obbligatorie vengono checked-out in automatico Check-in/Check-out Lists Versioning Licenziamento.doc 3.0 – Versione Pubblica Versioning di base Novità ? 3.1 – Visibile solo dagli autori Major/Minor Versioning Check-out Le Major Version vengono pubblicate Chiunque può vedere le modifiche 3.2 – Solo utenti con il doc checked-out possono vedere Le Minor Version considerate “Drafts” Check-in Versioni per List Item Version Diff Version Trim 3.2 4.0 Publish Gestione Schema Column Template Gestione Field centralizzata Es, I campi “Priorità” devono avere 3 valori: 1,2,3 Content Type Definizioni di List Schema (riutilizzabili) Più Content Types per singola List Memorizzati sul root web In cascata si applicano alle List Possono avere un comportamento (Behavior) !!! Eventi Document Template Document Information Panel Workflow Ad esempio: inserimento di una lettera fa scattare una email e avvia un workflow Content Type: Es Gerarchia Base Document DevLeap Slides DevLeap Slide For .NET DevLeap Offerte DevLeap Consulenza DevLeap Articoli Content-Type Auditing sui dati List e Library SPAudit: Impostazioni, Gestione Log SPAuditEntry: Informazioni su un “Event” Opt-in Memorizza Views Update Delete Move Security Changes CheckIn/CheckOut Schema Change Workflow Change Non esiste User Interface ! Web Service Store Web Service SPSite SPWeb (Root) SPList (Catalog) SPListItem SPFolder sitedata.asmx, webs.asmx Recupero metadata per Site, Web, List lists.asmx Gestione Schema delle List Gestione dati List forms.asmx, views.asmx Gestione Form e View SPFile (plus other lists and libraries) SPWeb SPList SPListItem SPFolder SPFile (plus other lists and libraries) webpartpages.asmx Gestione Web Part Gestione Web Part Pages usergroup.asmx Gestione Utenti e Gruppi Permessi Per usarli dobbiamo ovviamente fornire delle credenziali valide Si ottiene tramite System.Net.NetworkCredential Sarebbe stato meglio WS-Security Ma poi chi l’avrebbe usato? Almeno questo funziona con client COM, .NET (e Java) Web Service Ricerca e Check-in/Check-out Java Event Handler Event Tracking Possiamo tracciare gli eventi che si verificano su una SPList o su un SPSite Eventi multipli e con ordine di priorità Gli eventi sono di due tipologie Pre-azione: sincroni, possono validare e annullare l’azione, interazione con l’UI Post-azione: asincroni, possono solo prendere atto dell’azione eseguita Proprietà ricevute After e Before Basta realizzare una class library e registrarla nella GAC SPEventReceiverBase La classe base di tuti gli EventReceiver Derivata in specializzazioni a livello di SPItem SPList SPWeb Quali eventi sono tracciati? Gli eventi “intercettabili” sono ContextEvent ItemAdded ItemAdding ItemAttachmentAdded ItemAttachmentAdding ItemAttachmentDeleted ItemAttachmentDeleting ItemCheckedIn ItemCheckingIn ... continua ItemCheckedOut ItemCheckingOut ItemDeleted ItemDeleting ItemFileMoved ItemFileMoving ItemFileTransformed ItemUncheckedOut ItemUncheckingOut ItemUpdated ItemUpdating SPItemEventReceiver Fornisce un metodo virtual per ogni evento Ogni metodo riceve: Microsoft.SharePoint.SPItemEventProperties SPItemEventProperties: WebUrl SiteId ListID, ListTitle, ListItem AfterUrl/BeforeUrl e AfterProperties/BeforeProperties EventType CurrentUserId UserDisplayName UserLoginName ErrorMessage Status Event Fate attenzione! NON SONO GARANTITI Non sono transazionali Es. Inserimento -> Evento -> Crash -> Azione annullamento non eseguita Gli eventi Pre-sync non hanno binary stream Documenti e promotion/demotion Gestione da Client Windows Ulteriori approfondimenti… http://www.microsoft.com/italy/msdn/ http://msdn.microsoft.com/office/future/ http://www.netfx3.com/ http://wf.netfx3.com/ http://www.devleap.it/ Grazie! Domande? Compilate il form di valutazione… © 2006 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.