GDG-SPFx-Bridge 1.4.8Public API 1.0 · Browser/SPFx Protocol 3
Dentro il Bridge

Un boundary controllato tra SharePoint Online e server-side .NET

Il runtime SharePoint rimane nel browser, la logica applicativa resta in .NET. Il Bridge scambia solo contratti semantici e dati, con origin verificato e routing esplicito.

Topologia

Componenti della soluzione

La pagina SharePoint usa una sola Web Part Bridge e può ospitare uno o più Host Wisej, affiancati opzionalmente da una Microsoft ListView e dal Command Set dedicato.

ComponenteNomeResponsabilità
Bridge singletonGDG-SPFx-BridgeContesto SharePoint, token, servizi SPFx, routing e distribuzione cross-host.
Host WebPartGDG Wisej HostOspita l’iframe Wisej e registra applicationId, instanceName e webPartInstanceId.
Libreria .NETGDGSPFxBridge.dllPublic API session-scoped consumata dal codice Wisej.
Applicazione consumerWisejSPFX / app realeUI, CRUD, routing locale e logica business.
List integrationGDG Wisej ListView Command SetStato ListView, selezione, List Actions e route applicative.
Schema dell'architettura logica
Figura di architettura della guida tecnica: il boundary impone exact origin, trustedWisejOrigins e comportamento fail-closed.
Protocollo e lifecycle

Asincrono, bidirezionale e tracciabile

Il protocollo browser/SPFx v3 usa window.postMessage. La comunicazione con l’Host è correlata e prevede timeout, deduplica e completamento end-to-end.

1

Evento o route nasce in SharePoint

Una List Action, un deep link, la browser history o un’invocazione applicativa produce una route semantica e i suoi valori.

2

Il Bridge risolve il target

Il dispatch può essere diretto a tutti gli Host, a una applicationId o a una specifica coppia applicationId/instanceName.

3

Il router .NET interpreta i dati

SPFx non conosce Page, classi o metodi C#. È il router Wisej a mappare il nome semantico della route sulla logica applicativa.

4

ACK end-to-end

ApplicationRouteCompleted restituisce un outcome: Handled, NotHandled, Failed, TimedOut o HostUnavailable.

Flusso List Action, application routing, Wisej Page
La stessa route può essere attivata da List Action, deep link, browser history o codice C#.
Boundary di sicurezza

Autenticazione SharePoint, senza login paralleli

Il token utente è ottenuto da SPFx tramite AadTokenProvider e consegnato alla sessione Wisej; non sono richiesti ClientSecret, password, certificati o un secondo login nel percorso production.

Origin esatto

event.origin ed event.source sono verificati. I messaggi che possono trasportare token non usano targetOrigin="*".

Token confinato

Il token rimane server-side nella sessione Wisej e non deve essere scritto in storage browser, database, cookie applicativi o log.

Route registrate

Le route remote sono semantiche e registrate esplicitamente. URL esterni, route ambigue e input non convertibili vengono rifiutati fail-closed.

Diagnostica sicura

Diagnostics.GetSnapshot() non espone mai AccessToken; i log tecnici usano timestamp UTC ISO-8601 con millisecondi.

Contratto supportato

Capability-driven, senza API private

Il Bridge distingue ciò che espone come contratto pubblico da ciò che Microsoft ListView consente realmente con le API SPFx supportate.

CapabilityMicrosoft ListView sourceNota
readStateSupportata e validataRestituisce lo stato live della source originaria.
refreshNon espostaListViewAccessor pubblico non offre un refresh dati programmatico supportato.
selectItemsNon espostaNessuna selezione/focus programmatica supportata tramite API pubblica corrente.
DOM/private APINon usateIl core resta su API pubbliche e supportate.
Conseguenza pratica

Dopo New/Edit/Delete la List WebPart può restare visivamente non aggiornata finché l’utente non esegue un refresh manuale. La demo evita il reload completo della pagina per non ricreare Host/ListView e non interrompere temporaneamente le List Actions.