GDG-SPFx-Bridge 1.4.8Public API 1.0 · Browser/SPFx Protocol 3
.NET first

Scrivi C#. Il Bridge si occupa dell’interoperabilità con SharePoint.

L’applicazione consumer usa SharePointBridge.Current come entry point e accede a contesto, REST, CSOM, Host API, ListView, routing e diagnostica attraverso una Public API session-scoped. Per le funzioni CRUD può inoltre utilizzare il provider ADO.NET GDG.SharePoint.ADOProvider.

Superficie API

Le aree principali

AreaAPIUso
ContextContext, Token, Appearance, HostSnapshot immutabili del contesto sessione.
REST server-sideRestREST same-origin con refresh token e retry 401.
CSOMCreateClientContextAsync / ExecuteQueryAsyncClientContext autenticato con token corrente.
Host interactionHostApi.Navigation / Dialogs / Notifications / LayoutComandi eseguiti da SPFx nella pagina ospite.
Host HTTPSharePointApi / Graph / CustomApiSPHttpClient, MSGraphClientV3 e AadHttpClient.
ListViewListViewStato tipizzato, LastAction e source round-trip capability-driven.
Routing localeRoutesRoute semantiche nella sessione Wisej.
Routing paginaHostApi.ApplicationRoutingDispatch verso uno o più Host registrati nella pagina.
DiagnosticsDiagnostics.GetSnapshot()Snapshot point-in-time senza access token.

Accesso dati per il CRUD. Le applicazioni possono implementare le operazioni Create, Read, Update e Delete tramite CSOM, REST oppure tramite il provider ADO.NET GDG.SharePoint.ADOProvider.

Esempi C#

Dal contesto SharePoint ai dialoghi nativi

Gli esempi seguenti mostrano il modello di programmazione previsto dalla baseline tecnica.

Inizializzazione

using GDGSPFxBridge;

SharePointBridge.Initialize(options =>
{
    options.ApplyAdaptiveTheme = true;
    options.ThrowOnDispatchError = false;
});

Leggere il contesto SharePoint

var sp = SharePointBridge.Current;
var siteUrl = sp.Context?.Web?.AbsoluteUrl;
var login = sp.Context?.User?.LoginName;
var list = sp.Context?.List?.Title;

Usare CSOM con il token della sessione

var sp = SharePointBridge.Current;
using (var ctx = await sp.CreateClientContextAsync())
{
    ctx.Load(ctx.Web);
    await sp.ExecuteQueryAsync(ctx);
    var title = ctx.Web.Title;
}

Dialoghi SharePoint dal codice .NET

var confirmed = await SharePointBridge.Current
    .HostApi.Dialogs
    .ConfirmAsync("Save item", "Confirm the update?", "Save", "Cancel");

if (confirmed)
    await SharePointBridge.Current.HostApi.Dialogs
        .AlertAsync("Item saved.");

Perché HostApi? Il dialogo viene mostrato dal layer SPFx/SharePoint, mantenendo l’esperienza visiva coerente con la pagina ospite.

Registrare una route applicativa

var bridge = SharePointBridge.Current;
bridge.Routes.Map(
    "Demo.Edit",
    "demo/items/{id:int}/edit",
    async context =>
    {
        var id = context.GetRouteValue<int>("id");
        await pageEdit.LoadItemAsync(id, null, context);
        pageEdit.Show();
    });
bridge.Routes.Start();

CRUD REST tramite SharePointApi

var api = SharePointBridge.Current.SharePointApi;
var itemUrl = "_api/web/lists/getbytitle('SPFXBridgeTest')/items(42)";

// Read
var read = await api.GetAsync(itemUrl + "?$select=Id,Title");

// Update con ETag
var update = await api.PatchWithEtagAsync(
    itemUrl,
    new { Title = "Updated from Wisej" },
    "*");

// Delete con ETag
var deleted = await api.DeleteWithEtagAsync(itemUrl, "*");
Demo SPFXBridgeTest

Un CRUD reale come scenario di riferimento

La demo documentata usa SharePointApi e REST, con ETag per update/delete, dialoghi HostApi e verifica del risultato con read-back. Nelle applicazioni reali le funzioni CRUD possono essere sviluppate indifferentemente tramite CSOM, REST oppure tramite il provider ADO.NET GDG.SharePoint.ADOProvider.

Demo.New

Crea un nuovo item.

Demo.Edit

Carica e aggiorna un item esistente tramite id tipizzato.

Demo.View

Visualizza item e metadata SharePoint.

Demo.Delete

Conferma, cancella e verifica l’esito HTTP 404.

La pagina SharePoint completa non viene ricaricata dopo una mutazione: questo preserva Host e List Actions. Il refresh della sola Microsoft ListView resta vincolato alle capability pubblicamente supportate da SPFx.

Deployment

Separazione chiara tra applicazione .NET e package SPFx

La toolchain SPFx serve alla costruzione del package Bridge quando cambiano i sorgenti/runtime SPFx; lo sviluppo dell’applicazione .NET consumer rimane separato.

ArtefattoQuando ricostruirlo
WisejSPFXQuando cambia la demo/applicazione Wisej.
GDGSPFxBridge.dllQuando cambia la libreria .NET pubblica/interna.
GDG-SPFx-Bridge .sppkgSolo quando cambiano sorgenti/runtime SPFx.

Baseline SPFx documentata: SPFx 1.23.2, Node >= 22.14 < 23, TypeScript 5.8.x, Heft e workflow Docker ufficiale del progetto.