Come è possibile aggiungere funzionalità di riconoscimento a un modello di comando, data la risposta dal ricevitore ottenuta in modo asincrono sul server?

0

Ho uno scenario in cui implementerò il comando Command come descritto in questo articolo.

In realtà, da una vista ASP.Net MVC, alcuni utenti invocheranno diversi comandi / azioni come Avvia video dal vivo, Avvia immagine dal vivo, Avvia registrazione ecc. Un Web Socket Server riceverà quindi questi comandi e li invierà a un ricevitore (un'applicazione basata su Windows). Il ricevitore prima di eseguire il comando richiesto, prima confermerà il comando ricevuto e confermerà al mittente che il comando inviato è stato ricevuto per l'elaborazione.

Nota: il riconoscimento e / o la risposta effettiva verranno restituiti al Web Socket Server sempre in modo asincrono e quindi inviati di conseguenza al mittente. Significa che l'intero sistema è basato sugli eventi.

Quindi la mia domanda è:

Dato lo schema di comando descritto nell'articolo , ora quale miglior modo potrei aggiungere il riconoscimento di comando ad esso e il riconoscimento restituito e / o la risposta effettiva sarà anche sotto forma di qualche comando / messaggio o qualcos'altro?

Se dobbiamo fare qualcosa di diverso per inviare il riconoscimento o la risposta, quale modello usare per questo?

    
posta Faisal Mq 11.01.2014 - 16:24
fonte

1 risposta

2

Penso che tu sia sulla strada giusta. Puoi modificare il pattern di comando per passare un riferimento callback che verrà utilizzato per notificare Invoker per l'esecuzione di Command .

Il ricevitore astratto avrebbe un metodo di aggancio ExecuteAndNotify aggiunto. Questo metodo chiamerebbe il metodo Execute già esistente su ConcreteCommand e quindi eseguirà l'altro metodo aggiunto chiamato Notify . Questo metodo Notify utilizza il riferimento callback per notificare il Invoker dell'esecuzione corretta del comando.

Il riferimento callback potrebbe essere un puntatore a funzione se Invoker e Receiver sono classi nella stessa applicazione. Se sono parti di un altro servizio, potrebbe essere un URL di un "servizio".

Spero di aver aiutato!

    
risposta data 11.01.2014 - 19:15
fonte

Leggi altre domande sui tag