Ho un HttpHandler, che consente agli utenti di accedere a un sistema passando un codice crittografato.
All'interno di ProcessRequest
esegue alcuni passaggi.
- Recupera il codice crittografato dalla richiesta (potrebbe essere in Form / X-Header / Query)
- Decifralo. (Risultati in una stringa JSON)
- Deserializza in un tipo dinamico
- Determina il tipo di richiesta, potrebbe essere login / register / activate
- Convalida richiesta
- Carica l'abbonamento utente
- Carica entità utente
- Se Req.Type = Accedi - > Accedi utilizzando FormsAuth
- Se Req.Type = Registra - > Crea utente
- Se Req.Type = Registra - > Invia email di attivazione
Questo va avanti. Attualmente questo è qualcosa di simile a una dichiarazione long if / else che sto cercando di ridefinire. Sto pensando di utilizzare il modello Chain Of Responsibility per convertire questi passaggi in if / else in una catena che viene eseguita in sequenza. Tuttavia, questo sarà diverso dal CoR originale poiché solo gli ultimi pochi passi "manterranno" effettivamente la richiesta, i primi passi faranno solo un po 'di pre-elaborazione e faranno tappa per gli ultimi passi per eseguire il suo lavoro.
Il mio problema principale è che diversi passaggi della catena funzioneranno su diversi dati di input. I primi passi (decrittazione, deserializzazione, ecc.) Funzioneranno su stringhe mentre la seconda metà dovrebbe idealmente funzionare su oggetti dinamici deserializzati. Non mi piace come suona.
Sto cercando di adattare un coperchio rotondo a una bottiglia quadrata? Non è questo uno scenario in cui il CdR può / deve essere applicato? Ci sono altri schemi / strategie che potrei usare per risolvere questi scenari.
Ho pensato di utilizzare anche il pattern decorator, ma non mi è piaciuto molto, dato che mi piacerebbe essere in grado di attivare e disattivare determinati passaggi (es: attivazione e-mail) per alcuni scenari.
NOTA: ho visto questa domanda as bene, ma non sono sicuro che risponda alla mia domanda.