Attualmente sto lavorando alla conversione di un'applicazione "legacy" basata sul web (Coldfusion) da una singola origine dati (database MSSQL) a un OOP multi-livello.
Nel mio attuale sistema c'è un database di lettura / scrittura con tutte le solite cose e ulteriori database "di sola lettura" che vengono esportati giornalmente / ogni ora da un sistema ERP (Enterprise Resource Planning) da processi SSIS con prodotto / articolo aziendale e produzione / dati di pianificazione SCM.
La ragione per cui ho l'opportunità e la necessità di convertirmi in OOP multi-livello è che un sistema ERP più moderno è in fase di implementazione in tutto il mondo e che sarà una sostituzione completa.
Questo nuovo sistema ERP offre diverse interfacce per applicazioni di terze parti come la mia, dall'accesso SQL diretto a un servizio web dotNet o un servizio web simile a SOAP.
Ho trovato diversi framework adatti che sarei felice di usare (Coldspring, FW / 1) ma non sono sicuro di quali schemi di progettazione si applicano al mio oggetto / componente di accesso ai dati e come gestire i token di connessione / sessione, con questo sfondo, la mia domanda ha le seguenti tre parti:
-
In primo luogo, mi preoccupo di passare dalla relativa sicurezza di un lavoro SSIS che mi protegge dai tempi di inattività e dalla velocità del sistema ERP per connettersi direttamente con uno dei servizi web che noto sembrare molto più lento di quanto mi aspettassi ( richieste semplici / piccole spesso richiedono un secondo intero). Esistono schemi di progettazione che posso indagare / utilizzare per memorizzare / nascondere il mio livello dati?
-
Sono a conoscenza degli oggetti di accesso ai dati (il componente che si collega direttamente con i servizi Web e li converte nei tipi di dati con i quali posso lavorare nei miei oggetti dominio) devono essere singleton (e fungeranno da adattatore / Facciata), sono corretto?
-
Come parte dell'oggetto di accesso ai dati devo configurare una connessione tramite nome utente / password (potrei configurare più utenti e / o collegarmi più volte con questo) che risponde con un token di sessione che deve essere fornito ad ogni successivo richiesta.
Lo faccio una sola volta e lo condivido su tutta l'applicazione, creo una nuova "connessione" per ogni utente della mia applicazione e mantengo il token nel loro scope di sessione (potrebbe raggiungere rapidamente i limiti di licenza), devo impostare "connessione" per richiesta di pagina, o c'è un modello di progettazione che mi manca che possa gestire più "connessioni" in cui una richiesta / accesso utilizza la prima "connessione" gratuita?
Vale la pena notare che se il sistema ERP muore dovrò resettare / invalidare tutte le connessioni e ricominciare da zero, e in base al servizio Web che uso potrebbe essere necessario chiudere manualmente la "connessione / sessione"