michael hofer 1stquad solutions [email protected] endlich kontrollierte sharepoint-erweiterungen!...
TRANSCRIPT
![Page 1: Michael Hofer 1stQuad Solutions mhofer@1stquad.com Endlich kontrollierte SharePoint-Erweiterungen! Was ist neu für Entwickler und Administratoren?](https://reader036.vdocuments.site/reader036/viewer/2022062307/55204d7549795902118ca004/html5/thumbnails/1.jpg)
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?](https://reader036.vdocuments.site/reader036/viewer/2022062307/55204d7549795902118ca004/html5/thumbnails/2.jpg)
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?](https://reader036.vdocuments.site/reader036/viewer/2022062307/55204d7549795902118ca004/html5/thumbnails/3.jpg)
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?](https://reader036.vdocuments.site/reader036/viewer/2022062307/55204d7549795902118ca004/html5/thumbnails/4.jpg)
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?](https://reader036.vdocuments.site/reader036/viewer/2022062307/55204d7549795902118ca004/html5/thumbnails/5.jpg)
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?](https://reader036.vdocuments.site/reader036/viewer/2022062307/55204d7549795902118ca004/html5/thumbnails/6.jpg)
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?](https://reader036.vdocuments.site/reader036/viewer/2022062307/55204d7549795902118ca004/html5/thumbnails/7.jpg)
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?](https://reader036.vdocuments.site/reader036/viewer/2022062307/55204d7549795902118ca004/html5/thumbnails/8.jpg)
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?](https://reader036.vdocuments.site/reader036/viewer/2022062307/55204d7549795902118ca004/html5/thumbnails/9.jpg)
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?](https://reader036.vdocuments.site/reader036/viewer/2022062307/55204d7549795902118ca004/html5/thumbnails/10.jpg)
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?](https://reader036.vdocuments.site/reader036/viewer/2022062307/55204d7549795902118ca004/html5/thumbnails/11.jpg)
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?](https://reader036.vdocuments.site/reader036/viewer/2022062307/55204d7549795902118ca004/html5/thumbnails/12.jpg)
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?](https://reader036.vdocuments.site/reader036/viewer/2022062307/55204d7549795902118ca004/html5/thumbnails/13.jpg)
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?](https://reader036.vdocuments.site/reader036/viewer/2022062307/55204d7549795902118ca004/html5/thumbnails/14.jpg)
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?](https://reader036.vdocuments.site/reader036/viewer/2022062307/55204d7549795902118ca004/html5/thumbnails/15.jpg)
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?](https://reader036.vdocuments.site/reader036/viewer/2022062307/55204d7549795902118ca004/html5/thumbnails/16.jpg)
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?](https://reader036.vdocuments.site/reader036/viewer/2022062307/55204d7549795902118ca004/html5/thumbnails/17.jpg)
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?](https://reader036.vdocuments.site/reader036/viewer/2022062307/55204d7549795902118ca004/html5/thumbnails/18.jpg)
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?](https://reader036.vdocuments.site/reader036/viewer/2022062307/55204d7549795902118ca004/html5/thumbnails/19.jpg)
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?](https://reader036.vdocuments.site/reader036/viewer/2022062307/55204d7549795902118ca004/html5/thumbnails/20.jpg)
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?](https://reader036.vdocuments.site/reader036/viewer/2022062307/55204d7549795902118ca004/html5/thumbnails/21.jpg)
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?](https://reader036.vdocuments.site/reader036/viewer/2022062307/55204d7549795902118ca004/html5/thumbnails/22.jpg)
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?](https://reader036.vdocuments.site/reader036/viewer/2022062307/55204d7549795902118ca004/html5/thumbnails/23.jpg)
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?](https://reader036.vdocuments.site/reader036/viewer/2022062307/55204d7549795902118ca004/html5/thumbnails/24.jpg)
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?](https://reader036.vdocuments.site/reader036/viewer/2022062307/55204d7549795902118ca004/html5/thumbnails/25.jpg)
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?](https://reader036.vdocuments.site/reader036/viewer/2022062307/55204d7549795902118ca004/html5/thumbnails/26.jpg)
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?](https://reader036.vdocuments.site/reader036/viewer/2022062307/55204d7549795902118ca004/html5/thumbnails/27.jpg)
Ü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?](https://reader036.vdocuments.site/reader036/viewer/2022062307/55204d7549795902118ca004/html5/thumbnails/28.jpg)
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?](https://reader036.vdocuments.site/reader036/viewer/2022062307/55204d7549795902118ca004/html5/thumbnails/29.jpg)
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?](https://reader036.vdocuments.site/reader036/viewer/2022062307/55204d7549795902118ca004/html5/thumbnails/30.jpg)
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?](https://reader036.vdocuments.site/reader036/viewer/2022062307/55204d7549795902118ca004/html5/thumbnails/31.jpg)
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?](https://reader036.vdocuments.site/reader036/viewer/2022062307/55204d7549795902118ca004/html5/thumbnails/32.jpg)
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?](https://reader036.vdocuments.site/reader036/viewer/2022062307/55204d7549795902118ca004/html5/thumbnails/33.jpg)
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?](https://reader036.vdocuments.site/reader036/viewer/2022062307/55204d7549795902118ca004/html5/thumbnails/34.jpg)
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?](https://reader036.vdocuments.site/reader036/viewer/2022062307/55204d7549795902118ca004/html5/thumbnails/35.jpg)
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?](https://reader036.vdocuments.site/reader036/viewer/2022062307/55204d7549795902118ca004/html5/thumbnails/36.jpg)