.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.
Scarica

.NET Development su tecnologia SharePoint Parte 1