Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

Ähnliche Präsentationen


Präsentation zum Thema: "Michael Hofer 1stQuad Solutions Endlich kontrollierte SharePoint-Erweiterungen! Was ist neu für Entwickler und Administratoren?"—  Präsentation transkript:

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

2 Warum Sandboxed Solutions?5 Die Sandbox-Architektur5 Entwicklung (Demo)15 Administration (Demo)15 Full-Trust Proxies (Demo)15 Wrap-Up5

3 Wieso braucht SharePoint Sandboxed Solutions?

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

5 Erweiterungen unter MOSS 2007 / WSS 3.0 Entwickler 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). EntwicklerEntwicklerAdministratorenAdministratoren

6 Erweiterungen unter MOSS 2007 / WSS 3.0 Entwickler 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. EntwicklerEntwicklerAdministratorenAdministratoren Site-Collection Besitzer

7 Erweiterungen unter MOSS 2007 / WSS 3.0 Entwickler 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. EntwicklerEntwicklerAdministratorenAdministratoren Site-Collection Besitzer

8 Normale SharePoint Solutions (WSP), aber Teilmenge (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.

9 SharePoint 2010 Sandboxed Solutions SharePoint 2010 Sandboxed Solutions EntwicklerEntwickler Entwickler entwerfen, entwickeln & testen individuelle Erweiterungen.

10 SharePoint 2010 Sandboxed Solutions SharePoint 2010 Sandboxed Solutions EntwicklerEntwickler Site-Collection Besitzer Entwickler entwerfen, entwickeln & testen individuelle Erweiterungen. Site-Collection Besitzer installieren und aktivieren die Erweiterungen. Überwachen und deaktivieren Erweiterungen falls nötig.

11 SharePoint 2010 Sandboxed Solutions SharePoint 2010 Sandboxed Solutions Entwickler 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. EntwicklerEntwicklerAdministratorenAdministratoren Site Collection Besitzer

12 Die Architektur der Sandbox

13 FRONT END BACK END

14 FRONT END BACK END Subset- Model Request Subset- Model Request

15 FRONT END BACK END Full-Model Request Full-Model Request

16 FRONT END BACK END Resource Wasting Call Run for 30sec

17 SandboxSandbox AspNetHostingPermission, Level=Minimal SharePointPermission, ObjectModel=true SecurityPermission, Flags=Execution Full Trust wss_usercode.configwss_usercode.config User Code Framework Code My.dllMy.dllOther.dllOther.dll System DLL SharePoint DLL SharePoint OM Subset OM

18 Entwicklung von Sandboxed Solutions

19 Geht NICHT Farm & Web Application Features Timer Jobs SharePoint/Visuelle Web Parts Verwenden der WebPartManager Programmatische Workflows Dateien im Dateisystem / SharePoint Root Content Type Binding Custom Action groups HideCustomAction element Geht: Content Types, Site Columns List Definitions & Instances Web Templates Site Pages Navigation ASP.NET web parts Deklarative Workflows Event Receivers, Feature Receivers Custom Actions InfoPath Forms Services (not admin-appr) JavaScript, AJAX, jQuery, Silverlight Module / Dateien WebParts in der Sandbox: Müssen von System.Web.UI.WebControls.WebParts.WebPart abgeleitet sein Keine WebPart-Connections Keine asynchronen Post-Backs Client-Scripts müssen beim ScriptManager registriert werden. WebParts in der Sandbox: Müssen von System.Web.UI.WebControls.WebParts.WebPart abgeleitet sein Keine WebPart-Connections Keine asynchronen Post-Backs Client-Scripts müssen beim ScriptManager registriert werden.

20 Microsoft.SharePoint ausser (einige) SPSite Konstruktor SPSecurity Objekt SPWorkItem and SPWorkItemCollection Objekte SPAlertCollection.Add Methode SPAlertTemplateCollection.Add Methode SPUserSolution and SPUserSolutionCollection Objekte SPTransformUtilities Microsoft.SharePoint.Navigation Microsoft.SharePoint.Utilities ausser SPUtility.Send Methode SPUtility.GetNTFullNameand FromLogin Methode Microsoft.SharePoint.Workflow Microsoft.SharePoint.WebPartPages ausser SPWebPartManager Objekt SPWebPartConnection Objekt WebPartZone Objekt WebPartPage Objekt ToolPane Objekt ToolPart Objekt Referenz:

21 Gleiches Vorgehen wie bei Farm Solutions: Gleiche Projekt-/Package Struktur, gleiches Objekt- und Deklarationsmodell. ACHTUNG: Visual Studio 2010 braucht IntelliSense um Full-Trust Typen zu verstecken, aber der Code wird gegen die volle 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 Full Object Model Subset Object Model MyWebPart.dllMyWebPart.dllProxyProxy Runtime

22 Sandboxed Solution entwickeln

23 Sandboxed Solutions administrieren & validieren

24 Ausführung von User-(Sandboxed)-Solutions ist ein Farm-Server Service. Skalierbar! Load-Balancing Aufgerufener Server, oder Umleitung auf Server nach Solution Affinity Eigene Regeln möglich!

25 In Central Administration Einzelne Solutions komplett blockieren Quotas setzen Pro Site Collection In Quota Template Maximum & Warning Ressource Usage per day Mit Power Shell Get-SPSite | foreach-object {$_.Quota.UserCodeMaximumLevel = 300} Get-SPSite | foreach-object {$_.Quota.UserCodeWarningLevel = 100}

26 Bei der Ausführung einer Sandboxed Solution werden best. Metriken erfasst z.B. % Prozessor-Zeit oder Nr. von unbehandelten Exceptions Timer Jobs kompilieren die Metriken und berechnen einen Ressourcen- Verbrauch im Punktesystem Wenn 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:

27 Metric NameDescriptionUnits Resources Per Point Hard Limit AbnormalProcessTerminationCount Process gets abnormally terminated Count11 CPUExecutionTimeCPU exception timeSeconds3,60060 CriticalExceptionCountCritical exception firedNumber103 InvocationCount Number of times solution has been invoked CountN/A PercentProcessorTimeNote: # of cores not factored in Percentage Units of Overall Processor Consumed ProcessCPUCyclesCPU Cycles1E+11 ProcessHandleCountWindows Handles10,0001,000 ProcessIOBytes (Hard Limit Only) Bytes written to IO Bytes01E+08 ProcessThreadCount Number of Threads in Overall Process Threads10, ProcessVirtualBytes (Hard Limit Only) Memory consumed Bytes01E+09 SharePointDatabaseQueryCountSharePoint DB Queries InvokedNumber20100 SharePointDatabaseQueryTime Amount of time spent waiting for a query to be performed Seconds12060 UnhandledExceptionCountUnhanded Exceptions503 UnresponsiveprocessCount We have to kill the process because it has become unresponsive Number21

28 Erlauben, Sandboxed Solutions vor der Aktivierung zu überprüfen Code-Klassen, die von SPSolutionValidator ableiten: Registrieren: SPUserCodeService sandboxService = SPUserCodeService.Local; SPSolutionValidator publicKeyTokenSolutionValidator = new PublicKeyTokenSolutionValidator(sandboxService); sandboxService.SolutionValidators.Add(publicKeyTokenSolutionValidator); 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) {...} } 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) {...} }

29 Sandboxed Solutions administrieren & validieren

30 Die Sandbox mit Full-Trust Proxies erweitern

31 Erlauben den Zugriff auf Sandbox-geschützte Ressourcen SPProxyOperationsArgs = Bindeglied zwischen Farm und Sandbox SPProxyOperation = Farm-Seitig registrierte Full-Trust Operationen Untrusted Code

32 Die Sandbox mit Full-Trust Proxies erweitern

33 1.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 SLAs via Resource Quotas.

34 Für mehr Informationen kontaktieren Sie bitte: Michael Hofer Solution Architect Tel Mobile stQuad Solutions Sonnenbergstrasse Schwerzenbach

35 MSDN Whats new: Sandboxed Solutions Sandboxed Solution Considerations Plan for Sandboxed Solutions Sandboxed Solutions Architecture Configure a farm for Sandboxed Solutions Developing, Deploying and Monitoring Sandboxed Solutions Other Channel 9 Sandbox Solutions Videos SharePointDev Wiki – Sandboxed Solutions

36

37 Michael Hofer, 34 Jahre, Zürich, Schweiz Mitbegründer 1stQuad Solutions «Spezialisten für Beratung, Software-Architektur und - Entwicklung sowie Schulungen rund um die Microsoft SharePoint Server Produkte & Technologien sowie Microsoft.NET.» Seit 7 Jahren SharePoint-All-Rounder Sprecher an verschiedenen Konferenzen und Events Kontakt: Blog:

38

39 Web Part in a sandbox solution executes 40 SQL queries (via the SharePoint OM) 20 SQL Queries = 1 point (default) Resource usage for this Web Part for the day: = (2 points * # of executions throughout the day) + other counters OOTB resource quota = 300, so one execution of this Web Part = 0.67% of site collections daily allocation

40 NameFrequenzBeschreibung Solution Resource Usage Log Processing Alle 5 MinutenExtrahiert und aggregiert den Ressourcen-Verbrauch der Sandboxed Solutions aus den Log-Files. Solution Resource Usage Update Alle 15 MinutenProtokolliert den Ressourcen-Verbrauch der Sandboxed Solutions, schreibt Warn- s und blockiert wenn die tägliche Ressource-Quota überschritten wurde. Solution Daily Resource Usage Update TäglichMarkiert die Tages-Grenze für die tägliche Ressourcen-Quota für Sandboxed Solutions je Site Collection. Hmm… Dann merkt SharePoint erst in 15 Minuten, wenn eine Sandboxed Solution über die Stränge schlägt!? …


Herunterladen ppt "Michael Hofer 1stQuad Solutions Endlich kontrollierte SharePoint-Erweiterungen! Was ist neu für Entwickler und Administratoren?"

Ähnliche Präsentationen


Google-Anzeigen