36
Michael Hofer 1stQuad Solutions [email protected] SharePoint 2010 Sandboxed Solutions Endlich kontrollierte SharePoint- Erweiterungen! Was ist neu für Entwickler und Administratoren?

Michael Hofer 1stQuad Solutions [email protected] Endlich kontrollierte SharePoint-Erweiterungen! Was ist neu für Entwickler und Administratoren?

Embed Size (px)

Citation preview

Page 1: Michael Hofer 1stQuad Solutions mhofer@1stquad.com Endlich kontrollierte SharePoint-Erweiterungen! Was ist neu für Entwickler und Administratoren?

Michael Hofer1stQuad [email protected]

SharePoint 2010Sandboxed SolutionsEndlich kontrollierte SharePoint-Erweiterungen!Was ist neu für Entwickler und Administratoren?

Page 2: Michael Hofer 1stQuad Solutions mhofer@1stquad.com Endlich kontrollierte SharePoint-Erweiterungen! Was ist neu für Entwickler und Administratoren?

AgendaWarum Sandboxed Solutions?

5‘Die Sandbox-Architektur

5‘Entwicklung (Demo)

15‘Administration (Demo)

15‘Full-Trust Proxies (Demo)

15‘Wrap-Up

5‘

Page 3: Michael Hofer 1stQuad Solutions mhofer@1stquad.com Endlich kontrollierte SharePoint-Erweiterungen! Was ist neu für Entwickler und Administratoren?

Warum?

Wieso braucht SharePoint Sandboxed Solutions?

Page 4: Michael Hofer 1stQuad Solutions mhofer@1stquad.com Endlich kontrollierte SharePoint-Erweiterungen! Was ist neu für Entwickler und Administratoren?

Erweiterungen unter MOSS 2007 / WSS 3.0Entwickler entwerfen, entwickeln & testen individuelle Erweiterungen. Entwickler

Page 5: Michael Hofer 1stQuad Solutions mhofer@1stquad.com Endlich kontrollierte SharePoint-Erweiterungen! Was ist neu für Entwickler und Administratoren?

Erweiterungen unter MOSS 2007 / WSS 3.0Entwickler entwerfen, entwickeln & testen individuelle Erweiterungen.

Administratoren stellen Applikations-Sicherheit mittels spezieller Code-Access-Security (CAS) sicher.Können individuellen Code (meist) nicht prüfen (lassen).

Entwickler

Administratoren

Page 6: Michael Hofer 1stQuad Solutions mhofer@1stquad.com Endlich kontrollierte SharePoint-Erweiterungen! Was ist neu für Entwickler und Administratoren?

Erweiterungen unter MOSS 2007 / WSS 3.0Entwickler entwerfen, entwickeln & testen individuelle Erweiterungen.

Administratoren stellen Applikations-Sicherheit mittels spezieller Code-Access-Security (CAS) sicher.Können individuellen Code (meist) nicht prüfen (lassen).

Site-Collection Besitzer aktivieren & benützen Erweiterungen.Melden schlechte Performance, Fehler und dergleichen.

Entwickler

Administratoren

Site-Collection Besitzer

Page 7: Michael Hofer 1stQuad Solutions mhofer@1stquad.com Endlich kontrollierte SharePoint-Erweiterungen! Was ist neu für Entwickler und Administratoren?

Erweiterungen unter MOSS 2007 / WSS 3.0Entwickler entwerfen, entwickeln & testen individuelle Erweiterungen.

Administratoren stellen Applikations-Sicherheit mittels spezieller Code-Access-Security (CAS) sicher.Können individuellen Code (meist) nicht prüfen (lassen).

Site-Collection Besitzer aktivieren & benützen Erweiterungen.Melden schlechte Performance, Fehler und dergleichen.

Entwickler

Administratoren

Site-Collection Besitzer

Undisposed Objects?Memory Leaks?

Performace?Stabilität?

Der häufigste Grund für SharePoint Support Cases:CUSTOM CODE

Page 8: Michael Hofer 1stQuad Solutions mhofer@1stquad.com Endlich kontrollierte SharePoint-Erweiterungen! Was ist neu für Entwickler und Administratoren?

Neu: Sandboxed Solutions“Normale” SharePoint Solutions (WSP), aberTeilmenge (Subset) der SharePoint Funktionalität / Namespaces wird unterstützt.Code wird in einer geschützten “SandBox” in einem eigenen Prozess mit spezieller CAS ausgeführt:

Mit Ressourcen verbinden, die nicht auf dem lokalen Server sind? Verboten!Das Threading-Modell ändern? Verboten!Auf das Datei-System schreiben? Verboten!Unmanaged Code aufrufen? Verboten!Ressourcen von anderen Site-Collections? Verboten!

Werden von Site-Collection Administratoren in “Solution Gallery” installiert, aktiviert, überwacht, deaktiviert und –installiert.

Page 9: Michael Hofer 1stQuad Solutions mhofer@1stquad.com Endlich kontrollierte SharePoint-Erweiterungen! Was ist neu für Entwickler und Administratoren?

SharePoint 2010 Sandboxed Solutions

EntwicklerEntwickler entwerfen, entwickeln & testen individuelle Erweiterungen.

Page 10: Michael Hofer 1stQuad Solutions mhofer@1stquad.com Endlich kontrollierte SharePoint-Erweiterungen! Was ist neu für Entwickler und Administratoren?

SharePoint 2010 Sandboxed Solutions

Entwickler

Site-Collection Besitzer

Entwickler entwerfen, entwickeln & testen individuelle Erweiterungen.

Site-Collection Besitzer installieren und aktivieren die Erweiterungen.Überwachen und deaktivieren Erweiterungen falls nötig.

Page 11: Michael Hofer 1stQuad Solutions mhofer@1stquad.com Endlich kontrollierte SharePoint-Erweiterungen! Was ist neu für Entwickler und Administratoren?

SharePoint 2010 Sandboxed SolutionsEntwickler entwerfen, entwickeln & testen individuelle Erweiterungen.

Site-Collection Besitzer installieren und aktivieren die Erweiterungen.Überwachen und deaktivieren Erweiterungen falls nötig.

Administratoren überwachen die Gesamtheit der Erweiterungen.Automatisches “Throttling” & Abstellen von problematischen Erweiterungen.

Entwickler

Administratoren

Site Collection Besitzer

Page 12: Michael Hofer 1stQuad Solutions mhofer@1stquad.com Endlich kontrollierte SharePoint-Erweiterungen! Was ist neu für Entwickler und Administratoren?

Architektur

Die Architektur der Sandbox

Page 13: Michael Hofer 1stQuad Solutions mhofer@1stquad.com Endlich kontrollierte SharePoint-Erweiterungen! Was ist neu für Entwickler und Administratoren?

Die Sandbox-Architektur

Worker Service(SPUCWorkerProcess.ex

e)

Full Object Model

Host Services (SPUCHostService.exe)

Execution Manager

(Inside Application Pool)

Subset Object Model

Untrusted Code

IIS(WPW3.EXE)

FRONT END BACK END

Page 14: Michael Hofer 1stQuad Solutions mhofer@1stquad.com Endlich kontrollierte SharePoint-Erweiterungen! Was ist neu für Entwickler und Administratoren?

Worker Service(SPUCWorkerProcess.ex

e)

Full Object Model

Host Services (SPUCHostService.exe)

Execution Manager

(Inside Application Pool)

Subset Object Model

Untrusted Code

IIS(W3WP.EXE)

FRONT END BACK END

Die Sandbox-Architektur

Subset-Model

Request

Page 15: Michael Hofer 1stQuad Solutions mhofer@1stquad.com Endlich kontrollierte SharePoint-Erweiterungen! Was ist neu für Entwickler und Administratoren?

Die Sandbox-Architektur

Worker Service(SPUCWorkerProcess.ex

e)

Full Object Model

Host Services (SPUCHostService.exe)

Execution Manager

(Inside Application Pool)

Subset Object Model

Untrusted Code

IIS(W3WP.EXE)

FRONT END BACK END

Full-Model Request

Page 16: Michael Hofer 1stQuad Solutions mhofer@1stquad.com Endlich kontrollierte SharePoint-Erweiterungen! Was ist neu für Entwickler und Administratoren?

Worker Service(SPUCWorkerProcess.ex

e)

Full Object Model

Host Services (SPUCHostService.exe)

Execution Manager

(Inside Application Pool)

Subset Object Model

Untrusted Code

IIS(W3WP.EXE)

FRONT END BACK END

Die Sandbox-Architektur

Resource Wasting

Call

while(true) { //Do a Bad Bad Thing! }

Run for30sec

Page 17: Michael Hofer 1stQuad Solutions mhofer@1stquad.com Endlich kontrollierte SharePoint-Erweiterungen! Was ist neu für Entwickler und Administratoren?

Sandbox

Code Access SecurityAspNetHostingPermission, Level=MinimalSharePointPermission, ObjectModel=trueSecurityPermission, Flags=Execution

Full Trust

wss_usercode.config

User Code

Framework Code

My.dll

Other.dll System DLL

SharePoint DLL

SharePoint OM

Subset OM

Page 18: Michael Hofer 1stQuad Solutions mhofer@1stquad.com Endlich kontrollierte SharePoint-Erweiterungen! Was ist neu für Entwickler und Administratoren?

Entwicklung

Entwicklung von Sandboxed Solutions

Page 19: Michael Hofer 1stQuad Solutions mhofer@1stquad.com Endlich kontrollierte SharePoint-Erweiterungen! Was ist neu für Entwickler und Administratoren?

Geht NICHTFarm & Web Application FeaturesTimer JobsSharePoint/Visuelle Web PartsVerwenden der WebPartManagerProgrammatische WorkflowsDateien im Dateisystem / SharePoint RootContent Type BindingCustom Action groupsHideCustomAction element

Geht:Content Types, Site ColumnsList Definitions & InstancesWeb TemplatesSite PagesNavigationASP.NET web partsDeklarative WorkflowsEvent Receivers, Feature ReceiversCustom ActionsInfoPath Forms Services (not admin-appr)JavaScript, AJAX, jQuery, SilverlightModule / Dateien

Was geht und was nicht

WebParts in der Sandbox:Müssen von System.Web.UI.WebControls.WebParts.WebPart abgeleitet seinKeine WebPart-ConnectionsKeine asynchronen Post-BacksClient-Scripts müssen beim ScriptManager registriert werden.

Page 20: Michael Hofer 1stQuad Solutions mhofer@1stquad.com Endlich kontrollierte SharePoint-Erweiterungen! Was ist neu für Entwickler und Administratoren?

Einschränkungen im ObjektmodellMicrosoft.SharePoint ausser

• (einige) SPSite Konstruktor• SPSecurity Objekt• SPWorkItem and SPWorkItemCollection Objekte• SPAlertCollection.Add Methode• SPAlertTemplateCollection.Add Methode• SPUserSolution and SPUserSolutionCollection Objekte• SPTransformUtilities

Microsoft.SharePoint.NavigationMicrosoft.SharePoint.Utilities ausser

• SPUtility.SendEmail Methode• SPUtility.GetNTFullNameandEmailFromLogin Methode

Microsoft.SharePoint.WorkflowMicrosoft.SharePoint.WebPartPages ausser

• SPWebPartManager Objekt• SPWebPartConnection Objekt• WebPartZone Objekt• WebPartPage Objekt• ToolPane Objekt• ToolPart Objekt

Referenz: http://msdn.microsoft.com/en-us/library/ee537860(office.14).aspx

Page 21: Michael Hofer 1stQuad Solutions mhofer@1stquad.com Endlich kontrollierte SharePoint-Erweiterungen! Was ist neu für Entwickler und Administratoren?

Gleiches Vorgehen wie bei Farm Solutions: Gleiche Projekt-/Package Struktur,gleiches Objekt- und Deklarationsmodell.

ACHTUNG: Visual Studio 2010 brauchtIntelliSense um Full-Trust Typen zuverstecken, aber der Code wird gegen dievolle API kompiliert!

Workaround: Microsoft.SharePoint.dll Projekt-Reference auf Version der SandBox ändern: [..]\14\UserCode\Assemblies\Microsoft.SharePoint.dll

ACHTUNG: Wieder zurücksetzten vor dem Deployment

Sandboxed Solutions entwickeln

Full Object Model Subset Object Model

MyWebPart.dll

Proxy

Runtime

Page 22: Michael Hofer 1stQuad Solutions mhofer@1stquad.com Endlich kontrollierte SharePoint-Erweiterungen! Was ist neu für Entwickler und Administratoren?

Demo

Sandboxed Solution entwickeln

Page 23: Michael Hofer 1stQuad Solutions mhofer@1stquad.com Endlich kontrollierte SharePoint-Erweiterungen! Was ist neu für Entwickler und Administratoren?

Administration

Sandboxed Solutions administrieren & validieren

Page 24: Michael Hofer 1stQuad Solutions mhofer@1stquad.com Endlich kontrollierte SharePoint-Erweiterungen! Was ist neu für Entwickler und Administratoren?

Ausführung von User-(Sandboxed)-Solutions ist ein Farm-Server Service.

Skalierbar!

Load-BalancingAufgerufener Server, oderUmleitung auf Server nach “Solution Affinity”

Eigene Regeln möglich!

Farm-Architektur & Skalierung

Page 25: Michael Hofer 1stQuad Solutions mhofer@1stquad.com Endlich kontrollierte SharePoint-Erweiterungen! Was ist neu für Entwickler und Administratoren?

In Central AdministrationEinzelne Solutionskomplett blockieren

Quotas setzenPro Site CollectionIn Quota TemplateMaximum & WarningRessource Usage per day

Mit Power ShellGet-SPSite | foreach-object {$_.Quota.UserCodeMaximumLevel = 300}Get-SPSite | foreach-object {$_.Quota.UserCodeWarningLevel = 100}

Administration von Sandboxed Solutions

Page 26: Michael Hofer 1stQuad Solutions mhofer@1stquad.com Endlich kontrollierte SharePoint-Erweiterungen! Was ist neu für Entwickler und Administratoren?

Bei der Ausführung einer Sandboxed Solution werden best. Metriken erfasstz.B. % Prozessor-Zeit oder Nr. von unbehandelten Exceptions

Timer Jobs kompilieren die Metriken und berechnen einen Ressourcen-Verbrauch im PunktesystemWenn alle Sandboxed Solutions einer Site Collection zusammen die täglich möglichen Ressourcen-Punkte verbraucht haben wird die gesamte Sandbox der Site Collection abgestellt.Benutzer sehen den gesamten Verbrauch sowie den individuellen Verbrauch je Solution in der Solution-Gallery:

Wie funktionieren Resource Quotas?

Page 27: Michael Hofer 1stQuad Solutions mhofer@1stquad.com Endlich kontrollierte SharePoint-Erweiterungen! Was ist neu für Entwickler und Administratoren?

Überwachte RessourcenMetric Name Description Units

Resources Per Point

Hard Limit

AbnormalProcessTerminationCount

Process gets abnormally terminated

Count 1 1

CPUExecutionTime CPU exception time Seconds 3,600 60CriticalExceptionCount Critical exception fired Number 10 3

InvocationCountNumber of times solution has been invoked

Count N/A N/A

PercentProcessorTimeNote: # of cores not factored in

Percentage Units of Overall Processor Consumed

85 100

ProcessCPUCycles CPU Cycles 1E+111E+11

ProcessHandleCount Windows Handles 10,000 1,000

ProcessIOBytes(Hard Limit Only) Bytes written to IO

Bytes 01E+08

ProcessThreadCountNumber of Threads in Overall Process

Threads 10,000 200

ProcessVirtualBytes(Hard Limit Only) Memory consumed

Bytes 01E+09

SharePointDatabaseQueryCount

SharePoint DB Queries Invoked

Number 20 100

SharePointDatabaseQueryTimeAmount of time spent waiting

for a query to be performedSeconds 120 60

UnhandledExceptionCount Unhanded Exceptions 50 3

UnresponsiveprocessCountWe have to kill the process because it has become unresponsive

Number 2 1

Page 28: Michael Hofer 1stQuad Solutions mhofer@1stquad.com Endlich kontrollierte SharePoint-Erweiterungen! Was ist neu für Entwickler und Administratoren?

Erlauben, Sandboxed Solutions vor der Aktivierung zu überprüfenCode-Klassen, die von SPSolutionValidator ableiten:

Registrieren:

Validatoren

SPUserCodeService sandboxService = SPUserCodeService.Local;SPSolutionValidator publicKeyTokenSolutionValidator =

new PublicKeyTokenSolutionValidator(sandboxService);

sandboxService.SolutionValidators.Add(publicKeyTokenSolutionValidator);

public class PublicKeyTokenSolutionValidator : SPSolutionValidator{ public const string InternalName = "PublicKeyTokenSolutionValidator";

public PublicKeyTokenSolutionValidator() { ... }

public PublicKeyTokenSolutionValidator(SPUserCodeService sandboxService) : base(InternalName, sandboxService) { ... }

public override void ValidateSolution(SPSolutionValidationProperties properties) { ... }

public override void ValidateAssembly(SPSolutionValidationProperties properties, SPSolutionFile assembly) {...}

}

Page 29: Michael Hofer 1stQuad Solutions mhofer@1stquad.com Endlich kontrollierte SharePoint-Erweiterungen! Was ist neu für Entwickler und Administratoren?

Demo

Sandboxed Solutions administrieren & validieren

Page 30: Michael Hofer 1stQuad Solutions mhofer@1stquad.com Endlich kontrollierte SharePoint-Erweiterungen! Was ist neu für Entwickler und Administratoren?

Full-Trust Proxies

Die Sandbox mit Full-Trust Proxies erweitern

Page 31: Michael Hofer 1stQuad Solutions mhofer@1stquad.com Endlich kontrollierte SharePoint-Erweiterungen! Was ist neu für Entwickler und Administratoren?

Erlauben den Zugriff auf Sandbox-geschützte RessourcenSPProxyOperationsArgs = Bindeglied zwischen Farm und SandboxSPProxyOperation = Farm-Seitig registrierte Full-Trust Operationen

Full-Trust Proxy

Worker Service(SPUCWorkerProcess.exe)

SPUtility. ExecuteRegisteredProxyOperation

SPProxyOperationsArgs

GAC

SPProxyOperation

SPProxyOperationsArgs

Untrusted Code

SecuredResource

Page 32: Michael Hofer 1stQuad Solutions mhofer@1stquad.com Endlich kontrollierte SharePoint-Erweiterungen! Was ist neu für Entwickler und Administratoren?

Demo

Die Sandbox mit Full-Trust Proxies erweitern

Page 33: Michael Hofer 1stQuad Solutions mhofer@1stquad.com Endlich kontrollierte SharePoint-Erweiterungen! Was ist neu für Entwickler und Administratoren?

Top 10 Gründe für Sandboxed Solutions1. Neue Möglichkeiten: Hoster, MS-Online etc.2. Sicherer, stabiler und überwachbar.3. Verändern und installieren keine System-Files.4. Beeinträchtigen keine anderen Site-Collections.5. Kein Application Pool Recycling, separate Prozesse.6. Verwaltung delegiert zu Site-Collection Besitzer.7. Skalierbare Service-Architektur & Load-Balancing.8. Erweiterbar dank Validatoren und Full-Trust-

Proxies.9. (Fast) keine komplexen CAS-Policies mehr.10.Erlauben SLA’s via Resource Quotas.

Page 34: Michael Hofer 1stQuad Solutions mhofer@1stquad.com Endlich kontrollierte SharePoint-Erweiterungen! Was ist neu für Entwickler und Administratoren?

Vielen Dank für Ihre AufmerksamkeitFür mehr Informationen kontaktieren Sie bitte:

Michael HoferSolution Architect

[email protected] 043 541 13 35Mobile 079 825 35 08

1stQuad SolutionsSonnenbergstrasse 328603 Schwerzenbach

Page 35: Michael Hofer 1stQuad Solutions mhofer@1stquad.com Endlich kontrollierte SharePoint-Erweiterungen! Was ist neu für Entwickler und Administratoren?

MSDNWhat‘s new: Sandboxed SolutionsSandboxed Solution ConsiderationsPlan for Sandboxed SolutionsSandboxed Solutions ArchitectureConfigure a farm for Sandboxed SolutionsDeveloping, Deploying and Monitoring Sandboxed Solutions

OtherChannel 9 Sandbox Solutions VideosSharePointDev Wiki – Sandboxed Solutions

Links & Ressourcen

Page 36: Michael Hofer 1stQuad Solutions mhofer@1stquad.com Endlich kontrollierte SharePoint-Erweiterungen! Was ist neu für Entwickler und Administratoren?