Diversi anni fa ho scritto un'applicazione desktop, un piccolo sistema di contabilità, in Delphi 7, che è in utente in un'azienda di medie dimensioni. Il codice mi appartiene. Ho portato su un altro sistema di contabilità che avevo costruito anni prima (Delphi / IB), per utilizzare SQL Server e aggiunto nuove regole commerciali, nel mio tempo libero, quindi ho dato l'applicazione alla società. (Nessun contratto, nessuna licenza, semplicemente il codice è mio, nessuno lo sta discutendo).
Attualmente funziona collegandosi direttamente al database. Ogni utente nell'applicazione è un utente nel database. I ruoli sono definiti per ogni modulo che l'utente è in grado di vedere e inoltre corrispondono ai ruoli DB in SQL Server, quindi, nemmeno per errore, sarà possibile visualizzare i dati che non dovrebbero essere. Sono anche riuscito a manipolare le password in modo che l'utente (un utente normale, non un hacker) non sia mai in grado di connettersi direttamente al DB anche se conosce l'ip / port del server. Ha funzionato in questo modo per anni.
Una nuova gestione IT, molte nuove persone, sono disapprovate dalla mia applicazione. Prendi nota che questa azienda usa anche SAP per molte filiali e i miei server del sistema di contabilità allo scopo di una sorta di sistema di consolidamento. A loro non piace l'architettura Client / Server e punta il dito verso il rischio per la sicurezza e cosa no. Sono d'accordo con la mia architettura C / S e il modo in cui mi collego al database non mi sembra robusto.
Suppongo di aver bisogno di "qualcosa" nel mezzo. Ma ricercando un'applicazione a 3 livelli sono affogato in un mare di articoli su 3 livelli nella stessa applicazione, voglio dire, solo una separazione dei dati all'interno della stessa applicazione, mentre penso che quello di cui ho bisogno è un secondo livello di software tra la mia app desktop e il database. Suppongo che avrei bisogno anche di un application server, potrebbe essere?
Sono fluente anche in C # e ultimamente ho scritto più app desktop in C # poi in Delphi, così ho potuto migrare il mio codice Delphi in C # se necessario. Dato che il codice è mio, questa è una specie di investimento, potrei capitalizzare in futuro. Ecco perché, oltre alla richiesta da parte dell'IT, sono anche interessato a renderlo più solido.
Sto cercando un articolo per iniziare a scrivere questo tipo di software. WCF, Midas, ORM?
Senza voler apparire pretenzioso, non vedo l'ora di creare una piattaforma solida, come quella utilizzata in SAP-ERP. Quindi potrei far crescere l'applicazione aggiungendo nuovi moduli, come controllo, paghe, fatturazione, ecc. E trasformarlo in una sorta di piccolo ERP.