Remote-Zeitgeberaufträge im SharePoint-Add-In-Modell
Der Ansatz zum Implementieren von Zeitgeberaufträgen unterscheidet sich im neuen SharePoint-Add-In-Modell von der Vorgehensweise bei voll vertrauenswürdigem Code. In einem typischen Szenario mit voll vertrauenswürdigem Code (Full Trust Code, FTC)/Farmlösung wurden Zeitgeberaufträge mit dem serverseitigen SharePoint-Objektmodell-Code erstellt, über Farmlösungen bereitgestellt und auf der SharePoint-Zentraladministrationswebsite verwaltet. SharePoint behandelt die Planung und Ausführung des Zeitgeberauftrags in diesem Szenario.
Im SharePoint-Add-In-Modellszenario werden Zeitgeberaufträge außerhalb von SharePoint erstellt und geplant. SharePoint ist nicht für die Planung oder Ausführung des Zeitgeberauftrags in diesem Szenario verantwortlich.
Richtlinien auf hoher Ebene
Als Faustregel werden die folgenden allgemeinen Richtlinien für die Erstellung von Zeitgeberaufträgen bereitgestellt.
- Zeitgeberaufträge sollten außerhalb von SharePoint implementiert werden.
- Die Planung von Zeitgeberaufträgen sollte außerhalb von SharePoint implementiert werden.
- Zeitgeberaufträge sollten über ein Dienstkonto oder OAuth authentifiziert werden.
Herausforderungen beim Erstellen von Zeitgeberaufträgen
Die größte Herausforderung beim Erstellen von Zeitgeberaufträgen in Office 365-Mandaten ist die Tatsache, dass Sie keine Farm-bezogenen Lösungen für einen Office 365-Mandanten bereitstellen können. Ohne eine Farm-bezogene Lösung können Sie keinen SharePoint-Zeitgeberauftrag bereitstellen.
Die neue Möglichkeit zum Erstellen eines Zeitgeberauftrags ist, ihn außerhalb von SharePoint zu erstellen und die Planung ebenfalls außerhalb von SharePoint zu verarbeiten. Berücksichtigen Sie die folgenden Faktoren für SharePoint-Zeitgeberaufträge für eine lokale SharePoint-Umgebung.
- SharePoint wird mit Hunderten von standardmäßigen Zeitgeberaufträgen bereitgestellt, mit denen der SharePoint-Planer Schritt halten muss. OK – Sie können die Menge an Arbeitsspeicher und Prozessorleistung reduzieren, die auf dem SharePoint-Server erforderlich ist, indem Sie den Implementierungscode in Azure oder eine andere Umgebung verschieben.
- Das Verschieben des Planungs- und Implementierungscodes für Zeitgeberaufträge auf einen anderen Server macht Ihren SharePoint-Server skalierbarer und stabiler.
Optionen zum Planen von Zeitgeberaufträgen
Es gibt eine Reihe von Optionen, um die Planung für einen Zeitgeberauftrag zu implementieren.
- Windows-Planer
- Windows-Dienst
- Azure WebJob
- Azure-Arbeitsprozess
Windows-Planer
In diesem Muster übernimmt der Windows Scheduler die Planungsaspekte eines Zeitgeberauftrags. Der Implementierungscode kann eine Konsolenanwendung oder ein PowerShell-Skript oder ein beliebiger anderer Code sein, den der Windows Scheduler aufrufen kann.
Unteroption "Windows-Dienst"
Ein Windows-Dienst hat die gleichen Merkmale wie der Windows Scheduler. Microsoft empfiehlt dieses Muster nicht, aber wir erwähnen es, da es häufig verwendet wird.
Wann ist der Windows-Planer geeignet?
Wenn Sie keinen Zugriff auf ein Azure-Abonnement haben, um Zeitgeberaufträge mit Azure WebJobs zu planen, ist die Verwendung eines Windows-Planers eine gute Option, da er auf jedem beliebigen Rechner mit dem Windows-Betriebssystem implementiert werden kann.
- Erfordert zusätzliche Hardware, um den Windows-Planer auszuführen.
- Erfordert zusätzliche Hardware, um den Zeitgeberauftragscode auszuführen.
Erste Schritte
Die folgenden Artikel verwenden das Muster für den Windows-Planer und stellen Codebeispiele bereit, um Ihnen den Einstieg zu erleichtern.
- Core.SimpleTimerJob (O365-PnP-Beispiel)
- Umfassender Artikel über dieses Muster mit Begleitvideo.
- Core.TimerJobs.Samples (O365-PnP-Beispiel)
- Gute Codebeispiele (10 verschiedene). Hinweis: Es gelten nicht alle zehn Codebeispiele für das Muster für den Windows-Planer.
Azure WebJob
In diesem Muster übernimmt der Azure-WebJob die Planungsaspekte im Zusammenhang mit einem Zeitgeberauftrag enthält den Implementierungscode.
- Es ist keine zusätzlichn Hardware zum Ausführen des Azure-WebJobs (Planung und Implementierungscode) erforderlich.
- Vorteilhaft, da der Azure-WebJob sowohl für Planung als auch für den Implementierungscode verwendet wird, was die Verwaltung an einem zentralen Ort vereinfacht.
Unteroption "Azure-Workerrolle"
Eine Azure-Workerrolle hat die gleichen Merkmale wie ein Azure-Webjob. Microsoft empfiehlt dieses Muster nicht, aber wir erwähnen es, da es häufig verwendet wird.
Wann ist Azure WebJob geeignet?
Wenn Sie Zugriff auf ein Azure-Abonnement haben, um Zeitgeberaufträge mit Azure WebJobs zu planen.
Erste Schritte
Die folgenden Artikel beschreiben das Muster für den Azure WebJob und stellen Codebeispiele bereit, um Ihnen den Einstieg zu erleichtern.
- Erste Schritte mit Azure WebJobs für Ihre Office 365-Websites
- Beschreibt, wie Sie einen Azure WebJob erstellen, der als geplanter Auftrag für Ihre Office 365- oder Ihre lokale SharePoint-Umgebung fungiert. Enthält Informationen zu Veröffentlichung und Überwachung.
- Core.SimpleTimerJob (O365-PnP-Beispiel)
- Gute Codebeispiele (10 verschiedene). Hinweis: Es gelten nicht alle zehn Codebeispiele für das Muster für Azure WebJob.
Authentifizierungsoptionen
Damit Ihre Zeitgeberaufträge mit SharePoint interagieren können, müssen sie authentifiziert werden. Derzeit gibt es zwei Muster, die Sie zur Authentifizierung von Zeitgeberaufträgen verwenden können.
- Verwenden eines Dienstkontos
- Verwenden von OAuth
Verwenden eines Dienstkontos
In diesem Muster definieren Sie eines oder mehrere Dienstkonten, die zur Authentifizierung von Zeitgeberaufträgen verwendet werden.
Dienstkonten werden in SharePoint definiert.
- In einem Office 365-Mandaten benötigen die Dienstkonten, abhängig von den Funktionen der Zeitgeberaufträge, eine Office 365-Lizenz.
- Sie können Dienstkonten pro Zeitgeberauftrag erstellen oder ein einziges Konto für alle Zeitgeberaufträge verwenden.
- Erstellen Sie eindeutige und aussagekräftige Namen für die Dienstkonten, damit Sie die Operationen einfacher nachverfolgen können, die sie ausführen.
Beispiel: Wenn Ihr Zeitgeberauftrag Listenelemente ändert, zeigt die Spalte „Geändert von“ für die Listenelemente den Namen des Dienstkontos für den Zeitgeberauftrag an.
Bei der Authentifizierung für Dienstkonten müssen Sie einen Benutzernamen und ein Kennwort für das Dienstkonto abrufen.
Der folgende Codeausschnitt veranschaulicht die Verwendung eines Benutzernamens und eines Kennworts zur Authentifizierung.
Setzen Sie beim Speichern und Abrufen des Benutzernamens und Kennworts auf Sicherheit.
using (ClientContext context = new ClientContext("https://tenancy.sharepoint.com")) { // Use default authentication mode context.AuthenticationMode = ClientAuthenticationMode.Default; // Specify the credentials for the account that will execute the request context.Credentials = new SharePointOnlineCredentials("User Name", "Password"); }
Erste Schritte
Die folgenden Artikel beschreiben die Verwendung eines Musters für die Dienstkonto-Authentifizierung und stellen Codebeispiele bereit, um Ihnen den Einstieg zu erleichtern.
- Erstellen einer SharePoint-App als Zeitgeberauftrag (MSDN-Blog)
- Umfassender Artikel über dieses Muster.
- Core.SimpleTimerJob (O365-PnP-Beispiel)
- Umfassender Artikel über dieses Muster mit Begleitvideo.
- Core.TimerJobs.Samples (O365-PnP-Beispiel)
- Gute Codebeispiele (10 verschiedene). Hinweis: Es gelten nicht alle zehn Codebeispiele für das Muster für die Dienstkonto-Authentifizierung.
Verwenden von OAuth
In diesem Muster definieren Sie eine Anwendung in SharePoint oder Azure Active Directory und verwenden die Authentifizierungstoken der Anwendung zur Authentifizierung.
Wenn Sie eine SharePoint-Anwendung zum Authentifizieren verwenden, erstellen Sie einen App-Hauptbenutzer und weisen ihm Berechtigungen zu.
- In diesem Muster werden möglicherweise über ein vom Anbieter gehostetes SharePoint-Add-in oder eine Konsolenanwendung Zeitgeberaufträge implementiert.
- Um einen App-Hauptbenutzer für das vom Anbieter gehostete SharePoint-Add-In oder die Konsolenanwendung zu registrieren, verwenden Sie die Seite „AppRegNew“ in SharePoint.
Auf diese Seite wird über die folgende URL zugegriffen:
http://<tenancy>/<site>/_layouts/AppRegNew.aspx
- Zum Erteilen von Berechtigungen zu einem App-Hauptbenutzer können Sie die Seite „AppInv“ in SharePoint verwenden.
Auf diese Seite wird über die folgende URL zugegriffen:
http://<tenancy>/<site>/_layouts/AppInv.aspx
Zeitgeberaufträge verwenden reine App-Berechtigungen, da ihnen kein interaktiver Benutzer zugeordnet ist.
Der folgende Codeausschnitt veranschaulicht den Abruf eines Zugriffstoken und die Verwendung reiner App-Berechtigungen zur Authentifizierung bei SharePoint.
string accessToken = TokenHelper.GetAppOnlyAccessToken(TokenHelper.SharePointPrincipal, siteUri.Authority, realm).AccessToken; using(var clientContext = TokenHelper.GetClientContextWithAccessToken(siteUri.ToString(),accessToken)) { //Implement timer job code }
Wenn Sie eine Azure Active Directory-Anwendung zur Authentifizierung verwenden, erstellen Sie eine Azure Active Directory-Anwendung im Azure-Portal und weisen Sie ihr Berechtigungen zu.
- In diesem Muster werden möglicherweise über ein vom Anbieter gehostetes SharePoint-Add-in oder eine Konsolenanwendung Zeitgeberaufträge implementiert.
- In diesem Muster interagieren Sie mit der Active Directory-Authentifizierungsbibliothek oder der Microsoft Graph-API, um ein Zugriffstoken abzurufen.
- Das Zugriffstoken wird verwendet, um SharePoint (und möglicherweise andere Office 365-Dienste in einem Office 365-Mandanten) zu authentifizieren.
Erste Schritte
Die folgenden Artikel beschreiben das Muster für die OAUth-Authentifizierung und stellen Codebeispiele bereit, um Ihnen den Einstieg zu erleichtern.
- Erstellen einer SharePoint-App als Zeitgeberauftrag (MSDN-Blog)
- Umfassender Artikel über dieses Muster.
- Core.TimerJobs.Samples (O365-PnP-Beispiel)
- Gute Codebeispiele (10 verschiedene). Hinweis: Es gelten nicht alle zehn Codebeispiele für das Muster für die OAUth-Authentifizierung.
Verwandte Links
- Azure WebJob-Ressourcen (Azure-Dokumentation)
- Bereitstellen von WebJobs mit Visual Studio (Azure-Documentation)
- Leitfadenartikel unter https://aka.ms/OfficeDevPnPGuidance
- Verweise in MSDN unter https://aka.ms/OfficeDevPnPMSDN
- Videos bei https://aka.ms/OfficeDevPnPVideos
PnP-Beispiele
- Core.SimpleTimerJob (O365-PnP-Beispiel)
- Core.TimerJobs.Samples (O365-PnP-Beispiel)
- Provisioning.Services.SiteManager (O365-PnP-Beispiel)
- Provisioning.SiteCollectionCreation (O365-PnP-Beispiel)
- Beispiele und Inhalte unter https://github.com/SharePoint/PnP
Gilt für
- Office 365 mit mehreren Mandanten (MT)
- Office 365 dediziert (D) teilweise
- SharePoint 2013 lokal – teilweise
Muster für dedizierte und lokale Umgebungen sind identisch mit SharePoint-Add-In-Modelltechniken, aber es gibt Unterschiede bezüglich der verwendbaren Technologien.