Immagina di avere uno scambio di dati tra due endpoint (webservices o let's call URL). I dati possono viaggiare in qualsiasi modo (Xml, JSON, GET, POST) non importa.
Ho il codice sorgente del primo endpoint (l'ho disegnato a sinistra). Il secondo è di una terza parte e richiamerà la mia infrastruttura su un terzo endpoint (che è anche parte della mia infrastruttura).
Vorreiimplementarequalchesessione/statopermettereinrelazionelaprimachiamataconillorocallback.Inoltre,vorreiaggiungereloggingdistribuito,supportoperlarisoluzionedeiproblemiinunambientediproduzione,configurazione,monitoraggiodelleprestazioni,dashboardecosìvia.
Chetipodiconsiderazionedovreifareperaffrontarelaprogettazionediquestotipodiarchitettura?
Lasciatemichiarireconunesempio(cherispondealcommentodi@SparKot)
Dovreiregistrarelaprimachiamataecapireselaterzapartemistachiamandoomeno.
Possofarlosoloselamiaclassechiamante"di terze parti" (la casella bianca più in alto sul lef) e la classe chiamata da "terza parte" (la casella bianca più in basso sul lef) condivide un'infrastruttura di registrazione. Come implementeresti questo?
Le possibilità sono:
- Condividi un database
- Condividi una coda di messaggi
- Condividi un servizio WCF
- Condividi una cache AppFabric
- Cos'altro?
- Pipeline?
Quale considerazione prenderesti riguardo a questo servizio di tracciamento? La mia classe dovrebbe essere ospitata sullo stesso server? Che tipo di domanda ti spingerebbe a progettare l'architettura che trasforma due semplici richieste WebClient.Open in qualcosa che è più tracciabile e tollerante ai guasti?