.NET Development su tecnologia SharePoint Parte 2 ASP.NET Web Part, Master Page, Data Rendering...

Post on 01-May-2015

217 views 0 download

transcript

.NET Development su .NET Development su tecnologia SharePoint tecnologia SharePoint Parte 2Parte 2

ASP.NET Web Part, Master Page, Data Rendering

Paolo PialorsiPaolo Pialorsipaolo@devleap.itpaolo@devleap.it

DevLeapDevLeaphttp://www.devleap.com/http://www.devleap.com/

Roberto BrunettiRoberto Brunettiroberto@devleap.itroberto@devleap.it

DevLeapDevLeaphttp://www.devleap.com/http://www.devleap.com/

ASP.NET IntegrationASP.NET IntegrationSP v3 <-> ASP.NET 2.0

Maggiore integrazione

Ci sono ancora alcune differenze

SharePoint haModello basato su template

Un utente può editare le pagine

ASP.NET 2.0ASP.NET 2.0

Windows Windows SharePoint SharePoint Services Services

“v3”“v3”

Windows Windows SharePoint SharePoint Services Services

“v2”“v2”

ASP.NET 1.1ASP.NET 1.1

SharePoint per sviluppatori SharePoint per sviluppatori ASP.NETASP.NET

Differenze nel modello di securityI Knowledge Worker possono editare le pagine

Molti siti, basati su Template

No-Code pageNo-Code Behind pageSafeControls

Template Template ASPX PagesASPX Pages

_layouts _layouts Application Application ASPX PagesASPX Pages

Customized Customized ASPX Pages ASPX Pages

Web Front Web Front EndEnd

Content Content DatabaseDatabase

IntegrazioneIntegrazioneIIS -> ASP.NET

AutenticazioneWindows AuthenticationForms Authentication

Membership

Per entrambi Role Manager

Web Parts

Master Page

Web PartsWeb Parts

Digital Dashboard del 99in chiave .NET

ObiettivoObiettivo

Per l’utenteUI flessibileContenuto personalizzato

Per lo sviluppatoreTon di pre-written code

Personalizzazione di UI

Customizzazione semplice

Contenuto complesso

Plumbing già creato !

ASP.NET Web PartsASP.NET Web PartsBuilding Block per siti dinamiciUtilizzabile in qualunque web app

Portal, contenuti, intranet, internet Supporto Windows e Form Authentication

Integrazione con ASP.NET ControlOgni controllo può essere una Web PartConnessioni semplici e potenti

Flessibile e estendibileSupporto per servizi ASP.NET

Personalization, Role Management, Membership, Profile.. ecc

Visual Studio Designer Full !

Giro sul sitoGiro sul sito

DLASPNET20/WebParts

Display ModeDisplay Mode

BrowseDesignDesign

EditEditCatalogCatalog

ConnectionConnection

Il Cervello: Web Part Il Cervello: Web Part ManagerManager

Non-visual<ASP:WebPartManager runat=server ... />

Traccia lo stato della paginaBrowse, Catalog, Connect, Design, Edit

Gestisce le Zone e i ControlliTraccia le Part in ogni Zone

Gestisce le Web PartAdd, Close, Delete, Move

Gestisce le comunicazioni fra controlli

Obbligatorio !

WebPartZoneWebPartZone

Gestore di layout per server controlSezione/Porzione UI

Una Zone può contenere più controlli

Rendering di elementi UIBorder, Title, Verbs

Una pagina può contenere più ZoneUna Zone è legata al WebPartDisplayMode

Edit visualizza EditorZone

Catalog visualizza CatalogZone

Connection visualizza ConnectionZone

WebPartZone sempre visualizzato

Zone LayoutZone Layout

WebPartZoneWebPartZone

EditorZoneEditorZone

Zone LayoutZone Layout

DLASPNET20/WebParts

PartPart

Qualunque server side control o user control si comporta come Web Part

System.Web.UI.WebControls.WebPartClasse baseDefinisce come l’utente interagisce con la Web PartCustom verbsSettaggi per titolo e Catalog

Built-in Control per le funzionalità in una zona

Part: ContentPart: ContentWeb Part ControlWeb Part Control

LayO

utE

dit

orP

art

LayO

utE

dit

orP

art

AppearanceEditorPartAppearanceEditorPartUser ControlUser Control

Litera

lLite

ral

UI ElementUI Element

VerbElementi che consentono azioniWebPartZone fornisce

Close, Minimize, Restore, Help, Edit, Connect, Export

Custom Verb derivando WebPart

TitleTitle VerbsVerbs

Chrome

Chrome

ContentContent

TitleIconTitleIcon

Costruire una vera Web Costruire una vera Web PartPartDerivare da

System.Web.UI.WebControls.WebPartSystem.Web.UI.Control

O qualunque derivata

Aggiungere membri

Override ChildControlCreated/Render

Aggiungere a una Zone

Non usare ViewStateUsa Personalization in auto dietro le quinte

WebPart Base ClassWebPart Base ClassPiù controllo su tutto rispetto alle interfacce. Si può

Gestire Interazione con l’utenteAllowClose, AllowExport, AllowMinimize..etc

Aggiunta di custom verbIcona per titolo e CatalogoHelp mode e Help URLError Message per l’importazione

Container ControlDeriva da <asp:Panel>Può includere text, markup, e server side controlLavora anche fuori dalle WebPart !!!

PrevisioniWebPart.csPrevisioniWebPart.csDeriva da WebPartDefinisce proprietà Custom ZipCode

WebBrowsable

Personalizabile

WebDisplayNameSi vede anche nel Designer di VS 2005

WebDescriptionToolTip siulla riga

Per usarlo si registra come sempreProprietà esposta accessibile nel Designer di VS 2005

TextDisplayWebPart.csTextDisplayWebPart.cs

Tolgo il verbo Close e MinimizeIn Get proprietà AllowClose/Minimize

Override di RenderContentCrea Label

Aggiunge Label

Aggiunta di Verb “Save”Override Verbs

Per usarlo si registra come sempre

In DesignMode provare Verb

CatalogModeCatalogModeExport/Import

ExportMode=“All” in Default.aspxSu WebPart “vere”

Serve anche web.config <webParts enableExport=“true”>

Es su PrevisioniWebPart

Da codice ExportMode=WebPartExportMode.All

SharePoint Web PartSharePoint Web Part

Tipi di SharePoint Web Tipi di SharePoint Web PartPartASP.NET Web Part

Microsoft.Web.UI.WebControls.WebParts.WebPart

WSS Web PartMicrosoft.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 Limitazioni sulla integrazioneintegrazioneSi possono usare le Web Part

ASP.NET 2.0Ma 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 pagineSi possono creare però Wrapper per ASCX

Forse nella versione finale

Creare una Web PartCreare 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 genealogicoL’albero genealogico

Creare una WebPartCreare una WebPart

Definire i controlli childDefinire i controlli childI 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 metodoprotected 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 GUIDStrong Name e GUID

sn –k NomeChiave.snk

[assembly: AssemblyVersion("1.0.0.1")]

[assembly: AssemblyKeyFile(“keyfile.snk")]

[Guid("12F8AFE7-3E99-4fd1-B6AC-C5F36F6E6B06")]

Deployment manuale Deployment manuale (development)(development)

Se siamo in development possiamoProject Output: .\bin\ del web site

Copiare file DWP nella BIN

Definire nel web.config del web site l’assembly come SafeControl

<?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

<SafeControl Assembly="FirstSimpleWebPart, Version=1.0.0.1, Culture=neutral, PublicKeyToken=684a1baf4f6ac767" Namespace="FirstSimpleWebPart"

TypeName="*" Safe="True" />

XML

Deployment via .CABDeployment via .CABCreare un file .CAB

Da VS.NET creare un progetto del gruppo “Setup and Deployment” di tipo “Cab Project”

Inserire nel fileAssembly.DLLManifest.XMLRisorseWebPart.DWP

Cioè scegliere dal progetto della Web PartPrimary OutputContent Files

Usare STSADM.EXE per il deployment (vedi poi...)

STSADM.EXE –o *wppackSTSADM.EXE –o *wppackSTSADM.EXE è il tool a riga di comando per la gestione di WSSI comandi relativi alle Web Part sono:

addwppack –f file.cabAggiunge un nuovo Web Part Package (CAB)

deletewppack –name file.cabRimuove un Web Part Package

enumwppacksElenca i Web Part Package installati

Per esempio per installare un WPPack:STSADM.EXE –o addwppack –f file.cab –url http://site/

Web Part deploymentWeb Part deployment

SicurezzaSicurezzaA partire da ASP.NET 1.1 è possibile sfruttare livelli di trust personalizzatiWSS definisce dei custom Permission

SharePointPermission (ObjectModel, UnsafeSaveOnGet , Unrestricted)WebPartPermission (Connections, Unrestricted)

I livelli di trust di ASP.NET sonoFullHighMediumLowMinimal

WSS definisce ancheWSS_MinimalWSS_Medium

ConseguenzeConseguenzeA 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 PageMaster Page

Master PageMaster PageDefiniscono Layout

E volendo comportamento

Le pagina puntano alla Master Page Master Page definisce “Placeholder” dove le pagine vanno a “scrivere”

Master Page “Chrome” (default.master)Master Page “Chrome” (default.master)

Content Page Content Page (default.aspx)(default.aspx)

Master Master Pages Pages PlaceholderPlaceholder

ASP.NET 2.0 Master PageASP.NET 2.0 Master PagePossono essere nidificate

MasterMaster di Sezione 1

Pagine sezione 1

Master di Sezione 2Pagine sezione 2

Possono usare Property OverrideMeccanismo nativo dei controlli di ASP.NET 2.0 per modificare il valore di una proprietà in base al browser che effettua la richiestaEs. Se FireFox -> Master = “Color.master”

Se Pocket IE -> Master = “Little.master”

Master Pages In WSSMaster Pages In WSSOgni pagina punta a una Master PageOgni 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 SiteLe Application Page per default la directory _layout

Site metadata indicates where WSS looks for a master page

Master Page TokenMaster Page TokenDue token dinamici

~masterurl/default.masterPunta a spweb.MasterUrl

~masterurl/custom.masterPunta a spweb.CustomMasterUrl

Due token statici~sitecollection/default.master~site/default.master

SharePoint Page LayoutSharePoint Page Layout

default.aspx

spweb.MasterUspweb.MasterUrlrl

.aspx .master

Content Pages - http://myserver/

/ /_catalogs/masterpage/allitems.aspx

.aspx

/shared documents/

create.aspx

.aspx

/_layouts/

Application Pages

.master

/_layouts/

application.master

File System - \.. \web server extensions\12\

default.aspxSiteTemplates\STS Global\

viewpage.aspx

Pages\

default.master

“ghosting”

default.master

Master Page customMaster Page custom

Extensibility PointExtensibility Point

CosaCosaToolbars, Menu, Pagine “Settings”

Link alle pagineUsare controlli ASP.NETsulle toolbarAssociate

List type

Content type

File Type

Content Type SettingsContent Type Settings

Site SettingsSite Settings

Central AdminCentral Admin

Display Form ToolBarDisplay Form ToolBar

View View ToolBarToolBar

Welcome Welcome MenuMenu

Site ActionsSite Actions

““ECB”ECB”

Visual Studio ExtensionsVisual Studio Extensionsfor Sharepointfor Sharepoint

““Visual Studio Extensions”Visual Studio Extensions”

Supporto operativo a chi sviluppa soluzioni per SharePointAggiunge 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 creareServirà per creare

Web Part

Site Definition

List Definition

Feature Definition

Event Handler

Workflow Activity

MobilityMobility

Mobile Page ArchitectureMobile Page Architecture

default.aspx

mbllists.aspx

bloghome.aspx

view.aspx dispform.aspx

editform.aspx

newform.aspx

newpost.aspx disppost.aspx

viewcomment.aspx

newcomment.aspx

delete.aspx

Team Site Mobile Pages

Blog Site Mobile Pages

Redirect

http://mysitename/m http://mysitename/_layouts/mobile/default.aspx

Usa ASP.NET Property OverrideCambia Home Page

Con redirect

In base al template

Personalizzabile daWeb Template Type

List Template Type

Field Type

Ulteriori Ulteriori approfondimenti…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!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.