Implementazione consigliata per un client di monitoraggio Web desktop? [chiuso]
-
03-07-2019 - |
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
- 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.
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: