.NET Development su
tecnologia SharePoint Parte 2
ASP.NET Web Part, Master Page, Data Rendering
Paolo Pialorsi
[email protected]
DevLeap
http://www.devleap.com/
Roberto Brunetti
[email protected]
DevLeap
http://www.devleap.com/
ASP.NET Integration
SP v3 <-> ASP.NET 2.0
Maggiore integrazione
Ci sono ancora alcune
differenze
Windows
SharePoint
Services
“v2”
ASP.NET 1.1
SharePoint ha
Modello basato su
template
Un utente può editare le
pagine
ASP.NET 2.0
Windows
SharePoint
Services “v3”
SharePoint per sviluppatori ASP.NET
Differenze nel modello di security
I Knowledge Worker possono editare le pagine
Molti siti, basati su Template
No-Code page
No-Code Behind page
SafeControls
Content
Database
Customized
ASPX Pages
Web Front
End
Template
ASPX Pages
_layouts
Application
ASPX Pages
Integrazione
IIS -> ASP.NET
Autenticazione
Windows Authentication
Forms Authentication
Membership
Per entrambi Role Manager
Web Parts
Master Page
Web Parts
Digital Dashboard del 99
in chiave .NET
Obiettivo
Per l’utente
UI flessibile
Contenuto personalizzato
Per lo sviluppatore
Ton di pre-written code
Personalizzazione di UI
Customizzazione semplice
Contenuto complesso
Plumbing già creato !
ASP.NET Web Parts
Building Block per siti dinamici
Utilizzabile in qualunque web app
Portal, contenuti, intranet, internet
Supporto Windows e Form Authentication
Integrazione con ASP.NET Control
Ogni controllo può essere una Web Part
Connessioni semplici e potenti
Flessibile e estendibile
Supporto per servizi ASP.NET
Personalization, Role Management, Membership,
Profile.. ecc
Visual Studio Designer Full !
Giro sul sito
DLASPNET20/WebParts
Display Mode
Browse
Design
Edit
Catalog
Connection
Il Cervello: Web Part Manager
Non-visual
<ASP:WebPartManager runat=server ... />
Traccia lo stato della pagina
Browse, Catalog, Connect, Design, Edit
Gestisce le Zone e i Controlli
Traccia le Part in ogni Zone
Gestisce le Web Part
Add, Close, Delete, Move
Gestisce le comunicazioni fra controlli
Obbligatorio !
WebPartZone
Gestore di layout per server control
Sezione/Porzione UI
Una Zone può contenere più controlli
Rendering di elementi UI
Border, Title, Verbs
Una pagina può contenere più Zone
Una Zone è legata al WebPartDisplayMode
Edit visualizza EditorZone
Catalog visualizza CatalogZone
Connection visualizza ConnectionZone
WebPartZone sempre visualizzato
Zone Layout
WebPartZone
EditorZone
Zone Layout
DLASPNET20/WebParts
Part
Qualunque server side control o user control
si comporta come Web Part
System.Web.UI.WebControls.WebPart
Classe base
Definisce come l’utente interagisce con la Web
Part
Custom verbs
Settaggi per titolo e Catalog
Built-in Control per le funzionalità in una
zona
Web Part Control
Literal
LayOutEditorPart
Part: Content
User Control
AppearanceEditorPart
UI Element
TitleIcon
Title
Verbs
Chrome
Content
Verb
Elementi che consentono azioni
WebPartZone fornisce
Close, Minimize, Restore, Help, Edit, Connect,
Export
Custom Verb derivando WebPart
Costruire una vera Web Part
Derivare da
System.Web.UI.WebControls.WebPart
System.Web.UI.Control
O qualunque derivata
Aggiungere membri
Override ChildControlCreated/Render
Aggiungere a una Zone
Non usare ViewState
Usa Personalization in auto dietro le quinte
WebPart Base Class
Più controllo su tutto rispetto alle interfacce. Si
può
Gestire Interazione con l’utente
AllowClose, AllowExport, AllowMinimize..etc
Aggiunta di custom verb
Icona per titolo e Catalogo
Help mode e Help URL
Error Message per l’importazione
Container Control
Deriva da <asp:Panel>
Può includere text, markup, e server side control
Lavora anche fuori dalle WebPart !!!
PrevisioniWebPart.cs
Deriva da WebPart
Definisce proprietà Custom ZipCode
WebBrowsable
Personalizabile
WebDisplayName
Si vede anche nel Designer di VS 2005
WebDescription
ToolTip siulla riga
Per usarlo si registra come sempre
Proprietà esposta accessibile nel Designer di VS
2005
TextDisplayWebPart.cs
Tolgo il verbo Close e Minimize
In Get proprietà AllowClose/Minimize
Override di RenderContent
Crea Label
Aggiunge Label
Aggiunta di Verb “Save”
Override Verbs
Per usarlo si registra come sempre
In DesignMode provare Verb
CatalogMode
Export/Import
ExportMode=“All” in Default.aspx
Su WebPart “vere”
Serve anche web.config
<webParts enableExport=“true”>
Es su PrevisioniWebPart
Da codice
ExportMode=WebPartExportMode.All
SharePoint Web Part
Tipi di SharePoint Web Part
ASP.NET Web Part
Microsoft.Web.UI.WebControls.WebParts.WebPart
WSS Web Part
Microsoft.SharePoint.WebPartPages.WebPart
Client Connection, Caching, Work Item
Usano XML Serialization
Hybrid Web Part (v2)
Microsoft.SharePoint.WebPartPages.WebPart
Utilizzate per la migrazione
Usano ASP.NET Serialization
Limitazioni sulla integrazione
Si possono usare le Web Part ASP.NET
2.0
Ma non le pagine contenenti Web Part
Occorre usare SPWebPartZones e
SPWebPartManager
Non esiste supporto built-in .ASCX (user
controls) come Web Parts
Si possono usare .ASCX nelle pagine
Si possono creare però Wrapper per ASCX
Forse nella versione finale
Creare una Web Part
[DefaultProperty(“ImageLink"),
ToolboxData("<{0}:DemoWP runat=server></{0}:DemoWP>")]
[XmlRoot(Namespace="FirstSimpleWebPart")]
public class DemoWP: Microsoft.SharePoint.WebPartPages.WebPart
{
[WebPartStorage(Storage.Shared),
Resources("ImageLinkLiteral", "Advanced", "ImageLink"),
XmlElement("ImageLink", IsNullable=false)]
public string ImageLink { get; set; }
}
C#
L’albero genealogico
Creare una WebPart
Definire i controlli child
I controlli child possono essere definiti come membri
privati/protected nel codice della classe, come nei
WebControl
Ridefinire CreateChildControls per configurarli e
aggiungerli (Controls.Add) al controllo
Il loro rendering sarà gestito dal metodo
protected void RenderWebPart(HtmlTextWriter output);
che internamente richiama RenderChildren
La gestione degli eventi e del postback passa attraverso
il motore di Sharepoint che fa da host delle nostre Web
Part
Strong Name e GUID
sn –k NomeChiave.snk
[assembly: AssemblyVersion("1.0.0.1")]
[assembly: AssemblyKeyFile(“keyfile.snk")]
[Guid("12F8AFE7-3E99-4fd1-B6ACC5F36F6E6B06")]
Deployment manuale (development)
Se siamo in development possiamo
Project Output: .\bin\ del web site
Copiare file DWP nella BIN
<?xml version="1.0" encoding="utf-8"?>
<WebPart xmlns="http://schemas.microsoft.com/WebPart/v2" >
<Title>First Simple Web Part</Title>
<Description>This is a first simple Web Part.</Description>
<Assembly>FirstSimpleWebPart, Version=1.0.0.1, Culture=neutral,
PublicKeyToken=684a1baf4f6ac767</Assembly>
<TypeName>FirstSimpleWebPart.FirstWP</TypeName>
</WebPart>
XML
Definire nel web.config del web site l’assembly come
SafeControl
<SafeControl Assembly="FirstSimpleWebPart, Version=1.0.0.1, Culture=neutral,
PublicKeyToken=684a1baf4f6ac767" Namespace="FirstSimpleWebPart"
TypeName="*" Safe="True" />
XML
Deployment via .CAB
Creare un file .CAB
Da VS.NET creare un progetto del gruppo “Setup and
Deployment” di tipo “Cab Project”
Inserire nel file
Assembly.DLL
Manifest.XML
Risorse
WebPart.DWP
Cioè scegliere dal progetto della Web Part
Primary Output
Content Files
Usare STSADM.EXE per il deployment (vedi
poi...)
STSADM.EXE –o *wppack
STSADM.EXE è il tool a riga di comando per la
gestione di WSS
I comandi relativi alle Web Part sono:
addwppack –f file.cab
Aggiunge un nuovo Web Part Package (CAB)
deletewppack –name file.cab
Rimuove un Web Part Package
enumwppacks
Elenca i Web Part Package installati
Per esempio per installare un WPPack:
STSADM.EXE –o addwppack –f file.cab –url
http://site/
Web Part deployment
Sicurezza
A partire da ASP.NET 1.1 è possibile sfruttare livelli di
trust personalizzati
WSS definisce dei custom Permission
SharePointPermission (ObjectModel, UnsafeSaveOnGet ,
Unrestricted)
WebPartPermission (Connections, Unrestricted)
I livelli di trust di ASP.NET sono
Full
High
Medium
Low
Minimal
WSS definisce anche
WSS_Minimal
WSS_Medium
Conseguenze
A volte le Web Part e le estensioni non
sono autorizzate a funzionare
SecurityException: SharePointPermission
Conviene gestire l’errore e/o ricordarsi di
configurare correttamente il livello di Trust
Per esempio con WSS_Minimal una Web
Part non può utilizzare il Managed Object
Model
Serve almeno WSS_Medium
Master Page
Master Page
Definiscono Layout
E volendo
comportamento
Master Page “Chrome” (default.master)
Le pagina puntano
alla Master Page
Master Page
definisce
“Placeholder” dove
le pagine vanno a
“scrivere”
Content Page (default.aspx)
Master Pages
Placeholder
ASP.NET 2.0 Master Page
Possono essere nidificate
Master
Master di Sezione 1
Pagine sezione 1
Master di Sezione 2
Pagine sezione 2
Possono usare Property Override
Meccanismo nativo dei controlli di ASP.NET
2.0 per modificare il valore di una proprietà in
base al browser che effettua la richiesta
Es. Se FireFox -> Master = “Color.master”
Se Pocket IE -> Master = “Little.master”
Master Pages In WSS
Ogni pagina punta a una Master Page
Ogni Site WSS ha una MPG (Gallery)
I metadati del Site indicano dove vercare
le Master Page
Le Content Page per default usano la MPG
del Site
Le Application Page per default la directory
_layout
Site metadata indicates where WSS looks
for a master page
Master Page Token
Due token dinamici
~masterurl/default.master
Punta a spweb.MasterUrl
~masterurl/custom.master
Punta a spweb.CustomMasterUrl
Due token statici
~sitecollection/default.master
~site/default.master
SharePoint Page Layout
Application Pages
Content Pages - http://myserver/
spweb.MasterUrl
/_layouts/
application.master
/shared documents/
/
/_catalogs/masterpage/
default.aspx
allitems.aspx
default.master
.aspx
.aspx
.master
.master
/_layouts/
create.aspx
“ghosting”
SiteTemplates\STS
default.aspx
Pages\
Global\
viewpage.aspx default.master
File System - \.. \web server extensions\12\
.aspx
Master Page custom
Extensibility Point
Cosa
Toolbars, Menu, Pagine “Settings”
Link alle pagine
Usare controlli ASP.NETsulle toolbar
Associate
List type
Content type
File Type
Central Admin
Site Settings
Content Type Settings
Display Form ToolBar
View ToolBar
Site Actions
Welcome Menu
“ECB”
Visual Studio Extensions
for Sharepoint
“Visual Studio Extensions”
Supporto operativo a chi sviluppa soluzioni per
SharePoint
Aggiunge dei template a VS2005
VS Project, Item Templates
Build, Deploy, Debug
WSS XSD con XML intellisense
Forse ci sarà anche un tool per esportare i
contenuti dei site da un ContentDB (devDB) ad
un altro (productionDB)
Servirà per creare
Web Part
Site Definition
List Definition
Feature Definition
Event Handler
Workflow Activity
Mobility
Mobile Page Architecture
http://mysitename/m
http://mysitename/_layouts/mobile/default.aspx
Usa ASP.NET
Property Override
Cambia Home Page
Con redirect
In base al template
Team Site
Mobile Pages
mbllists.aspx
view.aspx
newform.aspx
dispform.aspx
Redirect
editform.aspx
default.aspx
Personalizzabile da
bloghome.aspx
Web Template Type
List Template Type
Field Type
viewcomment.aspx
newpost.aspx
disppost.aspx
newcomment.aspx
Blog Site
Mobile Pages
delete.aspx
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 2