Domanda

Sfondo

Ho un'idea imprenditoriale, un componente del quale riguarda un client che verrebbe scaricato & amp; installato da migliaia di utenti tramite una pagina web.

Requisiti dell'applicazione

Versione 1:

L'applicazione deve:

  • monitora l'utilizzo di Internet sul desktop dell'utente con le seguenti aree monitorate:

    • browser utilizzato,
    • ore utilizzate
    • siti accessibili
    • tiene conto della scheda del browser che è "attiva"
  • Produce un rapporto di questo utilizzo (in CSV o in un altro formato facilmente esportabile)

  • Deve essere facilmente monitorato dall'utente (ad es. in Windows tramite un'icona nella barra delle applicazioni che consente all'utente di mettere in pausa o interrompere il programma).
  • Facilmente aggiornabile tramite aggiornamenti automatici.
  • Deve essere leggero per quanto riguarda l'utilizzo della memoria.
  • Deve essere installato facilmente e rapidamente,
    • Deve essere possibile disinstallare completamente.
  • Non può influire negativamente sull'esperienza del browser o sull'esperienza del sistema dell'utente
Per la versione 2:
  • essere in grado di presentare output grafici (grafici a barre e grafici a barre)
  • essere multipiattaforma (la versione 1 avrà come target solo Windows)
  • Integra un componente online

Domanda

Dati questi requisiti, quale implementazione tecnica consiglieresti e quale piattaforma / architettura linguistica consiglieresti? Gli aspetti chiave sono le funzionalità e il basso impatto ampiamente definito sugli utenti. L'ETA o il costo sono meno critici.

È stato utile?

Soluzione

Ho costruito qualcosa di molto simile a quello dell'anno scorso. Ho usato C #. Inizialmente ha sfruttato parte del framework 3.5, ma ho dovuto ridimensionarlo al framework 2.0 a causa delle restrizioni sulla dimensione dell'installazione. Attualmente sta monitorando circa 13.000 macchine. raccolta e invio a un server di report di circa 3 MB di dati al minuto.

Le macchine client vanno dalle scatole Pentium 4 con 256 MB di RAM con XP su macchine dual core da 2 GB.

L'app che ho creato non doveva essere toccata dall'utente finale, quindi funziona come una combinazione di un servizio Windows e un plug-in di oggetti browser helper per IE. Il BHO era necessario per catturare esattamente ciò che stava accadendo nel browser.

Le uniche vere sfide erano nel farlo funzionare sotto XP e Vista (tutti i livelli di service pack) e in IE 6 e 7. XP e Vista hanno differenti implicazioni di sicurezza da tenere in considerazione; IE 6 e 7 hanno anche diversi modelli di accesso.

Infine, abbiamo puntato a trattare con Firefox o altri browser perché al cliente non importava.

Aggiorna

Firefox supporta solo le estensioni di codice javascript, c ++ e xul; l'utilizzo di c # sarebbe un PITA completo. Probabilmente proverei javascript se farebbe quello di cui avevo bisogno solo perché è più facile.

Per quanto riguarda Chrome, solo di recente hanno iniziato a supportare le estensioni ( marzo 19.2009 ). Devi modificare le proprietà di avvio del collegamento anche per poterle eseguire. Quindi, probabilmente salterei quel browser fino a quando non matura un po '. Immagino che ci saranno molte modifiche al modo in cui i plug-in vengono creati per il prossimo anno.

Per quanto riguarda la quantità di dati al minuto, questo è un valore aggregato. Ogni singolo cliente effettua il check-in solo una volta ogni quindici minuti circa; o al momento della riconnessione alla rete quando si lavora disconnessi. Pertanto, il traffico individuale è piuttosto basso e non ha alcun impatto sull'esperienza dell'utente.

I firewall

Il motivo per cui un firewall non ha davvero importanza per noi è che i dati vengono ritrasmessi al nostro server di report sulla porta 80 utilizzando i servizi web. Se 80 è bloccato, non possono comunque navigare, quindi non c'è nulla da raccogliere ... Per quanto riguarda la larghezza di banda, limita ciò che raccogli e ritrasmetti. XML con nomi di attributo / valore descrittivi lunghi NON sono tuoi amici.

Altri suggerimenti

Sembra che C # soddisfi le tue esigenze, purché sia ??limitato a un client Windows.

Qt e C ++ sono utili per i client multipiattaforma - esp. se devono essere "memory frugali" in un modo che nessuna soluzione in un linguaggio raccolto dalla spazzatura (cioè praticamente tutti gli altri ;-) di solito lo è.

Abbiamo bisogno di ulteriori informazioni:

È tempo di sviluppare un problema? Con C #, puoi sviluppare rapidamente una tale applicazione; ma non avrebbe necessariamente le stesse prestazioni di basso livello del C ++. Potresti sviluppare alcune parti in C ++ (i bit ad alta intensità di memoria) e altre in C #, ma poi i tuoi client dovrebbero avere installato .NET framework; per non parlare del fatto che potrebbero decodificare abbastanza facilmente le parti C #.

C'è un triangolo di progetto e dobbiamo sapere quali sono i due più importanti per te:

alt text

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top