Modelli per l'integrazione con un servizio esterno lento

4

Speravo che qualcuno potesse fornire alcuni modelli / tecniche / idee per aumentare le prestazioni per il seguente scenario.

Sto integrando con un sistema di ordini esterno tramite SOAP. Il sistema esterno può essere lento e, sfortunatamente, nulla può essere cambiato a tale scopo.

Tutti i prodotti vengono recuperati da questa fonte esterna e un ordine viene effettuato solo con il sistema esterno al momento del pagamento, pertanto la funzionalità del carrello verrà implementata localmente.

Quando un articolo viene aggiunto al carrello, controllerà la fonte esterna se c'è abbastanza stock e quindi aggiungerà l'articolo al carrello localmente, e l'utente rimarrà sulla stessa pagina (ad esempio, non reindirizzerà a un carrello schermata riassuntiva). Controllerà anche il resto degli articoli nel carrello per assicurarsi che ci siano abbastanza scorte, quindi a seconda di quanti oggetti ci sono, potrebbero esserci molte chiamate alla fonte esterna.

Suppongo che potremmo controllare solo i livelli delle scorte per altri articoli nel carrello quando raggiungono la schermata di riepilogo del checkout e le successive schermate di checkout, ma ritengo che non sia la migliore esperienza utente.

Per riferimento, il sito locale utilizzerà ASP.NET MVC3

Qualche suggerimento?

Grazie

    
posta jal 16.05.2012 - 14:49
fonte

2 risposte

1

Se farai molte chiamate per controllare i livelli delle scorte ogni volta che un articolo viene aggiunto, ciò implicherebbe che i livelli delle scorte cambieranno molto rapidamente - vale la pena guardare alcune statistiche per vedere se questo è effettivamente necessario.

Se non lo è, puoi creare una soluzione più semplice con un archivio locale dei livelli di stock che viene aggiornato da un altro processo ogni 10 minuti (ad esempio) - ancora meglio se puoi far sì che la parte esterna pubblichi la lista puoi semplicemente iscriverti, ma non sembra che tu abbia molto controllo su di loro.

Potresti quindi fare un controllo contro il servizio esterno per assicurarti che lo stock sia presente prima di prendere i pagamenti, elaborare il pagamento e inviare l'ordine.

    
risposta data 18.05.2012 - 00:49
fonte
1

Dovresti eseguire il controllo in modo asincrono, ovvero quando un articolo viene aggiunto al carrello, si attiva una richiesta ma non si attende la risposta. Invece tutte le risposte passano a una coda centrale e vengono quindi applicate al carrello.

Se un articolo è esaurito, dovrai avvisare l'utente mentre naviga nel sito, possibilmente facendo apparire un avviso che dice che l'oggetto non è disponibile. Avranno un oggetto nel carrello con un avvertimento rosso quando guardano. È quindi possibile memorizzare nella cache i risultati e rimuovere tale elemento dal negozio (o contrassegnarlo come temporaneamente non disponibile) e ricontrollare a intermittenza per vedere se l'articolo è stato rifornito nuovamente.

Inoltre, quando raggiungono l'area del checkout, dovrai fermarti mentre la coda si svuota e ogni articolo nel carrello riceve la risposta di controllo.

Dipende dalla tua situazione se questo funzionerà bene - se ci sono molte azioni "sold out" allora questo probabilmente non è quello che vuoi fare, ma in questo caso, non avrai altra scelta che aspettare per la risposta.

    
risposta data 18.05.2012 - 01:01
fonte

Leggi altre domande sui tag