Soluzione per il flusso di lavoro Web: come devo avvicinarmi al design?

2

Ci è stato assegnato il compito di creare uno strumento di flusso di lavoro basato sul web per tenere traccia della gestione delle modifiche. Ha un unico flusso di lavoro con attività sincrone multiple per la maggior parte, ma si dirama in un punto verso le attività in parallelo che si incontrano più tardi. Ci saranno molti tipi di persone che usano l'applicazione, e tutti dovranno vedere i loro compiti in sospeso per ogni cambiamento, ma solo i loro, non altri. Ci sarà anche un gruppo di persone di alto livello che supervisionerà tutti i cambiamenti, quindi è necessario vedere tutto. Dovranno vedere compiti che non sono stati eseguiti nel tempo specificato, chi è responsabile ecc.

I dati verranno mantenuti su un database SQL. Sarà tutto messo insieme usando .Net.

Ho cercato di imparare e implementare OOP nei miei progetti fino a tardi, ma mi chiedo se questo è discutibile in questo caso, perché potrebbe essere meglio avere la logica aziendale per questo nelle stored procedure nel DB. Potrei usare POCO, un front-end layer e un livello di accesso ai dati per l'applicazione web e usarlo come meccanismo per le azioni CRUD sul DB, quindi utilizzare gli SP licenziati nel DB per applicare le regole aziendali.

D'altra parte, potrei usare un design orientato agli oggetti all'interno dell'app web, ma dato che i dati nell'app non hanno lo stato, è una cattiva idea? Potrei provare a modellare l'intera applicazione in una struttura di classe, implementando interfacce, classi base e tutte quelle cose buone. Quindi creo una classe di modifica, che contiene un elenco di classi / tipi di attività, che definiscono ciascuna attività e implementa un'interfaccia ITask, ecc. Metti i tipi di utenti finali nelle attività per identificare chi dovrebbe svolgere il compito. Quindi applica tutte le logiche di business nei rispettivi metodi di classe ecc.

Quale approccio pensate che dovrei usare per questa soluzione?

    
posta Tom Pickles 30.05.2012 - 11:14
fonte

2 risposte

2

Se stai per partire con una soluzione Microsoft, una grande opzione è usare Windows Workflow Foundation. Ha già un sacco di funzioni per sviluppare flussi di lavoro complessi come quelli che hai descritto sopra. È già integrato anche in .NET Framework.

Lo sviluppo di un'applicazione WF ha fondamentalmente due parti:

  1. Sviluppa l'applicazione "host", come un'applicazione ASP.NET. Questo ha la responsabilità di caricare e scaricare dati da un database, oltre a fornire un'interfaccia utente (come mostrare un elenco di flussi di lavoro in corso, mostrare attività assegnate, ecc.). link

  2. Progetta i flussi di lavoro. I flussi di lavoro possono essere progettati in Visual Studio (simile allo sviluppo di un'applicazione Windows Form o di un documento Visio), interamente progettati in codice C # o in XML. L'applicazione host caricherà quindi questi flussi di lavoro e sarà in grado di gestire e avviare nuove istanze di essi. link )

C'è un po 'di una curva di apprendimento, ma alla fine risparmierai molto tempo per riprogettare da zero una soluzione di workflow, permettendoti di concentrarti (principalmente) su una logica di business grande e flessibile.

    
risposta data 15.06.2012 - 17:05
fonte
0

Suggerirei di seguire l'architettura a 3 livelli per questa applicazione, questo significherebbe che manterrai l'interfaccia utente, la logica aziendale e il database in diversi livelli. L'interfaccia utente che sarà principalmente l'aspetto dell'interfaccia, sarà il primo strato. Quindi, per fornire gli strumenti funzionali agli utenti e ottenere gli input / raccogliere dati dagli utenti, questo dovrebbe essere il livello della logica aziendale, che verrà eseguito attraverso le classi e i relativi oggetti e amp; funzioni. L'interazione con il database che può essere il recupero dei dati, l'inserimento dei dati, l'aggiornamento dei dati o l'eliminazione dei dati devono essere effettuati tramite il livello del database, che può essere gestito tramite SP e Trigger definiti nel database ed eseguito dalle classi definite in il livello della logica aziendale.

Questo renderà le tue applicazioni non solo robuste e veloci, ma ti darà anche la flessibilità di diverse risorse di set di abilità che lavorano su diversi livelli come: i designer che lavorano sull'interfaccia utente, gli sviluppatori che lavorano sulla logica di business e gli amministratori di database che lavorano su il livello del database.

Spero che questo aiuti.

    
risposta data 15.06.2012 - 10:44
fonte