Visualizzazione dei risultati da 1 a 4 su 4

Discussione: [c++]Servizi

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826

    [c++]Servizi

    ciao.
    Premetto che non so se è la sezione giusta(non so se postare qui o in .net ma mi sembra una domanda piu generale , quindi legata a "programmazione" scusa alka se sbaglio) ma sto cercando di capire cosa sono i servizi.

    Ho letto su google alcune definizioni , ma quello che non capisco è la differenza tra un programma ad es con un timer(o con un thread) che ogni tot esegue delle operazioni e il servizio.

    Io dovrei creare un programma che sta su un server e spazzola delle cartelle precise sula rete, recupera dei file xml da queste cartelle li processa e inserisce i dati estratti in una particolare maniera su un db.

    è per questo che ho pensato ad un servizio, ma essendo inesperto sull argomento chiedo a voi.

    Ho visto inoltre che si possono creare questi servizi sia con ligguaggi ad alto livello( .net) sia con c++.

    ho provato un po con c# in .net , sembra tutto semplice , ma il mio servizio nel task manager sembra impazzito , a volte occupa moltissime risorse a volte normale , ma non riesco ad avere il controllo e la pianificazione dell uso delle risorse della macchina(forse è questa la differenza dal programma col timer).

    Aggiungo inoltre che in c++ senza boost un po complicato gestire i thread e le risorse condivise.
    da dove partire?

    grazie.

  2. #2

    Re: [c++]Servizi

    Originariamente inviato da giuseppe500
    Ho letto su google alcune definizioni , ma quello che non capisco è la differenza tra un programma ad es con un timer(o con un thread) che ogni tot esegue delle operazioni e il servizio.
    Un programma "normale" vive dentro una sessione utente; nel momento in cui l'utente effettua il logout, tutti i programmi lanciati (direttamente o indirettamente) dalla sua sessione vengono terminati.

    Il servizio invece viene lanciato dal service control manager, ed è sempre in esecuzione (a meno che il SCM non gli dica di arrestarsi o di andare in pausa); i servizi inoltre normalmente non hanno interfaccia grafica e sono in comunicazione con il SCM con un sistema di callback, che gli recapita una serie di "eventi" (arresta il servizio, metti in pausa il servizio, ...) che vanno recapitati in maniera asincrona al thread che effettivamente svolge il lavoro (qui avevo descritto sommariamente il funzionamento di un servizio).

    In aggiunta a ciò, proprio perché i servizi non dipendono da una sessione utente, in genere vengono eseguiti con credenziali particolari, come LocalSystem (lo pseudo-utente con massimi privilegi sul sistema, superiori anche ad Administrator), LocalService (privilegi minimi e se si collega ad altri PC sulla rete viene visto con credenziali anonime) e NetworkService (idem, ma viene visto sulla rete come "l'account del computer" - roba di Active Directory se non sbaglio).

    In generale per pilotare un servizio si passa per il SCM (per le operazioni fondamentali di avvio/pausa/arresto) e per metodi di IPC (in genere socket).

    In ogni caso, direi di partire dalla documentazione ufficiale.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    vacca!
    è una cosa "leggermente" piu complicata di quel che pensavo(utilizzare il wizard create service di c#).
    mi sembra difficile da programmare in c++ , penso che utilizzero c#.
    in ditta abbiamo solo il vs 2003 , ci sono molti cambiamenti , sto leggendo.
    grazie MItaly

  4. #4
    Originariamente inviato da giuseppe500
    vacca!
    è una cosa "leggermente" piu complicata di quel che pensavo(utilizzare il wizard create service di c#).
    mi sembra difficile da programmare in c++ , penso che utilizzero c#.
    C# ti nasconde un po' di dettagli (ti fornisce da subito un "vero main" impostato per la registrazione con l'SCM, accetta gli switch per l'installazione del servizio, ...) e se non ricordo male ti imposta da subito il ServiceMain in maniera comoda, poi i concetti di fondo (ricevere comandi dall'SCM, lanciare i worker thread separati & co.) ovviamente rimangono gli stessi.
    in ditta abbiamo solo il vs 2003 , ci sono molti cambiamenti , sto leggendo.
    Mah, sulle cose fondamentali dei servizi non dovrebbe essere cambiato molto...
    grazie MItaly
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.