Come si può danneggiare la distribuzione e il riutilizzo della flessibilità collegando il mio programma come libreria statica o dinamica?

0

Sto scrivendo un piccolo programma che voglio essere in grado di collegare con altri programmi. Intendo anche eseguirlo da un'interfaccia a riga di comando, e forse più tardi con un'interfaccia GUI.

Come si può danneggiare la distribuzione e il riutilizzo della flessibilità collegando il mio programma come libreria statica o dinamica?

Distribuiscilo come libreria e

  • Collegamento dinamico per la GUI e le interfacce della riga di comando
  • Collegamento statico per un file binario autonomo
posta Topo 07.06.2013 - 03:49
fonte

4 risposte

1

Se ti stai chiedendo se collegare staticamente o dinamicamente devi prima determinare come verrà utilizzata la tua applicazione.

Il collegamento dinamico richiede meno risorse, quindi questa è una buona opzione se l'applicazione verrà utilizzata da molti altri processi. Il collegamento dinamico consente inoltre di propagare correzioni di bug senza dover resettare le cose. Il collegamento statico è utile per le piccole applicazioni in esecuzione in ambienti limitati, poiché hanno un ingombro di risorse maggiore.

Tuttavia, le librerie statiche potrebbero essere più facili da implementare, poiché l'applicazione non avrà dipendenze tra file come le librerie con collegamento dinamico.

Per riassumere, tutto dipende da cosa si desidera utilizzare il codice, come, da chi e in quale ambiente. Inoltre, l'opzione collegata staticamente ti dà un leggero aumento delle prestazioni all'avvio (ma per tutti gli scopi pratici è trascurabile).

Suggerirei per la maggior parte degli scenari con link dinamici.

Spero che questo risponda alla domanda. Se hai bisogno di maggiori informazioni, ci sono molte risorse sulle differenze tra il collegamento statico e dinamico e i vantaggi / svantaggi di entrambi.

Buon codice!

    
risposta data 07.06.2013 - 08:21
fonte
0

So che è un po 'tardi, ma ho pensato di buttare la mia dose in: Per quanto riguarda ciò che è meglio, è davvero una questione molto soggettiva, che dipende molto da quale funzionalità, sicurezza, disponibilità e sicurezza richiedete: Con il collegamento dinamico, ad esempio:

  • salva memoria: più programmi possono accedere simultaneamente alla funzionalità della DLL
  • Indipendenza: qualsiasi linguaggio in grado di accedere a una DLL può utilizzare la funzionalità che hai creato amorevolmente
  • versioning / locale: puoi rendere dll locali o specifici per versione o anche una singola dll che può contenere specifiche di versione / locale, senza preoccuparti delle modifiche al programma, la dll farà tutto per te (beh, una volta che hai inserito il lavoro da cui iniziare ... Niente è gratuito:)
  • salva spazio su disco: una DLL su disco può servire in tutto il sistema
  • facilità di aggiornamento: puoi aggiornare un intero set di funzionalità con una semplice modifica della DLL

Con il collegamento statico puoi:

  • assicurati che il tuo programma Sempre abbia le funzioni disponibili all'interno dello SLL
  • ahem usa in modo ottimale il tuo spazio su disco: beh, il file eseguibile sarà più grande, tuttavia, è probabile che scambiando spazio su disco avrai una quantità molto (variabile di molto) -ness) programma più veloce
  • distribuzione: molto più facile dato che avrai dipendenze ridotte o non esistenti, quindi nessun file extra da includere, solo per ottenere alcune funzionalità. L'eseguibile conterrà tutto il codice SLL e il gioco è fatto, tutto ciò di cui hai bisogno sono tutte le risorse che vuoi includere separatamente da un SLL.
  • sicurezza: se tutto ciò di cui il tuo programma ha bisogno è collegato staticamente, allora il tuo exe sarà più difficile da hackerare o rompere, anche se nulla può fermare una vera e propria sicurezza, dimensioni e complessità possono spesso dissuadere i dilettanti e gli armatori. Ovviamente anche l'offuscamento aiuta.

Ci sono anche altre ragioni, ma come una scomposizione iniziale dei pro di ciascuno ho pensato che questo potesse aiutare chiunque altro a guardare la domanda.

    
risposta data 07.10.2013 - 12:48
fonte
-3

Lo scriverei come una libreria (ad esempio, DLL o JAR) e scrivo l'app della console per parlarci. In questo modo in futuro potresti scrivere una GUI per questo.

O per una maggiore flessibilità potresti scriverlo come un servizio web e parlarci in questo modo.

    
risposta data 07.06.2013 - 04:07
fonte
-3

Se il tuo "programma" ha due processi diversi puoi usare una named pipe.

    
risposta data 07.06.2013 - 04:53
fonte

Leggi altre domande sui tag