Windows SharePoint 2003 Products & Technologies – Architettura Marco Bellinaso Senior trainer & consultant Code Architects S.r.l. Web: http://www.codearchitects.com E-mail: mbellinaso@codearchitects.com
Biografia Consulenza, sviluppo e training con Code Architects Srl Collaboratore di Visual Basic & .NET Journal, Computer Programming, MSDN Magazine e ASP Today Coautore di “ASP.NET Website Programming”, “Fast Track ASP.NET” e “Visual C# .NET: a Guide for VB6 Developers” (Wrox Press) Sviluppatore di UGI SharePoint (www.ugisharepoint.it) Sviluppatore dei siti *2TheMax (www.dotnet2themax.com) (www.dotnet2themax.it ) e-mail: mbellinaso@codearchitects.com
Agenda WSS vs. SPS I componenti di SharePoint Opzioni di deployment Web Server IIS, esecuzione di pagine ASPX, Web Part, codice unsafe I database di SharePoint La struttura dei DB di configurazione e di contenuti Il modello ad oggetti di SharePoint Accedere a SharePoint tramite Web Service
WSS vs. SPS SharePoint Portal Server (SPS) News e Links Directory dei siti Creazione e gestione di siti personali Targeting dei contenuti tramite le Audience, e provisioning dei profili tramite Active Directory Servizi di Index, Enterprise Search e Alerts Single Sign-On Integrazione con BizTalk Server Windows SharePoint Services (WSS) Servizi per la condivisione e collaborazione su documenti, gestione del loro ciclo di vita, e versioning Membership e authorization Web Part Framework: presentazione e personalizzazione dei contenuti Alerts e ricerca a livello di sito
WSS vs. SPS in dettaglio (1/2) Feature WSS SPS Alerts Sì Discussion boards Document libraries Document Workspace Lists Meeting Workspace Microsoft FrontPage integration Microsoft InfoPath integration Surveys Templates Web Parts Framework
WSS vs. SPS in dettaglio (2/2) Feature WSS SPS Area Alerts No Sì Audiences Automatic categorization BizTalk integration Central Site Manageability Enterprise Search News Personal sites Shared services Single sign-on Site Directory Topic areas User profiles
I componenti di SharePoint Front-end Web server (1-10): punto di accesso per i servizi e i contenuti di SharePoint. Riceve le richieste dei client, e produce l’output grafico per il browser. Content Index server (1-4): indicizza contenuti interni ed esterni al portale Search server (1-4): permette all’utente di eseguire ricerche avanzate, usando FTS, e supporta filtri su metadati (colonne built-in e custom di liste e librerie) Job server (1): esegue in background attività schedulate, come l’invio di alert, l’analisi dei file di log per la produzione di statistiche, la cancellazione di siti non usati, l’importazione di profili da AD, ecc. Ce n’è uno solo per portale. SQL Database Server (1-5): gestisce i contenuti e la configurazione dei portali e siti di SharePoint
I componenti di SharePoint Web / Application Server Windows Server 2003 Internet Information Services 6.0 (IIS6) .NET Framework 1.1 ASP.NET 1.1 WSS (+ SPS, opzionalmente) Alcune feature di SPS richiedono AD, quindi il server deve far parte di un dominio esistente, o essere configurato come Domain Controller Database server Windows Server 2000/2003 Database supportati: SQL Server 2000 MSDE: limitato a 2GB di storage e a 5 worker thread WMSDE: non ha i limiti di storage e worker thread di MSDE, ma supporta solo lo schema di DB di Microsoft per WSS. Non funziona con SPS
Architettura Scale-out Web/Search Server X Rich Clients (Office o app custom) Web Browser Load Balancer (hardware o software) SMTP Server SQL Content DB SQL Config DB Index/Job Server SOAP HTML Web server a basso costo. Possono essere aggiunti all’aumentare degli hit SQL Server contiene tutti i metadati, dati, documenti, ACL ecc. Usare SQL Server multipli per sfruttare partizionamento, e ottenere failover e redundancy
Opzioni di deployment Stand-alone single server: tutti i componenti sullo stesso server Server Farm Small: separa su più server componenti di front-end e i DB di back-end Medium: colloca il job e index server su server separati da quelli usati per web e search Large: fino a 4 index server (uno dei quali fa anche da job server), fino a 4 search server, fino a 10 web server Whitepaper su strategie di deployment in casi reali seguiti da Microsoft IT: http://www.microsoft.com/technet/itsolutions/msit/deploy/spswhtwp.mspx
Architettura Scale-out Performance e scalabilità migliorate ripetto a STS e SPS01 .NET Framework, SQL Server 2000 Architettura three-tier Componenti separati: web rendering, database, search, indexing Si possono aggiungere facilmente nuovi web server all’aumentare di richieste web Il web server è completamente stateless (a differenza di STS), rendendo immediato l’utilizzo di un Load Balancer (HW o SW) Si possono aggiunge nuovi database di contenuti Tutti i contenuti (metadati, dati e documenti) sono su DB (in STS i documenti stanno sul file system): Sicurezza a affidabilità (deployment in cluster per eliminare il single-point-of-failure) Update transazionali Non serve fare replicazione Semplifica il backup
End User Virtual Server Web Server End User Virtual Server Site collection Web IIS Admin Virtual Server Configurazione di IIS Configurazione di SharePoint IIS si occupa di HTTP listening, port resolution, e authentication Admin vserver Uno per server Accesso tramite porta scelta in modo random in fase di installazione Es: http://server:21339 End-user vserver Forniscono accesso ai contenuti Ce ne può essere più di uno per server Es: http://portal1, http://portal2 Site collection Sito radice, non ha parent – unità di backup Site collection multipli per vserver Possono essere distribuiti su DB diversi Es: http://portal1/demo1, http://portal1/demo2 Site (Web) Più web per site collection Contenuti nello stesso DB dove si trova il site Es: http://portal1/demo1/subsite1, http://portal1/demo1/subsite2 I siti di SP non sono in relazione con i siti di IIS (non sono configurati nel metabase di IIS)
Web Server – Dettagli Managed objects areaccessed here HTTP Requests ISAPI Filter (STSFLTR.DLL)) Inclusions/Exclusions Static Page Gets ASP.NET Handler Direct (_layouts directory). Examples: Create New View, User Profile and Custom Apps. Safe (lists, web part pages) Managed objects (SP Object Model) Content, profile, service, and config db access Unmanaged Code List/View Rendering FrontPage server extensions DAV Static document gets Database I/O IIS ISAPI Filter Static Pages FrontPage RPC DAV .aspx .asmx ASP.NET Handler ISAPI Ext Direct Safe ASP.NET SharePoint Unmanaged Code Config ADO.NET Service Profile Content Managed objects areaccessed here
Esecuzione di pagine ASPX – Direct vs. Safe In direct mode, le pagine funzionano come pagine ASP.NET standard (application pages) Pagine sotto la directory /_layouts, direttamente nel FS Disponibili per TUTTI i siti Pagine amministrative, non modificabili da browser (non hanno Web Part zone in cui aggiungere web part) Sono comunque eseguite sotto il contesto di SharePoint, e possono accedere ai suoi oggetti In safe mode le pagine si trovano nel DB, e vengono recuperate ed eseguite dinamicamente (user pages) Classi SharePointHandlerFactory e SharePointHandler I controlli su queste pagine (tipicamente Web Part) devono essere stati registrati come safe (sicuri) affinché possono essere caricati Non è possibile eseguire script in-line Tipicamente possono essere personalizzate dall’utente, a runtime Se il layout della pagina non è stato personalizzato, la struttura è caricata direttamente da FS (più veloce) e le query su DB recuperano solo le Web Part da inserire Più siti possono usare la stessa pagina in cache, per migliorare la scalabilità
Codice unsafe Il modello ad oggetti di SharePoint e il Framework per le Web Part sono dei layer sottili sopra DLL unmanaged (owssvr.dll) Supporto per FrontPage 2003 Server Extensions Supporto per il protocollo DAV Database Input/output Fornisce logica per gestire le liste, interpretare il CAML (Collaborative Application Markup Language) e produrre l’HTML di output delle viste CAML è usato per definire l’HTML e Javascript che verrà generato Tag per output condizionale Nota: SPS03 usa anche ADO.NET per un accesso managed ai suoi database
Web Part Framework ASP.NET Page Controlli ASP.NET che ereditano dalla classe base WebPart, che a sua volta eredita da System.Web.UI.Control Web Part zone Le Web Part sono controlli ASP.NET server-side che vengono inseriti all’interno di pagine o zone eseguite nel contesto di SharePoint Forniscono caratteristiche comuni, offerte dal framework Titolo, bordi, stato (minimizzato ecc.) Supporto per drag & drop Proprietà shared o per utente I controlli sulla pagina sono determinati da record del DB dei contenuti Implementano interfacce standard per comunicare le une con le altre
SQL Server – 5 tipi di database WSS Configuration Database: contiene informazioni di configurazione della web farm, l’elenco dei vserver e delle collezioni di siti, riferimenti ai DB di contenuti, e degli altri componenti di infrastruttura Content Database (Site): contiene tutti i dati dei siti/web (metadati e dati delle liste, documenti) Schema fisso indipendentemente da numero di siti e liste STS usava un DB per ogni sito, e una tabella per ogni lista Profile Database: contiene i profili personali degli utenti, e le configurazioni delle audience per il targeting dei contenuti Services database: supporta i servizi di search, indexing, e dei job schedulati (subscriptions/alerts) Single Sign On (SSO) Database: credenziali criptate, per utente, di applicazioni esterne
Configuration Database
Content Database Sites: impostazioni delle site collection Webs: impostazioni dei siti di una site collection Lists: definizioni della struttura delle liste Docs: pagine e file di document library, allegati di list item Se Content è NULL, la pagina non è stata personalizzata UserData: dati di colonne custom associate a liste e librerie Links: link tra pagine/webpart e file WebParts: informazioni su Web Part e List Views di siti / pagine Personalization: personalizzazioni sulle Web Part
.NET Object Model WSS e SPS offrono entrambi un completo modello ad oggetti Collezione di assembly .NET (scritti in C#) disponibili sul server Accessibile da ASP.NET o da qualsiasi altro processo server-side Espone la maggior parte dei metadati (struttura di siti, liste ecc.) e dei dati Cosa posso fare con l’object model? Leggere e modificare proprietà del sito web Eseguire operazioni amministrative, come la creazione di siti web, utenti, ruoli ecc. Aggiungere, modificare, cancellare e recuperare dati da qualsiasi lista Creare nuove liste e impostarne la struttura (numero e tipo di campi) Lavorare con documenti (Word, Excel, InfoPath ecc.) delle document library
.NET Object Model – Scenari di utilizzo Dall’interno di Web Part da caricare in pagine e zone esistenti del sito In intere pagine/applicazioni ASP.NET custom Singole pagine o un intera applicazione web possono essere create sotto la directory /_layouts Questo permette alle pagine di assere accessibili, e di girare sotto il contesto di siti diversi. Es: http://server/_layouts/myapp/mypage.aspx http://server/subsite1/_layouts/myapp/mypage.aspx Da un programma WinForms/console che gira sul server
.NET Object Model Referenziare assembly “Windows SharePoint Services” Includere il namespace “Microsoft.SharePoint” e sottostanti List Data SPField SPFieldCollection SPListCollection SPList SPListItemCollection SPListItem SPView Administration SPGlobalAdmin SPQuota SPVirtualServer
.NET Object Model – Le basi Il modello a oggetti di SharePoint ha tre oggetti di primo livello: SPWeb (rappresenta un singolo sito) SPSite (rappresenta una collezione di siti) SPGlobalAdmin (accesso a impostazioni globali) Per leggere/scrivere dati all’interno di un sito bisogna prima ottenere un riferimento all’oggetto SPWeb che identifica il sito stesso Proprietà principali: Web.Title (restituisce il titolo del sito) Web.Lists (restituisce la collezione di liste del sito) Web.Users (restituisce la collezione di utenti del sito) SPWeb web = SPControl.GetContextWeb(Context);
.NET Object Model – Leggere dati Quando si legge un campo di un item, alla proprietà indexer si può passare il titolo della colonna (Es: “Due Date”) oppure il nome interno (Es: “DueDate”) E’ sempre meglio usare il nome interno, perché non varia anche se la colonna viene rinominata. Come recuperare nomi interni/titoli? NOTA: per le proprie liste custom si consiglia di creare le colonne con dei nomi semplici (senza spazi), e poi rinominarle per cambiare il titolo -> il nome interno resta invariato! SPList tasks = web.Lists["Tasks"]; foreach (SPField field in tasks.Fields) Response.Write(field.InternalName + " - " + field.Title + "<br>");
.NET Object Model – Modificare dati Modificare le proprietà di una lista Modificare i dati di un singolo item esistente Aggiungere un nuovo item alla lista NOTA: affinché le modifiche siano rese persistenti deve essere chiamato il metodo Update tasks.Title = "Attività"; tasks.Description = "Lista delle attività"; tasks.Update(); SPListItem task = tasks.items[0]; task["Status"] = “Completed"; task["Title"] = “Aggiornare presentazione"; task.Update(); SPListItem task = tasks.Items.Add(); // impostare tutti i campi di task e chiamare Update...
L’Object Model tramite Web Service Gli assembly con l’object model di SharePoint possono essere usati solo da programmi server-side E se voglio accedere ai siti, liste e documenti da un qualsiasi client? (applicazione WinForms su client remoto, Pocket PC ecc.) Molte funzionalità dell’object model sono esposte da un web service, che fa da componente di facade Permette di manipolare siti, liste, viste, elementi ecc. Funzionalmente simile all’object model delle librerie sul server, ma con meno metodi, per minimizzare il numero di transazioni (chunky vs. chatty interfaces) Viene usato dalle applicazioni di Office per accedere ai dati in SharePoint
L’Object Model tramite Web Service Creare un’applicazione WinForms Dalla finestra di dialogo “Add Web Reference” inserire l’Url del web service per le liste. Es: http://server/_vti_bin/lists.asmx Altri web service: UserGroups.asmx – accesso a utenti e gruppi Webs.asmx – accesso ai siti Views.asmx – accesso alle viste server.Lists listService = new server.Lists(); listService.Url = "http://server/sites/sitename/_vti_bin/Lists.asmx"; listService.Credentials = System.Net.CredentialCache.DefaultCredentials; System.Xml.XmlNode node = listService.GetListCollection(); foreach(System.Xml.XmlNode xmlnode in node) Debug.WriteLine(xmlnode.Attributes["ID"].Value);
Document Library Events E’ possibile intercettare molti eventi relativi il contenuto delle document library Cancel Check Out Check In Check Out Copy Delete Insert Move / Rename Update Utili per l’implementazione di workflow Attualmente questo supporto non è esteso alle normali liste!
Risorse Ontolica SharePoint Explorer SharePoint Configuration Analyzer Vista ad albero di server, siti, web e liste di SPS e WSS Di ogni oggetto è possibile leggere tutte le proprietà Per ogni lista è possibile vedere la struttura e i dati presenti Utile durante la fase di sviluppo per controllare ID, schema XML e altre proprietà degli oggetti http://www.ontolica.com/English/Products/SharePointExplorer/SharePointExplorerHome.html SharePoint Configuration Analyzer Verifica impostazioni e identifica configurazioni errate Report sull’utilizzo di web Part Elenco di package e file di configurazione presenti sul server http://www.microsoft.com/downloads/details.aspx?FamilyID=918f8c18-89dc-4b47-82ca-34b393ea70e1&DisplayLang=en
Domande? http://www.ugisharepoint.it http://www.dotnet2themax.it/blog