Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    237

    [VB.NET] Idee per programma Client-Server

    Ciao ragazzi.
    Mi è stato chiedo di risolvere un problema, intanto vi espongo lo scenario e poi anche alcune possibili soluzioni a cui avrei pensato/letto in internet. Chiedo perché non ho mai affrontato direttamente la materia e non ho molto tempo per procedere per esperimenti.
    Dunque: Rete LAN di circ a 30 PC. A fine giornata ogni utente dal proprio PC deve compilare un rapportino con delle informazioni sul lavoro svolto; tali dati devono giungere al PC del caporeparto e archiviati per eventuali elaborazioni. Insomma, il classico scenario client-server anche se in realtà c'è solo l'invio di alcuni dati (pochi) che vanno aggiunti come record al database. Ogni client non può accedere ai dati del DB, ma solo inviarli. (niente concorrenza sull'accesso ai dati)
    1) soluzione: Creazione di 2 applicativi: il client su ogni PC e 1 server, assieme al BD. Il client si collega al server (il programma sul server deve essere in esecuzione sempre? Creare un service?), il programma server riceve i dati (protocollo TCP?) e accede lui al db scrivendoli
    2) Creazione di un unico EXE, che agisce sul DB e che risiede in una cartella condivisa, accessibile a tutti. Su ogni client c'è solo il link al programma che è in area condivisa
    3) Il programma Client accede direttamente al DB (stringa di connessione apposita, quale DB mi consigliate?) e scrive i dati. Programma server a parte, accede invece a tutti i dati del DB e permette le elaborazioni..

    Che ne dite? Ogni consiglio o rimando a materiale da studiare è molto molto molto gradito!

  2. #2
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,536
    Ciao,
    tenderei ad escludere il solo client diretto verso il db, più che altro per evitare di amministrare con utenze il DB stesso, a meno che non ti trovi meglio come DBAmministrator, ma ho paura che la sicurezza del DB potrebbe essere a rischio.

    Escluderei anche la cartella condivisa, non mi pare una soluzione molto professionale, anche perché in ogni caso sarebbe grossomodo lo stesso discorso del solo client diretto nel db.

    Credo che la soluzione migliore sia proprio la prima, ovviamente il server deve essere in esecuzione quando si inviano i dati, a meno che non si prevede una memoria "temporanea" sul client stesso, che di tanto in tanto proverà a collegarsi per vedere se è possibile scaricare i dati dalla memoria temporanea del client a quella fissa del server. Ovviamente userei i web services, così se un domani voglio accedere ai dati da altre applicazioni (da web, o da smartphone ecc.) lo posso fare sfruttando ciò che ho già.

    Tra l'altro la reattività di una applicazione WPF o Windows Form ovviamente non è paragonabile ad una applicazione web, ma farla web ti risolverebbe il problema della distribuzione. Magari cercherei una buona via di mezzo, ovvero Silverligth, perché con javascript e HTML5 si lavora bene (SPA o comunque client in javascript), ma non quanto Silverligth, senza considerare che lavori anche lato client con .NET. Però non va bene se serve la compatibilità con il browser dei tablet/smartphone ecc., infatti Silverlight non è compatibile con quest'ultimi, dovresti scrivere app native (se usi app native per Windows Phone avresti già gran parte del lavoro fatto da SL).

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    237
    Quote Originariamente inviata da U235 Visualizza il messaggio
    Ciao,
    tenderei ad escludere il solo client diretto verso il db, più che altro per evitare di amministrare con utenze il DB stesso, a meno che non ti trovi meglio come DBAmministrator, ma ho paura che la sicurezza del DB potrebbe essere a rischio.

    Escluderei anche la cartella condivisa, non mi pare una soluzione molto professionale, anche perché in ogni caso sarebbe grossomodo lo stesso discorso del solo client diretto nel db.

    Credo che la soluzione migliore sia proprio la prima, ovviamente il server deve essere in esecuzione quando si inviano i dati, a meno che non si prevede una memoria "temporanea" sul client stesso, che di tanto in tanto proverà a collegarsi per vedere se è possibile scaricare i dati dalla memoria temporanea del client a quella fissa del server. Ovviamente userei i web services, così se un domani voglio accedere ai dati da altre applicazioni (da web, o da smartphone ecc.) lo posso fare sfruttando ciò che ho già.

    Tra l'altro la reattività di una applicazione WPF o Windows Form ovviamente non è paragonabile ad una applicazione web, ma farla web ti risolverebbe il problema della distribuzione. Magari cercherei una buona via di mezzo, ovvero Silverligth, perché con javascript e HTML5 si lavora bene (SPA o comunque client in javascript), ma non quanto Silverligth, senza considerare che lavori anche lato client con .NET. Però non va bene se serve la compatibilità con il browser dei tablet/smartphone ecc., infatti Silverlight non è compatibile con quest'ultimi, dovresti scrivere app native (se usi app native per Windows Phone avresti già gran parte del lavoro fatto da SL).
    Ciao. Intanto grazie mille per la risposta.
    Forse è il caso però che specifichi una cosa importante... Per diversi motivi ho la necessità di sviluppare il tutto in Vb.net: primo fra tutti il fatto che è l'unico linguaggio che conosco bene, o almeno, so già fare una buona parte delle cose che una applicazione del genere richiede (leggere e scrivere sul DB, creazione interfaccia, validazione dei dati, ecc).. Non manca la volontà di imparare, ci mancherebbe, ma manca purtroppo il tempo.
    Detto ciò, si.. la soluzione 1 credo possa andare. Spulciando qua e la ho già trovato un pezzo di codice valido per il collegamento client-server. Questo è il link del sorgente http://tech.reboot.pro/showthread.php?tid=86 Che te ne pare? Dovrei provarlo ma non mi sembra male.. Devo un attimo capire come impostare l'IP in modo da testare client e server sullo stesso PC. In attesa di aver un altro PC in rete per fare le prove.
    Domani mi metterò al lavoro. Intanto ti chiedo, cortesemente:
    1) che database mi conviene usare? Per dire, access? In fin dei conti non ci saranno connessioni multi-utente, visto che è solo il server che scriverà e leggerà dati.
    2) é possibile impostare il server come un processo? Magari facendolo partire da solo (si agisce sul registro di sistema) e che rimanga in background?

    Grazie ancora.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    237
    Ciao.
    Vorrei continuare il Thread, visto che mi sto addentrando nella scrittura del codice. Avrei un po' di dubbi, se qualche anima pia ha voglia e tempo di chiarire un po' di questioni.
    Sto prendendo spunto da questo codice: http://www.codeproject.com/Articles/...d-server-class Ottimo articolo, ho provato il sorgente e va alla grande. Il punto è che a me piace fare le cose da me, per imparare a farle, per cui sto riscrivendo le classi server e client, prendendo spunto da li. La domanda è questa:
    Nell'articolo si usano i thread, in modo da gestire più utenti e l'interfaccia del server. Ma che differenza c'è rispetto a questo approccio http://tech.reboot.pro/showthread.php?tid=86 dove usano AsyncCallback Anche i metodi che usano per scrivere sul netStream sono diversi.. BeginSend mentre nell'altro codice usano write e read..
    Qualcuno mi può dare qualche dritta? Grazie..

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 © 2025 vBulletin Solutions, Inc. All rights reserved.