Modernize Studio
Lingua: IT
Scriveteci

Le vostre applicazioni Visual Basic 6, portate sul web

In molte aziende ci sono ancora programmi Visual Basic 6 che gestiscono ordini, produzione, appuntamenti e contabilità, a più di venticinque anni dall'uscita dell'ultima versione. Li migriamo in applicazioni web scritte in C#, mantenendo i dati e le regole di business, con o senza il codice sorgente originale.

Perché adesso

Microsoft ha smesso di supportare l'ambiente di sviluppo di Visual Basic 6 l'08/04/2008. Il runtime è ancora incluso in Windows ed è supportato per tutta la durata delle versioni di Windows che lo contengono, Windows 11 compreso, ma solo come componente a 32 bit e solo per regressioni gravi e problemi di sicurezza critici. I controlli che non fanno parte di Windows, come MSCOMCTL.OCX, MSFLXGRD.OCX e quasi tutti gli OCX di terze parti, vanno installati insieme all'applicazione e non sono coperti da Microsoft.

Nella pratica la difficoltà sta nelle persone e negli strumenti. Microsoft non supporta l'IDE su Windows a 64 bit, gli sviluppatori che conoscono VB6 sono ogni anno di meno, e ogni PC sostituito è una nuova installazione con componenti registrati a mano.

  1. Ambiente di sviluppo Visual Basic 6Fine del supporto Microsoft
  2. Windows 10Fine del supporto Microsoft

Cosa migriamo

Tutto il programma, compreso ciò da cui dipende al di fuori del suo codice.

  • Form e controlli

    Finestre con caselle di testo, caselle combinate, griglie, schede e matrici di controlli, compresi MSFlexGrid, ListView e TreeView. Diventano pagine web che mantengono la disposizione a cui le persone sono abituate.

  • Logica in moduli e classi

    Calcoli, controlli e procedure sparsi tra file .bas e .cls ed eventi dei form. Li spostiamo in servizi lato server coperti da test.

  • Accesso ai dati

    Codice DAO, RDO e ADO che lavora su Access, SQL Server, Oracle o altri database, compreso l'SQL costruito concatenando stringhe. I dati passano su SQL Server o MySQL, oppure restano dove sono se altri sistemi ne dipendono.

  • Report e stampe

    Crystal Reports, DataReport e stampe disegnate riga per riga con l'oggetto Printer. Ognuno diventa un documento PDF con lo stesso contenuto.

  • Componenti COM e DLL

    DLL ActiveX scritte internamente, componenti di terze parti e chiamate alle API di Windows tramite Declare. Identifichiamo ciascuno e decidiamo se va sostituito, riscritto o se non serve più.

  • File, impostazioni e dispositivi

    Configurazione in file INI o nel registro, importazioni da file di testo, collegamenti a bilance, stampanti di etichette o dispositivi seriali tramite MSComm. Verifichiamo quali richiedono ancora qualcosa installato in locale.

Come diventa la versione web

Esempio illustrativo, dati di fantasia

Un'agenda appuntamenti come potrebbe apparire in un programma VB6 sul PC della reception, e la stessa settimana nel browser.

Trascinate il cursore, oppure usate le frecce della tastiera.

Dove finisce ogni parte

In VB6: Form (.frm) e i loro eventi
Nell'applicazione web: Pagine web, con la logica sul server
In VB6: Moduli (.bas) e classi (.cls)
Nell'applicazione web: Servizi C# coperti da test automatici
In VB6: Controlli OCX registrati su ogni PC
Nell'applicazione web: Componenti web standard, niente da installare
In VB6: Recordset ADO o DAO
Nell'applicazione web: Query parametriche su SQL Server o MySQL
In VB6: Crystal Reports o DataReport
Nell'applicazione web: Documenti PDF generati dal server
In VB6: Un pacchetto di installazione per ogni postazione
Nell'applicazione web: Un indirizzo, aperto nel browser

Come si svolge la migrazione

  1. Analisi entro 48 ore

    Ci mandate il programma installato e il suo database, più il codice sorgente (.vbp, .frm, .bas, .cls) se lo avete. Entro 48 ore vi rispondiamo con un report scritto: cosa fa oggi il programma, dove sono i rischi, come sarebbe organizzata la versione web, un prezzo fisso per un modulo pilota e una stima per il resto. È gratuita e non vi impegna a nulla.

  2. Modulo pilota

    Realizziamo una parte dell'applicazione su una copia dei vostri dati reali, di solito quella che si usa di più. Il vostro personale la usa nel lavoro di tutti i giorni prima che decidiate sul resto.

  3. Test automatici tra vecchio e nuovo

    Registriamo cosa produce il programma VB6 su una serie di casi reali, come prezzi, totali e documenti generati, e verifichiamo la nuova applicazione rispetto a quei risultati. Per ogni regola che troviamo scriviamo un test automatico che dà gli stessi dati in ingresso al vecchio programma e alla nuova applicazione e controlla che i risultati coincidano. Ricevete i risultati dei test.

  4. 30 giorni in parallelo

    Quando l'applicazione completa è pronta, il programma VB6 resta in uso accanto a essa per 30 giorni. Ogni differenza emerge mentre il vecchio programma c'è ancora, e la correggiamo all'interno del prezzo concordato.

Gli intoppi tipici, e come li gestiamo

  1. Dipendenze OCX e ActiveX

    Molti programmi VB6 si appoggiano a controlli che non sono inclusi in Windows, a volte di produttori che non esistono più, e Microsoft indica file come GRID32.OCX e THREED32.OCX come non supportati. L'analisi elenca ogni dipendenza, cosa fa nel programma e con cosa la sostituiamo.

  2. Variant, proprietà predefinite e conversioni implicite

    VB6 converte in silenzio tra stringhe, numeri e date, e una riga come Text1 = rs!Totale si regge sulle proprietà predefinite. Una traduzione letterale in C# o VB.NET si comporta diversamente nei casi limite, per esempio con campi vuoti o con date in un altro formato internazionale. Riscriviamo questi punti di proposito e li copriamo con test.

  3. On Error Resume Next

    Comune nel codice VB6, nasconde gli errori e lascia che il programma prosegua con dati scritti a metà. Dove lo troviamo, ricostruiamo cosa voleva evitare l'autore e gestiamo quel caso in modo esplicito. Altrimenti la nuova applicazione si fermerebbe con un errore o ripeterebbe gli stessi sbagli silenziosi.

  4. Integer a 16 bit e arrotondamenti

    In VB6 un Integer si ferma a 32.767, causa di molti errori di overflow quando una tabella cresce. Il tipo Currency ha quattro decimali, e Round usa l'arrotondamento bancario. Riproduciamo l'arrotondamento che l'azienda si aspetta e segnaliamo dove il vecchio programma sbagliava.

  5. SQL costruito concatenando stringhe

    Le query composte con & a partire da ciò che l'utente ha digitato sono esposte alla SQL injection e si rompono sui nomi con l'apostrofo. Nella nuova applicazione ogni query usa parametri.

  6. Codice sorgente mancante o non aggiornato

    A volte il codice sorgente è andato perso, oppure la copia conservata non corrisponde al programma in uso. Da un programma VB6 compilato non si ricava un codice sorgente affidabile, quindi lavoriamo dal programma in funzione, dal suo database e dalle sue schermate, e l'analisi dice chiaramente quali parti hanno più incertezza.

Prezzo e pagamento

Analisi

Gratuita

scritta, entro 48 ore

Modulo pilota

1.000–1.500 €

di solito, 50% all'inizio e 50% all'approvazione

L'analisi è gratuita. Se decidete di non andare avanti, il report resta a voi e non dovete nulla.

I prezzi sono fissi e concordati per iscritto prima di iniziare. Se il perimetro cambia, vi mandiamo un nuovo preventivo scritto e aspettiamo la vostra approvazione prima di fare il lavoro in più.

Per una migrazione completa puntiamo a stare dal 40 al 60% sotto il preventivo tipico di un'agenzia. Possiamo farlo perché siamo uno studio piccolo, senza uffici da pagare né rete commerciale.

Prezzi IVA esclusa.

Provate il calcolatore di prezzo

Una migrazione vera, verificata dai test

Northwind è il database di esempio che Microsoft distribuiva con Access, non un nostro cliente. Ne abbiamo migrato una copia pubblica in SQLite e PostgreSQL, confrontato ogni tabella e ogni query con l'originale tramite test automatici e costruito sul risultato un'applicazione web funzionante. Il caso di studio riporta i numeri, il report di equivalenza elenca ogni controllo.

Northwind è un database Access, ma per Visual Basic 6 seguiamo lo stesso metodo: migrare, testare rispetto all'originale, far girare i due in parallelo.

Report di equivalenza (in inglese) · Anteprima cliccabile e analisi di esempio (demo)

Domande frequenti

Non abbiamo il codice sorgente. Potete migrare lo stesso il programma?

Spesso sì. Lavoriamo dal programma in uso, dal suo database e da schermate o registrazioni di come lo usano le persone. L'analisi indica quali parti possiamo riprodurre con sicurezza e quali richiedono informazioni da parte vostra.

Perché non convertire automaticamente il codice in VB.NET o C#?

Gli strumenti di conversione producono codice che compila, ma conserva la struttura da desktop, dipende spesso da librerie di compatibilità e si porta dietro i vecchi problemi. Per un'applicazione web ricostruiamo le schermate e spostiamo la logica, usando il codice VB6 come specifica di ciò che il programma fa.

Il nostro programma VB6 smetterà di funzionare su Windows 11?

Non da solo: Microsoft supporta il runtime VB6 su Windows 11. A cedere di solito è tutto ciò che gli sta intorno: file OCX non registrati, pacchetti di installazione persi, vecchi driver di database e l'IDE, che Microsoft non supporta su Windows a 64 bit.

Il nostro programma comunica con una bilancia o una stampante di etichette. Un'applicazione web può farlo?

Di solito sì, ma è l'unica parte che può richiedere un piccolo programma installato sul PC collegato al dispositivo. Lo verifichiamo durante l'analisi e lo includiamo nel prezzo.

Possiamo migrare una parte alla volta?

Sì. Il modulo pilota è la prima parte, e il resto può seguire per fasi. Quando è possibile, il programma VB6 e l'applicazione web condividono lo stesso database durante la transizione.

In che linguaggio sarà scritta la nuova applicazione?

Di solito in C# con ASP.NET Core, che qualsiasi sviluppatore .NET può mantenere. PHP con MySQL è un'alternativa se è ciò con cui lavora il vostro fornitore informatico.

Contatti

Via email:

riccardo@modernizestudio.com
Scriveteci un'email

Mandateci il programma e il suo database, con dati di prova se preferite, oppure una breve descrizione di cosa fa. Vi rispondiamo entro un giorno lavorativo.

Lavoriamo dall'Italia.

Scriveteci