Cosa è meglio per i widget desktop (ingombro ridotto e grafica gradevole)?
Domanda
Se volessi creare un widget dall'aspetto gradevole che rimanga in esecuzione in background con un piccolo ingombro di memoria, da dove inizierei a creare l'applicazione Windows.Il suo obiettivo è mantenere un elenco aggiornato di elementi fuori da un servizio web.Simile a un lettore RSS.
Nota:Il livello dati si connetterà tramite REST, di cui ho già una dll C#, che presumo non influirà troppo sull'impronta.
Ovviamente mi piacerebbe utilizzare un bel progetto WPF, ma la dimensione iniziale di ~ 60.000k è troppo grande.
*L'applicazione dei moduli C# è di circa ~ 20.000k
*Moduli C++ ~16.000k
*CLR o MFC molto più piccolo, inferiore a 5
C'è un modo per ridurre il WPF o i moduli?e se sono bloccato a usare CLR o MFC quale sarebbe il modo più semplice per renderlo carino.(la mia esperienza con MFC sta creando molti moduli premio)
Aggiornamento:Una precisazione Le dimensioni sopra indicate rappresentano la memoria utilizzata durante l'esecuzione del processo, non l'eseguibile.
Soluzione
Rif:
Aggiornamento:Chiarimento Le dimensioni di cui sopra sono la memoria utilizzata quando viene eseguito il processo, non l'eseguibile.
Ok, quando esegui una piccola app C# Win Forms, la quantità minima di RAM riservata è di circa 2 mega, forse 4 mega.Questo è solo un set di lavoro che crea.Non sta utilizzando attivamente tutta questa memoria o qualcosa di simile.Si limita a riservare tanto spazio in anticipo in modo da non dover eseguire richieste lunghe/lente/costose per più memoria in seguito, se necessario.
Prenotare in anticipo una dimensione più piccola è probabilmente una falsa ottimizzazione.
(Puoi ridurre il working set con una chiamata pinvoke se è davvero importante.Vedere pinvoke per 'imposta la dimensione del set di lavoro del processo' )
Altri suggerimenti
Se "hai già una dll C#" che intendi utilizzare, è necessario che .net sia già installato sul computer di destinazione.
In tal caso, non è necessario che un'app C# Win Forms si avvicini a 20 mega.Il modulo di vincita di tipo Hello World più piccolo sarebbe di 7 kilobyte.
Se deve essere davvero il più piccolo possibile, usa il semplice C e parla direttamente con l'API di Windows.
Tuttavia, poiché il CLR verrà caricato comunque a causa della dll .NET, opterei per qualcosa di meno doloroso e utilizzerei semplicemente C# anche per l'interfaccia utente.
Perché non utilizzare Silverlight?Ecco un articolo che parla di fare proprio questo.