Domanda

Nella maggior parte delle interfacce di comando che ho visto, non v'è in genere un metodo "Execute" che prende prende un ingresso di comando e sia i rendimenti vuoto o qualche struttura generica che indica se il comando eseguito con successo oppure no (stiamo usando il secondo). Ora, non ho mai pensato a questo prima, ma improvvisamente avuto la necessità di conoscere qualche dettaglio in più sul risultato del comando di quello che è possibile esporre genericamente.

Si consideri il seguente esempio:

Hai un team e si sta creando una schermata in cui è possibile aggiungere i membri alla tua squadra. I membri del team sono mostrati in una griglia di sotto della -stuff "aggiungi nuovo membro". Ora, quando si preme "aggiungi nuovo membro" che si desidera eseguire alcuni jquery / roundohuse / qualunque cosa e aggiungere il nuovo membro all'elenco dei membri del team. Nessun problema finora, ma: anche voi volete includere alcuni dati di identificazione in un campo nascosto per ogni membro e questo id-dati provengono dal server

.

Quindi il problema è: come posso ottenere che i id-dati dal server? Il comando "AddNewTeamMember", che sto spingendo attraverso il -Metodo "ExecuteCommand" non mi dà nulla in cambio utile, e se posso aggiungere un nuovo metodo di query al servizio dicendo qualcosa come: "GetLastAddedTeamMember" allora potrei ottenere solo l'ultima voce aggiunto da qualcun altro (almeno se si tratta di dati che è molto aggressivo aggiunti da utenti diversi). In alcune situazioni si dispone di un identificativo univoco generato naturale sul lato client, che possiamo usare, ma per i membri del team non abbiamo.

È stato utile?

Soluzione

Dato che non hai scelta, ma di aggiornare un widget on-page quando un altro completamento del comando, vedo due scelte per voi:

  1. sparare fuori il comando, visualizzazione qualcosa a livello locale che indica che è presentata, e quindi attendere fino ad ottenere una notifica dal server che l'elenco dei membri della squadra è cambiato. Aggiornare il widget per riflettere sul fatto che.

  2. Aggiungere un ID di correlazione al comando quando si sottopone, e aggiungere il membro del team provvisoriamente a livello locale per la lista. Quando si riceve una conferma da parte del server che un aggiornamento di membro del team è accaduto a causa della vostra ID di correlazione, aggiornare i dati locali.

vorrei suggerire il primo approccio, in cui l ' "indicatore provvisorio" potrebbe essere lanciando una versione marcata dell'indicazione normale in posizione; poi, quando finalmente un aggiornamento si dovrebbe avere i dati necessari.

Dato è andato con CQRS per risolvere questo problema che si supponga di avere frequenti aggiornamenti al contenuto di tali widget che accadono nel fondo già, così hanno presumibilmente risolto il problema "aggiornamento in background".

In caso contrario, io vi suggerisco sia CQRS fosso come un cattivo - troppo complicata - soluzione nel vostro spazio problema, o risolvere il problema aggiornamento in background prima

.

Altri suggerimenti

Se si desidera aggiungere un membro del team già esistente, si dovrebbe interrogare il lato di lettura della vostra applicazione per questi dati. Se avete bisogno di aggiungere un nuovo membro del team, è necessario considerare se è necessario mostrare l'utente nella griglia sottostante in una sola volta. Si può attendere fino a quando il membro del team è a posto sul lato di lettura? È anche possibile interrogare un servizio sul lato server per ottenere un ID univoco (che può restituire un GUID). Poi si aggiunge il membro del team per la griglia, e, naturalmente, invia il comando al server. Ma, se è possibile, cercare di progettare l'applicazione in un modo che non c'è bisogno di mostrare il membro del team in una sola volta. E 'anche possibile per dare all'utente un messaggio che dice qualcosa come questo: "Il membro del team ha aggiunto, in attesa di risposta dal server". Quindi utilizzare AJAX per interrogare il lato di lettura per nuovi membri del team. Quando appare sul lato di lettura, vederlo nella griglia. Si potrebbe avere a che fare con i membri del team aggiunti da altri utenti, ma che importa? CQRS ti dà un ottimo modo per collaborare con altri utenti, così forse si dovrebbe approfittare di questo. Per come la vedo; CQRS ti costringe a pensare diverso, e che non può essere una cosa negativa.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top