michael hofer 1stquad solutions [email protected] endlich kontrollierte sharepoint-erweiterungen!...
TRANSCRIPT
Michael Hofer1stQuad [email protected]
SharePoint 2010Sandboxed SolutionsEndlich 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‘
Warum?
Wieso braucht SharePoint Sandboxed Solutions?
Erweiterungen unter MOSS 2007 / WSS 3.0Entwickler entwerfen, entwickeln & testen individuelle Erweiterungen. Entwickler
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
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
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
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.
SharePoint 2010 Sandboxed Solutions
EntwicklerEntwickler entwerfen, entwickeln & testen individuelle Erweiterungen.
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.
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
Architektur
Die Architektur der Sandbox
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
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
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
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
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
Entwicklung
Entwicklung von Sandboxed Solutions
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.
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
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
Demo
Sandboxed Solution entwickeln
Administration
Sandboxed Solutions administrieren & validieren
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
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
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?
Ü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
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) {...}
}
Demo
Sandboxed Solutions administrieren & validieren
Full-Trust Proxies
Die Sandbox mit Full-Trust Proxies erweitern
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
Demo
Die Sandbox mit Full-Trust Proxies erweitern
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.
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
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