Incorporare o espellere
"Metti la mia dashboard dentro la mia app" qui ha due risposte, e sono davvero due prodotti diversi più che due impostazioni di uno solo.
- Incorporare — la dashboard la renderizziamo noi; tu la metti in un
<iframe>. Non scrivi codice di dashboard e non possiedi nessuna build. Incorporare una dashboard. - Espellere — ti consegniamo i sorgenti React e SQL; li renderizzi tu. Esciamo del tutto dal percorso di rendering e manteniamo solo il motore dati sottostante. Espelli la tua dashboard.
Entrambe lasciano la metà piattaforma — connessioni, dataset, aggiornamenti, pianificazioni, il motore di query, la governance — gestita dalla nostra parte. La domanda è solo chi disegna i pixel.
La risposta breve
Incorpora se ti serve il filtraggio per riga per singolo visualizzatore, o se vuoi che pubblicare sia tutto il deploy. Espelli se la dashboard deve avere l'aspetto e il comportamento del resto della tua app, o se deve girare dove noi non arriviamo.
A confronto
| Incorporare | Espellere | |
|---|---|---|
| Chi renderizza | noi | tu |
| Cosa integri | un URL (più un token di breve durata sulla corsia protetta) | un albero di sorgenti che costruisci e ospiti |
| Chi distribuisce una modifica | nessuno — ripubblichi e il frame la serve | tu, con la tua build e la tua release |
| Filtraggio per riga per singolo visualizzatore | sì, applicato lato server da un token firmato — è il solo posto in cui esiste | no sulla corsia senza credenziali; richiede un tuo server nel percorso |
| Controllo visivo e di interazione | il nostro renderer, la nostra cornice | completo — sono i tuoi componenti |
| Stato dei filtri condiviso con la tua UI | no, in nessuna delle due direzioni | sì, è il tuo stato |
| Routing, autenticazione, integrazione del layout | il confine dell'iframe | nativa nella tua app |
| Credenziale che devi custodire | nessuna sulla corsia pubblica; una chiave API nel tuo backend per la corsia protetta | nessuna sulla corsia senza credenziali; una chiave API sul tuo server per la corsia backend |
| Richiede un backend tuo | solo per la corsia protetta, per emettere i token | solo se vuoi la restrizione per riga o query dal vivo |
| Freschezza dei dati | query dal vivo a ogni caricamento | dal vivo sulla corsia backend; lo snapshot pubblicato sulla corsia senza credenziali |
Scegli incorporare quando
- Visualizzatori diversi devono vedere righe diverse. È il criterio decisivo. Il filtraggio a livello di riga vive nella corsia di incorporazione a token firmato e in nessun altro posto: il tuo backend emette un token di breve durata che porta i filtri, la piattaforma riscrive ogni riferimento a un dataset in una relazione filtrata, e la pagina può solo restringere ulteriormente. Nulla di ciò che costruisci su un albero espulso lo riproduce senza mettere un tuo server davanti a ogni query.
- Vuoi che pubblicare sia il deploy. Una ripubblicazione cambia ciò che ogni incorporazione serve. Nessuna release dalla tua parte, nessuna versione della dashboard fissata dentro il tuo bundle.
- Non vuoi possedere codice di dashboard. Nessuna build, nessun aggiornamento di dipendenze, nessun valzer delle librerie di grafici.
- La dashboard è un riquadro, non il prodotto. Una scheda di reportistica, un estratto conto per il cliente, una vista di amministrazione.
Scegli espellere quando
- Deve sembrare la tua app. Il tuo design system, la tua tipografia, i tuoi stati vuoti, i tuoi scheletri di caricamento. Un iframe è un rettangolo con dentro la cornice di qualcun altro.
- Deve interagire con la tua app. I tuoi filtri che guidano i suoi grafici, le sue selezioni che guidano la tua pagina. La corsia di incorporazione non passa lo stato dei filtri in nessuna delle due direzioni, quindi il filtraggio incrociato tra una dashboard e la tua UI lì non è disponibile.
- Ti serve il tuo routing, la tua autenticazione o il tuo layout. Deep link su una tile, la tua sessione, il tuo guscio applicativo, i tuoi breadcrumb.
- Deve girare dove noi non siamo. Il tuo hosting, la tua VPC, una CDN che controlli tu. I
sorgenti sono semplice React e SQL e si costruiscono con
npm install && npm run dev. Nota che l'espulsione sposta il rendering sulla tua infrastruttura, non i dati: una dashboard espulsa raggiunge comunque in rete il motore di query di questo account o il suo estratto Parquet. Se il requisito è che nessun dato esca dal tuo ambiente, allora è Vibedasher Server, non l'espulsione. - Non vuoi nessuna credenziale e nessun backend. Una dashboard pubblica e pubblicata viene espulsa su una corsia che scarica un estratto Parquet ed esegue ogni query nel browser del visitatore — nessuna chiave, nessun token, nulla di tuo da far girare o da pagare. Leggi cosa si sacrifica in la corsia di query wasm.
Tre differenze difficili da tornare indietro
Su tutto quello che precede puoi cambiare idea a basso costo. Queste tre conviene deciderle prima di costruire.
La restrizione per riga è una scelta di architettura, non un interruttore
Se spedisci una dashboard espulsa sulla corsia senza credenziali e più tardi ti serve che il visualizzatore A veda meno righe del visualizzatore B, non c'è nessuna impostazione da attivare. L'estratto nel browser è l'intero dataset, quindi ogni visitatore ha già tutte le righe. Riavere la restrizione significa mettere un tuo server tra il visualizzatore e i dati e riscrivere su di esso la corsia di query della dashboard — oppure passare alla corsia di incorporazione, che è un'altra integrazione. Vedi chi può vedere cosa.
Appena modifichi un albero espulso, l'app non è più la fonte di verità
L'espulsione è un vero fork, ed è esattamente il suo scopo. Puoi rimandare un albero modificato sul branch di bozza e continuare a lavorare nel ciclo, ma se porti i sorgenti nel tuo repository e inizi a cambiarli lì, le modifiche fatte in seguito nell'app non arrivano alla tua copia e le tue non tornano indietro. Decidi quale lato possiede il codice.
Le scelte di visibilità sulla corsia di incorporazione non sono simmetriche
La corsia protetta richiede che la visibilità della dashboard sia protected, e rifiuta
netto una dashboard public — così non puoi credere di avere filtri per riga quando non li
hai. Una dashboard private non è incorporabile da nessuna delle due corsie. E rendere una
dashboard leggibile da tutto il mondo è l'unico passo irreversibile del flusso di
pubblicazione; vedi pubblica e condividi.
Puoi fare entrambe
Non sono esclusive, e una forma comune usa ciascuna per quello in cui è buona: incorporare la vista rivolta al cliente, dove il filtraggio per riga è tutto il requisito, ed espellere la vista interna che deve stare dentro il tuo guscio di amministrazione. Gli stessi dataset, gli stessi aggiornamenti, la stessa governance sotto.
Prossimo
- Incorporare una dashboard — entrambe le corsie di incorporazione, il ciclo di rinnovo del token, i messaggi che la tua pagina riceve davvero, e dove si trova il confine del frame.
- Espelli la tua dashboard — le tre chiamate, il contratto di paginazione, e come ricollegare i dati.