DAO / Consumo Webservice nell'applicazione Web

4

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:

  1. 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?

  2. 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?

  3. 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"

posta Gavin 01.04.2012 - 01:12
fonte

1 risposta

1

Le opzioni che hai fornito mi portano a pensare che continuare a utilizzare i lavori SSIS per importare i dati in un database che controlli per la tua applicazione sembra essere l'opzione migliore sia per la gestione del flusso di dati sia per le prestazioni per l'utente finale .

Se hai requisiti che richiedono dati più aggiornati di quelli forniti tramite SSIS, allora utilizzerei i servizi Web a quel punto per quelle parti specifiche dell'applicazione.

Non c'è nulla nel modello DAO che richiede che l'implementazione sia un singleton, sarà molto più facile testare le classi DAO se sono implementate come classi normali e quindi utilizzare solo una singola istanza come dipendenza quando in produzione.

Infine, poiché è necessaria la manutenzione della sessione, utilizzerei istanze di breve durata, dato che è necessario mantenere per richiesta e se i limiti di connessione / risorsa sono necessari per essere gestiti, è possibile utilizzare un'implementazione del modello di pool di risorse per gestire il check-out / accesso istanze che mantengono i token di sessione (es. ottieni un nuovo token al momento del check out, rilascia token al momento del check-in, assicurati che l'uso abbia vita breve). Ci dovrebbe essere un numero di implementazioni di pool di risorse esistenti disponibili, usane uno perché ci sono molti trucchi per implementare quel tipo di modello.

    
risposta data 03.10.2012 - 14:05
fonte

Leggi altre domande sui tag