Sto prendendo la mia prima incursione in .NET e sto progettando un'applicazione web che è pesante su altri servizi web in questo momento. Ho intenzione di fare quanto segue:
- Prendi l'input dell'utente (un numero USDOT)
- Richiedi i dati da un'API pubblica pubblica su quel numero DOT (a condizione che non sia disponibile nella memoria locale)
- Impegna in DB (se necessario)
- Passa a un calcolatore del punteggio di rischio che:
- Separa i dati e cerca le bandiere rosse (come se il corriere non ha autorità) e altri rischi
- Passa la determinazione del rischio alla vista in modo che l'utente possa prendere una decisione informata sul corriere.
L'applicazione sarà in stile questionario e farò affidamento sull'input dell'utente, ma ci sono alcuni fattori critici che possono essere generati immediatamente senza alcun input. Se questi fattori restituiscono qualcosa di brutto, l'utente probabilmente si fermerà lì perché ha ciò di cui ha bisogno per prendere una decisione sul corriere. Quindi ci sarà un call / return iniziale su fattori critici, quindi un call / return più approfondito che valuta la risposta dell'utente alle domande.
Mi aspetto di restituire un punteggio intero di rischio, in modo da poter fornire all'utente un "alto / medio / basso rischio" insieme a raccomandazioni individuali per aiutare a prendere una decisione informata.
Ho trovato un'ottima app di esempio chiamata AccountAtAGlance di Dan Wahlin ( link ). Sono rimasto impressionato da quanto ho conservato dalla rivista e dai libri che sto leggendo, perché ho capito la maggior parte delle sue app di esempio con facilità.
Sto lottando con il modo migliore per implementare il passaggio dei dati dal modello Carrier al Risk Score Calculator e al Risk Score Calculator rimandandolo al Controller e sto cercando aiuto.
La struttura del mio file sta sostanzialmente simulando l'esempio di AccountAtAGlance.
In questo momento la mia idea è la seguente:
- Rendi
RiskScoreRepository.cs
disponibile per il controller e chiamalaRiskScoreRepository.GetCarrierRisk(int dotnumber)
- Ecco dove mi blocco:
GetCarrierRisk
chiama qualcosa in modo che possa valutare il rischio iniziale e restituirlo al controller.
Quindi, un paio di domande che ho:
Un repository è il posto appropriato per GetCarrierRisk
?
Dove dovrebbe andare GetCarrierRisk
per ottenere i dati valutati e restituiti? Questo è ciò a cui mi riferisco come il Risk Score Calculator. Dovrebbe essere un RiskScoreEngine
? Simile a link ?
Penso che sia meglio, per testabilità, avere ciascun fattore di rischio (ad esempio se il vettore ha autorità e se il vettore ha ispezioni) di avere un proprio metodo che accetta un valore grezzo e restituisce il rischio appropriato. Ma in che modo la richiesta fluisce in questi metodi? GetCarrierRisk
fa un sacco di chiamate al calcolatore del punteggio di rischio e inserisce il rendimento in qualcosa come una lista che viene trasmessa al controllore?