Eseguibili di grosse dimensioni

venerdì 29 ottobre 2010 - 13.50
Tag Elenco Tags  VB.NET  |  Windows 7  |  Windows XP  |  Visual Studio 2005  |  SQL Server 2008 R2

giaarcix Profilo | Newbie

Ciao a tutti,
volevo un consiglio perchè sto rifacendo il gestionale della mia azienda (applicazione windows stand alone vb.net 2005).
Dato che l'applicazione era ed è molto complessa (molti form, molto codice) ho un eseguibile già in produzione che ha superato i 2MB e che secondo me, una volta completato tutto l'applicativo, potrebbe anche superare i 3MB.

Non che questo crei particolari problemi... ma vorrei capire se sia possibile ridurlo con qualche accorgimento.
Considerate che ci sono poche icone all'interno del programma e che sono tutte di pochi kb di dimensione (al massimo 10kb). Quello che mi sembra "gonfi" l'eseguibile, invece, sono il codice e le form, per cui mi chiedevo se non sia possibile (dico un po' ad intuito) estrarre dall'eseguibile parte del codice ed inserirlo in una dll o qualche cosa del genere...
Però non so da dove cominciare!
Grazie mille per le idee che mi suggerirete!

Giacomo

AntCiar Profilo | Expert

Ciao.
non ti preoccupare. 2Mb non sono niente. La nostra applicazione ha 32 librerie e supera in totale i 70Mb.
Se vuoi puoi ridistribuire il codice il librerie diverse (con un certo criterio ovviamente) in modo da avere una cosa "leggibile" e visivamente comprensibile.

Ciao
Cristian Barca

giaarcix Profilo | Newbie

Ciao e grazie mille per la risposta prontissima!
Un eseguibile di 70MB!? Caspita!
Ok, mi hai rassicurato... ma diciamo che mi piacerebbe sperimentare un po' con le librerie.
Io ho una serie di "code file" che sono abbastanza a sè stanti ma che "collaborano" con i form principali.
Ad esempio ci sono funzioni generiche (matematiche, di conversione, ecc.), funzioni che popolano database esterni, e funzioni che popolano campi o grid che si trovano nei form principali.
Ora mi chiedo: una libreria "fatta bene" contiene solamente funzioni completamente a sè stanti o anche funzioni che vanno a interagire con i form principali? Cioè in soldoni posso inserire in una libreria una funzione nella quale uso un comando tipo main.textbox1.text = "pippo" dove main è un form dell'applicazione in cui userò la libreria?
Così ad occhio direi che non si può.. ma non si sa mai!
Grazie...!!!

Giacomo

AntCiar Profilo | Expert

Ciao.

Non ho un unico eseguibile da 70Mb. L'eseguibile di avvio è di circa 6Mb, poi tutta l'applicazione (insieme delle dll) arriva a 70Mb circa... e le dll non sono poi tanto piccoline.

Ciao ciao
Cristian Barca

giaarcix Profilo | Newbie

Ah ecco!
Ok...ma se io volessi imparare ad usare le librerie... giusto per cominciare?
Quello che ho scritto nel mio post precedente ha senso?
Grazie!

kataklisma Profilo | Senior Member

Ciao :)

>Ora mi chiedo: una libreria "fatta bene" contiene solamente funzioni
>completamente a sè stanti o anche funzioni che vanno a interagire
>con i form principali? Cioè in soldoni posso inserire in una
>libreria una funzione nella quale uso un comando tipo main.textbox1.text
>= "pippo" dove main è un form dell'applicazione in cui userò
>la libreria?
>Così ad occhio direi che non si può.. ma non si sa mai!

Tutto si puo fare ma è sbagliatissimo....basterebbe passare un parametro di tipo TuoForm in modalità reference....

La cosa migliore, ovvia e logica è quella di sviluppare funzioni che restituiscono un tipo e che popolano i form ad esempio :

public string RitornaPippo()
{
return "Pippo";
}

...
mioform.txtPippo.Text = RitornaPippo;
...

cosicchè da avere nelle varie dll le varie function e negli exe la GUI del software.... ;)

>Grazie...!!!
Di nulla :)

------------------------------------------
Ignazio Catanzaro

http://blogs.dotnethell.it/swdev/

AntCiar Profilo | Expert

per dividere tutto in librerie dovresti fare prima una analisi attenta di quello che hai già fatto.
Di solito si cerca di fare in questo modo:

- una libreria di basso livello in cui sono inserite le impostazioni dell'applicazione e l'accesso al DB.
- una libreria di livello superiore contenente tutte le funzioni che usa il tuo programma.
- una libreria di livello più alto in cui metti tutta la grafica.

Con una struttura di questo tipo se cambi qualcosa di grafico, mandi solo la libreria della grafica, se cambi qualche "modo operativo" della tua applicazione, mandi solo la libreria intermedia etc....

Ora non so la complessità del tuo progetto e se conviene nello stato attuale cambiare l'architettura anche perchè non è un lavoro che fai in poco tempo. C'è da buttarci il sangue.
Cristian Barca

giaarcix Profilo | Newbie

Grazie mille! Farò qualche prova per capire se mi conviene modificare ciò che ho già fatto oppure aspettare il prossimo progetto!
Chiudo!
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5