1. Implementing Custom Solution in
Sharepoint
Gabriele Del Giovine
Microsoft MVP for Office Sharepoint Server
gdelgiovine@delgiovine.it
Implementing Custom Solution in Sharepoint
3. Premessa
Non c’è codice!
Parliamo di massimi sistemi!
(beh, forse alla fine un poco di codice....)
Implementing Custom Solution in Sharepoint
4. Introduzione
Perchè sviluppare?
Servono nuove funzionalità
Adattare le funzionalità esistenti ad esigenze specifiche
Usare dati “Line of Business” in SharePoint
Creare meccanismi di integrazione stretta fra sistemi
differenti
Chi può sviluppare?
Differenti livelli di “sviluppo”:
Administrators - Configuration
Super (Duper?) Power Users – Customizzazione No-Code
Developers – Sviluppo (Code e No-Code)
Implementing Custom Solution in Sharepoint
5. Introduzione
Perchè parlare di sviluppo a degli sviluppatori?
Perchè è l’unica cosa che capiscono, forse….
http://www.sharepointmn.com
Implementing Custom Solution in Sharepoint
6. Introduzione
Perchè parlare di sviluppo a dei non-sviluppatori?
Sapere cosa è possibile fare
Trovare nuovi usi della tecnologia disponibile
Trovare gli usi sbagliati!
Molte delle decisioni nelle Organizzazioni non sono
prese da persone che conoscono le tecnologie
specifiche.
Implementing Custom Solution in Sharepoint
7. Cosa posso usare per sviluppare?
Core Toolset
Sharepoint End-User Web Interface (il browser)
Office Suite
SharePoint Designer
InfoPath
Excel
Visual Studio
Minimo VS2005 + VsWSS 1.1
VS2008 + VsWSS 1.2 (Framework 3.5 - Sharepoint SP1)
come diceva Max Biaggi parlando della moto di Valentino Rossi: “..is much
better!”
http://www.sharepointmn.com
Implementing Custom Solution in Sharepoint
8. Core Technologies
Interfaccia utente di Sharepoint
Funzioni di personalizzazione delle viste, Edit Page, connessioni fra Web Part e Web Part Pages sono
sicuramente gli strumenti più semplici per la customizzazione .
Molto limitata nella logica e difficilmente “trasportabile” nel caso si usino oggetti come Content-Type,
Site Columns, Look-up
Applicazioni Office
Customizzazione relativamente semplice , Power User friendly
Limitata in termini logica applicativa e funzionalità extra-Sharepoint. Problemi di deployment e
“robustezza”
Esempi: InfoPath, Excel, SharePoint Designer
HTML/XML/XSLT/Javascript
Possono dar vita a customizzazioni molto potenti, senza richiedere scrittura di codice
(se consideriamo XSLT un no code)
Occorre conoscere PERFETTAMENTE gli strumenti usati
Esempi: Master Pages, Content Query Web Part, Search Results
.NET
“Extremely powerful”, mette a disposizione un vero arsenale di strumenti e funzionalità
Un developer Sharepoint completo DEVE conoscere BENE, MOLTO BENE .NET e la sua infrastruttura IT
Esempi: Web Parts, Workflows, Events Handlers, Receivers, Jobs
Difficoltà
Implementing Custom Solution in Sharepoint
9. Iniziare a sviluppare su SharePoint:
I Tre pilastri della saggezza…..
Comprendere l’ambiente Sharepoint
Sapere come interagire con SharePoint
Conoscere capacità e limiti di SharePoint’s
Implementing Custom Solution in Sharepoint
10. SharePoint E’ un mix di applicazioni .NET
“A really big, slightly scary, extremely complicated mix
of .NET and ASP.NET applications”
Le conoscenze dello sviluppo “tradizionale” .NET/ASP.NET sono
ancora valide, ma occorre complementarle con quelle proprie di
Sharepoint , Windows Workflow Foundation e con una
conoscenza di base dell’infrastruttura legata ad IIS ed alle
applicazioni Web.
Implementing Custom Solution in Sharepoint
11. Web Browser Office Application
User
Interface
Web App
Tier
Microsoft Office Sharepoint Server 2007 (MOSS)
Windows Sharepoint Services 3(WSS)
.Net Framework 3.0
Internet Information Server 6.0
DataBase
Tier
Configuration
Admin.
Content
Content
Shared
Services
Search
Implementing Custom Solution in Sharepoint
12. (Programatically)
Come “arrivarci” e come lavorare con SharePoint
3 Metodi principali di accesso (APIs)
SharePoint Object Model
SharePoint Web Services
Remote Procedure Calls (RPC)
Implementing Custom Solution in Sharepoint
13. SharePoint Object Model
Accesso Completo (quasi)
Può accedere al 99% delle cose che compongono Sharepoint
(tutto tranne che il motore di storage SQLServer)
Semplice da usare
E’ il metodo più semplice rispetto agli altri.
Il paradigma è intuitivo (SPSite, SPWeb, SPList…..)
Più usato
Supporto: Newsgroups, libri, presentationi…
E’ il metodo usato per costruire le applicazioni
Non supporta Remoting (dolore…)
Implementing Custom Solution in Sharepoint
15. SharePoint Web Services
Metodo standardizzato di accesso da remoto
Indipendente dal linguaggio e dall’OS
Non supporta tutte le operationi
Lievi differenze fra WSS 2.0/SPS2003 e WSS 3.0/MOSS2007
Richiede XML parsing in quantità industriale
Implementing Custom Solution in Sharepoint
16. Remote Procedure Calls
Metodo più potente e condensato per la
contribuzione di documenti
Molto “pericoloso”
Usato da Office 2003/2007 per l’integrazione
con SharePoint
Difficile da usare
Non molto documentato (ma con eccezioni…)
Implementing Custom Solution in Sharepoint
17. SharePoint come Piattaforma di sviluppo
Ora che sappiamo un poco di più sul
”cosa”, passiamo al “come”?
Cosa devo sapere per capire “se e come” il
mio progetto può essere realizzato con
Sharepoint?
Implementing Custom Solution in Sharepoint
18. Key SharePoint Development Platform Scenarios
http://www.sharepointmn.com
SharePointPersonalization
Document
Centric
Collaboration
Multiple LOB
Systems
Search
Implementing Custom Solution in Sharepoint
19. Personalization
Generale
SharePoint conosce l’utente, tranne quello anonimo
Crea un contesto per l’utente
Security first, tutto è reso in funzione di questo requisito
Resa in funzione del ruolo dell’utente
Il profilo utente fornisce le informazioni sui ruoli dell’utente nei confronti del sito
MySites
Personal Location per l’utente
Customizzazione del look and feel
I contentuti di valore sono nel contesto dell’utente
L’ubiquitaria Web Part
Era l’attività di sviluppo più comune in V2 (forse l’unica), in V3 rimane importante ma non
l’unica .
Supporta il ‘targeting’ to groups of users (in MOSS)
Memorizzazione delle preferenze semplice: per tutti o per singolo utente
Mix and Match con le Web Part Connections
No UI Editor for developers out of the Box: SmartPart (per giocare) o ASCX development
http://www.sharepointmn.com
SharePointPersonalization
Document
Centric
Collaboration
Multiple LOB
Systems
Search
Implementing Custom Solution in Sharepoint
20. Demo – Using WebParts
Implementing Custom Solution in Sharepoint
21. Document Centric
Generale
E’ relativa ai Documenti (Document Library)
Finalizzata ad arrichire (Capturing Data) il documento con metadati (interni o esterni a
documento)
Capturing Data
Office Suite Uploads (files and Document Information Panel)
InfoPath Forms (Forms Services) – permette codice .NET
Integrata nativamente in Office 2003/2007
Creazione di Custom Fields, Content Types, Site Columns
Documenti come Business Objects
Policies: Routing e Gestione del Ciclo di Vita (Expiration)
Event Handlers: gestione di eventi ed impostazioni dei metadata, permissions ed
esecuzione di logica applicativa
External Applications: Interfacce con i documenti presenti in SharePoint
SharePointPersonalization
Document
Centric
Collaboration
Multiple LOB
Systems
Search
Implementing Custom Solution in Sharepoint
23. Collaboration
Generale
Più persone hanno necessità di lavorare sugli stessi files
Il Versioning e l’integrazione con le applicazioni (Office) rendono la cosa “semplice”
Il Routing dei documenti diventa il compito più pesante
Workflow
Quello “Out of the Box” offre delle logiche limitate e poche possibilità di modifica dei dati.
SharePoint Designer Workflows – Configuration e Custom Activities –
Solo sequenziale, non portabile su web application diverse, poco potente
Visual Studio Workflows WFW – Tutta la potenza of .NET e dell’Object Model.
Un delirio per lo sviluppatore
Altre Opzioni
Mobile Views – Permette una forma di collaboratione usando device mobili (HTML minimale)
Extranet
ASP Forms Authentication e providers di autenticazione diversi da Windows AD.
SharePoint Designer UI
ASP Master Page
Content Pages
Direct Page Editing
SharePointPersonalization
Document
Centric
Collaboration
Multiple LOB
Systems
Search
Implementing Custom Solution in Sharepoint
25. Accesso a dati LOB (si si, proprio I gestionali….)
Generale
I dati vengono da fonti diverse e disparate.
Il problema è che nessuno ha la pazienza di accedere alle singole fonti per consultarli.
Serve quindi un “qualcosa” per visualizzarli/usarli
Gli strumenti come Dashboard/Analytics Tools spesso lavorano con fonti dati singole.
Customization
Business Data Catalog – XML Configuration
SQL Stored Procedures e/o Web Services possono essere usati per scenari avanzati
DataViews Web Part di SharePoint Designer
Potente ma difficilmente replicabile o “vendibile” come prodotto
Excel Services – Spreadsheets and limited logic available for consumption
Costo non indifferente e funzionalità limitate
3rd Party WebParts (moltissimi venditori e moltissimo materiale Open Source)
Sviluppo
Web Parts + .NET per accedere a dati “inaccessibili” o per funzioni avanzate di UI o
semplicemente per aggiornarli
SQL Server Reporting Services (rigorosamente versione 2008)
PerformancePoint/Business Scorecard Manager
http://www.sharepointmn.com
SharePointPersonalization
Document
Centric
Collaboration
Multiple LOB
Systems
Search
Implementing Custom Solution in Sharepoint
26. Demo – LOB Data
Implementing Custom Solution in Sharepoint
28. LOB Systems – What’d I See?
Dashboard
Many different sources of information
Many different backends
Many different frontends
BDC
BDC itself is XML configurable
Configurable Pages for Database Records
http://www.sharepointmn.com
SharePointPersonalization
Document
Centric
Collaboration
Multiple LOB
Systems
Search
Implementing Custom Solution in Sharepoint
29. Search
Generale
Trovare i dati può essere un compito difficile!
Customization/Configuration
Search Center – XSLT Configuration (tutto è XSLT)
Dati ricercabili : Extra file shares, databases through BDC, Internet, Motori di ricerca
pubblici, quello che vi pare se vi scrivete un handler….
Indexing Enhancements – Best Bets, Thesaurus, Word Stemming
Microsoft Search Server 2008
3rd Party
Sviluppo
Object Model e Web Services
Uso di ASP.NET per simulare BDC Pages nel ‘crawl’ di un database
IFilter – estrazione della parte “human readable” di formati files (PDF, DWG, TIFF ecc)
Custom Security Trimmer – ACL per oggetti esterni a Sharepoint
SharePointPersonalization
Document
Centric
Collaboration
Multiple LOB
Systems
Search
Implementing Custom Solution in Sharepoint
32. Search – What’d I see?
SearchCenter
Search Tab – Configuration
Search Results – XSLT Customization
Search Application
.NET Application
Object Model or Web Services
Can perform SharePoint searches and retrieve resulting data
http://www.sharepointmn.com
SharePointPersonalization
Document
Centric
Collaboration
Multiple LOB
Systems
Search
Implementing Custom Solution in Sharepoint
33. Administrator’s Development
Non ci siamo dimenticati gli “Administrators” (aka Sistemisti o IT Pro)
STSADM
Nuove funzioni possono essere aggiunte(stsadm –o myaction)
CodePlex contiene diverse decine di estensioni a STSADM
PowerShell
Tool generico per Amministratori
Accesso completo all’Object Model di Sharepoint
Custom applications e webparts possono essere distribuite nella Central Admin
http://www.sharepointmn.com
Implementing Custom Solution in Sharepoint
35. “Wow, sembra tutto meraviglioso”
“Scommetto che lo sviluppo è rapidissimo!”
Non esattamente
I progetti V3 sono molto più complessi di un’applicazione
.NET normale
Complessita delle funzionalità core (Web part, Content Type, Workflow,
Event Handler, deploy, debug etc)
Numero di server coinvolti in un progetto
SharePoint 2007 migliora l’esperienza di Deployment
Solutions
Features
http://www.sharepointmn.com
Implementing Custom Solution in Sharepoint
36. Quando NON dovrei usare SharePoint?
Vincoli di Scaling/Sizing
Non è lo storage ideale per disegni CAD enormi o films (ma funziona…)
External Storage API ci mette una pezza ma non è ancora una soluzione matura
Non è geograficamente distribuito (il problema è demandato in toto a
SQLServer. Quando SQLServer sarà geograficamente distribuito lo sarà anche
Sharepoint)
SharePoint NON è un database ad alte prestazioni
Anzi, Sharepoint non è un database, tecnicamente parlando
Non potete usarlo come base per costruire un ERP
Quando non è necessario riscrivere l’applicazione
Si può ospitare una applicazione ASP.NET (e pure ASP) dentro
Sharepoint (in tutti i sensi)
Implementing Custom Solution in Sharepoint
37. Review
SharePoint Toolset
SharePoint as a Development Platform
Common Scenarios
Personalization
Document Centric
Collaboration
Multiple LOB Systems
Search
Administrators
When not to use SharePoint
http://www.sharepointmn.com
SharePointPersonalization
Document
Centric
Collaboration
Multiple LOB
Systems
Search
Implementing Custom Solution in Sharepoint
39. Testi consigliati:
Implementing Custom Solution in Sharepoint
Inside Windows SharePoint Services v3
by Ted Pattison & Dan Larson (MSPRESS)
Microsoft SharePoint: Building Office 2007 Solutions in C# 2005
by Scot Hillier (APRESS)
Inside Microsoft Office SharePoint Server 2007
by Patrick Tisseghem (MSPRESS)
Workflow in the 2007 Microsoft Office System
by David Mann (APRESS)
Professional SharePoint 2007 Development
by [quasi tutti gli MVP di Sharepoint] (WROX)