Qual è un buon modello di progettazione per il monitoraggio di un handshake di protocollo? [duplicare]

-2

Sto scrivendo un programma per monitorare le comunicazioni tra un server e più client su una rete. In particolare le comunicazioni basate su protocollo Websocket. Costruisco oggetti di monitoraggio per ogni client che si collega al server e instrado le informazioni e attivano gli eventi per scopi di registrazione.

Sto cercando un modello di progettazione che possa essere utilizzato per monitorare l'handshake e le modifiche allo stato del protocollo Websocket? Ci sono schemi di progettazione che posso applicare? State pattern o semplicemente usate una macchina a stati?

    
posta CodeWeed 01.07.2016 - 14:12
fonte

1 risposta

1

Suggerirei di suddividere il tuo progetto in pezzi come segue

Innanzitutto, crea un contratto di comunicazione tra i client e i server. Il cliente dovrebbe utilizzare un'astrazione di questo contratto e non preoccuparsi che stia effettivamente comunicando su un websocket.

Quindi, costruisci un'implementazione del / i contratto / i per comunicare su una websocket. Questo potrebbe utilizzare un pattern di decorazione e decorare l'implementazione con due elementi.

  • Passaggio 1: registra la chiamata
  • Passaggio 2: chiama al Web

In questo modo, è possibile testare e progettare la chiamata al socket Web separatamente da come il client utilizza il contratto. Inoltre, è possibile creare un solo decoratore "registra la chiamata" per ciascuna delle implementazioni del contratto. Un altro uso di meno codice è una buona cosa:).

Mentre si può costruire un decoratore di log in qualsiasi lingua, ecco un link a una libreria di decor logger di python per dare hai un'idea di cosa intendo se sei curioso.

Altro sul passaggio 2

Se hai una sorta di protocollo di handshake in cui un contratto richiede più chiamate websocket e riceve, allora c'è un'altra domanda da considerare intorno a controllo del flusso .

  • Blocco? Il contratto deve essere bloccato fino al completamento di tutte le chiamate o
  • asincrono? Il client dovrebbe poter accedere al contratto in modo asincrono o
  • Promessa basata? Il contratto dovrebbe essere basato sulla promessa? (popolare per i client basati sul Web)

Se registri la chiamata con lo stato in ogni fase del protocollo, puoi facilmente monitorare lo stato dell'handshake.

    
risposta data 01.07.2016 - 17:17
fonte

Leggi altre domande sui tag