Freigeben über


Funktionsanheftung im SharePoint-Add-In-Modell

Der Ansatz, den Sie verwenden, um Code auszuführen und Artefakte bereitzustellen, wenn eine SharePoint-Website bereitgestellt wird, ist im neuen SharePoint-Add-In-Modell anders als bei voll vertrauenswürdigem Code. In einem typischen FTC-Szenario (Full Trust Code) bzw. farm solution wurden standardmäßige Websitedefinitionen mit gehefteten Features geändert. Features wurden zum Packen und Bereitstellen von Artefakten, Konfigurationen und Brandingressourcen verwendet, die einer SharePoint-Website zugeordnet sind, und Features wurden in die Websitedefinition heftet. Anschließend wurden die gehefteten Features automatisch installiert und bei der Websitebereitstellung aktiviert.

In einem SharePoint-Add-In-Modellszenario können Sie Features heften, Add-Ins heften oder das clientseitige SharePoint-Objektmodell (Client Side Object Model, CSOM) verwenden, um Websitesammlungen und Unterwebsites zu erstellen und zu konfigurieren und dann Artefakte, Konfigurationen und Brandingressourcen bereitzustellen. Dieses Muster wird häufig als Remotebereitstellungsmuster bezeichnet.

Allgemeine Richtlinien

Als Faustregel möchten wir die folgenden allgemeinen Richtlinien bereitstellen, um Websitesammlungen und Unterwebsites zu erstellen und zu konfigurieren und dann Artefakte, Konfigurationen und Brandingressourcen für diese bereitzustellen.

  • Die einzige Möglichkeit, die Feature-Heftung weiterhin zu verwenden, ist, wenn Sie Features in Websitesammlungen heften und Sandkastenlösungen verwenden, um die Websitedefinitionen und die hefterten Features bereitzustellen.
  • Sie können das Add-In-Stapling-Modell mit vom Mandanten bereitgestellten Add-Ins verwenden, um Funktionen ähnlich dem Feature-Stapling zu implementieren.
  • Sie können das Remotebereitstellungsmuster verwenden, um Funktionen zu implementieren, die dem Feature-Stapling ähneln, indem Sie zusätzliche Features zusätzlich zur vordefinierten Websitedefinition über Remote-APIs aktivieren.

Optionen zum Erstellen und Konfigurieren von Websitesammlungen und Unterwebsites und anschließendes Bereitstellen von Artefakten, Konfigurationen und Brandingressourcen für diese

Sie haben einige Optionen, um Websitesammlungen und Unterwebsites zu erstellen und zu konfigurieren und dann Artefakte, Konfigurationen und Brandingressourcen für diese bereitzustellen.

  • Heften von Features
  • Heften von Add-Ins
  • Verwenden des Remotebereitstellungsmusters

Heften von Features

In diesem Muster heften Sie Features in Websitedefinitionen.

  • Dieses Muster ist nur auf Websitesammlungsebene verfügbar.
  • Es ist nicht möglich, Features auf Unterwebsites zu heften.
  • Dies ist kein optimaler oder empfohlener Ansatz, da veraltete Sandboxlösungen verwendet werden und Sie nicht gut für Upgrades eingerichtet werden.

Wann ist die Option geeignet?

Wenn Sie Legacycode in einer lokalen SharePoint-Umgebung migrieren und keine Zeit haben, ihn ordnungsgemäß neu zu schreiben.

Erste Schritte

Im folgenden Artikel wird beschrieben, wie Sie Features in eine Websitedefinition heften.

Heften von Add-Ins

In diesem Muster stellen Sie im App-Katalog gespeicherte Add-Ins für bestimmte Websitesammlungen, verwaltete Pfade und Websitevorlagen bereit.

  • Weitere Informationen zum Add-In-Stapling-Modell finden Sie unter SharePoint 2013 App Deployment through "App Stapling" (MSDN-Blogartikel – Richard DiZerega).
  • Da das Add-In von einem Administrator gepusht wird, können Websitebesitzer das Add-In nicht von einer Website entfernen, die die Bereitstellungskriterien erfüllt. Nicht einmal ein Websitesammlungsadministrator kann das Add-In entfernen.
  • Diese zentralisierte Bereitstellung verwendet auch dieselben zentralisierten Add-In-Ressourcen (Add-In-Web und Remoteweb). Im Wesentlichen wird das Add-In bereitgestellt, aber nicht an den Standorten installiert. Alle Websites nutzen das Add-In-Web und Remoteweb aus dem im App-Katalog installierten instance.
  • Aufgrund der zentralisierten Bereitstellung werden Remoteereignisse wie "App installiert behandeln", "Handle App Uninstalled" und "Handle App Upgrade" nur einmal ausgelöst (wenn die Add-In im App-Katalog installiert ist).
    • Dies kann die Verwendung des Add-In-Staplingmusters erschweren, um Änderungen automatisch auf Websites anzuwenden, auf denen es bereitgestellt wird, da diese Ereignisse nicht ausgelöst werden, wenn sie auf Websites bereitgestellt werden.
  • Add-In-Teile werden nicht unterstützt, wenn Add-Ins an Websites heftet werden.
  • Dieses Muster erfordert manuelle Benutzeraktionen, um die Add-Ins bereitzustellen.

Verwenden des Remotebereitstellungsmusters

In diesem Muster verwenden Sie das Client Side Object Model (CSOM) von SharePoint, um Websitesammlungen und Unterwebsites zu erstellen und zu konfigurieren und dann Artefakte, Konfigurationen und Brandingressourcen für diese bereitzustellen.

  • Dieses Muster erfordert keine Verpackung von Artefakten, Konfigurationen und Brandingressourcen in separaten Features oder Add-Ins. Alles kann in einem einzelnen Add-In gepackt werden.

  • Wenn Sie dieses Muster für die Websitebereitstellung verwenden, überschreiben Sie in der Regel die sofort einsatzbereite Seite, um eine neue Website zu erstellen.

  • Weitere Informationen zu diesem Muster finden Sie unter Websitebereitstellung (SharePoint-Add-In-Rezept).

  • Wenn Sie Add-Ins auf einer SharePoint-Website bereitstellen möchten, kann dies über CSOM erfolgen. Im folgenden Beispiel wird ein Office-Add-In über eine APP-Manifestdatei geladen und auf einer SharePoint-Website installiert.

    //Create a FileStream object to access the Mail Office Add-in .app file
    using (FileStream fsSource = new FileStream(System.Web.Hosting.HostingEnvironment.ApplicationPhysicalPath + "Innovation.Management.AFO.app",
      FileMode.Open, FileAccess.Read))
      {
    //Return the subweb where you want to install the Add-in
          var subweb = ctx.Web;
          ctx.Load(subweb);
          ctx.ExecuteQuery();
    
    //Load and Install the Add-in on the subweb
          AppInstance appInstance = subweb.LoadAndInstallApp(fsSource);
          ctx.Load(appInstance);
          ctx.ExecuteQuery();
      }
    

PnP-Beispiele

Gilt für

  • Office 365 mit mehreren Mandanten (MT)
  • Office 365 dediziert (D)
  • SharePoint 2013 lokal