Ottimizzare software per uso rete locale + Database Mysql

venerdì 29 aprile 2011 - 17.00
Tag Elenco Tags  C#  |  .NET 4.0  |  Windows XP  |  Visual Studio 2010  |  MySQL 5.5

jlsweb Profilo | Newbie

Salve a tutti!
Sto sviluppando un programma in C# Framework 4.0 che dovrà essere utilizzato da 4 pc contemporaneamente!
Il software si collega ad un database Mysql su un SERVER LOCALE "linux Debian 6".

A tale proposito vorrei farvi alcune domande:
- E' possibile condividere il sorgente del programma in una rete locale? Se sì mi potete dare delle indicazioni su come ottenere un sistema ottimale?
- Ogni Client apre il programma dalla cartella condivisa dal proprio pc e il software si connette al db mysql locale

Ho fatto una simulazione di apertura del software da 5 pc e ho costato che l'apertura delle vari form è lentissimo non so per quale motivo sicuramente sto sbagliando qualcosa.
Mi hanno consigliato di creare un DSN di sistema su ogni client per aumentare le prestazioni di connessione al db mysql locale ma quanto pare il risultato è sempre uguale da ogni pc quando apro una maschera che c'è ad esempio una griglia dati passa circa 10 sec per apparire la finestra.

Mi potete dare una mano a capire il problema grazie 1000!
Magari una guida su come condividere software rete locale connesso a un db mysql. Quali sono gli accorgimenti ecc...

StefanoRicci Profilo | Junior Member

>Salve a tutti!
>Sto sviluppando un programma in C# Framework 4.0 che dovrà essere
>utilizzato da 4 pc contemporaneamente!
>Il software si collega ad un database Mysql su un SERVER LOCALE
>"linux Debian 6".
>
>A tale proposito vorrei farvi alcune domande:

>- E' possibile condividere il sorgente del programma in una rete
>locale? Se sì mi potete dare delle indicazioni su come ottenere
>un sistema ottimale?
>- Ogni Client apre il programma dalla cartella condivisa dal
>proprio pc e il software si connette al db mysql locale

intendi per caso dire che tu hai il software con tutta la struttura ed eseguibili su un server in una cartella condivisa ed i client accedono alla cartella ed aprono l'eseguibile principale?

se si è normale che giri molto lentamente, perchè il client deve scaricare le componenti del software dal server e portarle in locale ogni volta per poi girarli in ram, in oltre se hai concorrenza tra i vari client contemporaneamente per il server è un bel appesantimento....

in più non è cmq il massimo della stabilità una struttura del genere....

do per assunto che il server debian ha ip fisso e i client ip dinamici
--------------------------------------

IDE: Visual Studio 2008 Professional Edition
IDE: Visual Studio 2010 Express

jlsweb Profilo | Newbie

Ciao e grazie per la risposta!
Hai proprio azzeccato quello che intendevo dire. Visto che ogni client deve scaricare i componenti del software in memoria allora cosa mi consiglieresti di fare in questo caso? Installare ad ogni pc il setup del software + i componenti necessari? Avevo pensato di installare il software su di una sola postazione e condividere su ogni client per un questione di aggiornamento software non so mi sono spiegato.

Tu hai scritto: <inoltre se hai concorrenza tra i vari client contemporaneamente per il server è un bel appesantimento....
In effetti capisco che ci potrebbe essere un problema di rallentamento del server ma per ora bisogna rimanere in questo modo. Avresti qualche suggerimento da darmi per sviluppare un sistema multiuser?

I client si connettono tramite un IP statico sul server linux locale. Mi hanno detto che per velocizzare il tempo di connessione sarebbe utile installare un DSN di sistema con MySQL Connector/ODBC 5.1 COSA NE PENSI?

GRAZIE MILLE

StefanoRicci Profilo | Junior Member

>Ciao e grazie per la risposta!
>Hai proprio azzeccato quello che intendevo dire. Visto che ogni
>client deve scaricare i componenti del software in memoria allora
>cosa mi consiglieresti di fare in questo caso? Installare ad
>ogni pc il setup del software + i componenti necessari? Avevo
>pensato di installare il software su di una sola postazione e
>condividere su ogni client per un questione di aggiornamento
>software non so mi sono spiegato.

se i client sono windows e tu puoi alterare la distribuzione, puoi pensare di usare ClickOnce.... in pratica si tratta di un automatizzazione della distribuzione delle modifiche senza scrivere codice, gestito con standard microsoft....

in poche parole tu potresti putare una cartella intranet pubblica e all'avvio il software verifica da solo la versione e si aggiorna per i fatti suoi, oppure puoi stabilire tu il modo...

in oltre se usi dll esterne o altro le puoi includere

>Tu hai scritto: <inoltre se hai concorrenza tra i vari client
>contemporaneamente per il server è un bel appesantimento....
>In effetti capisco che ci potrebbe essere un problema di rallentamento
>del server ma per ora bisogna rimanere in questo modo. Avresti
>qualche suggerimento da darmi per sviluppare un sistema multiuser?

in questo caso non ci sta molto da fare secondo me, perchè cmq sia fino a che leggi da li il software il problema permane, e quello che cmq ti rallenta è la latenza della rete

>I client si connettono tramite un IP statico sul server linux
>locale. Mi hanno detto che per velocizzare il tempo di connessione
>sarebbe utile installare un DSN di sistema con MySQL Connector/ODBC
>5.1 COSA NE PENSI?

il connector di mysql non è haltro che un wrap delle api del dbms

a prescindere da tutto la connessione è "tu server di IP1 ti mando una query e rimanda i risultati ad IP2", quindi non ti serve sapere altro che i 2 ip... mettere dns che risolvono nomi credo che nel tuo caso aumenti la complessità per niente... visto che il problema può essere altrove....

io punto più sul metodo particolare con cui gestisci il caricamento del software... secondo me la rogna da risolvere è quella

>GRAZIE MILLE

no problem
--------------------------------------

IDE: Visual Studio 2008 Professional Edition
IDE: Visual Studio 2010 Express

jlsweb Profilo | Newbie

>Potresti putare una cartella intranet pubblica
>e all'avvio il software verifica da solo la versione e si aggiorna
>per i fatti suoi, oppure puoi stabilire tu il modo...
In effetti hai proprio ragione! Grazi del suggerimento!

Mi potresti consigliare una guida per creare un software multiuser con db mysql.
Ho visto dei programmi gestionali che vengono utilizzati da client su vari pc loro come fanno? Il sistema è abbastanza veloce

StefanoRicci Profilo | Junior Member

una volta che hai il software è completamente caricato sui client (tutto in locale)... la parte di interazione con il dmbs è da fare come se non esistessero altri utenti... è il dbms che è ottimizzato per operare in ambiente multi richeste e che gestisce la concorrenza tra le query... tu non devi fare nulla...

un passo avanti, ma che ti complica sui piccoli software, è avere i tuoi client, un tuo server (software) che maschera il db e gestisce lui l'interazione...

per quel che riguarda i libri non saprei....
io uso sempre roba che trovo alla hoepli (http://www.hoepli.it/), vado e sfoglio i libri a vedere se trovo quello che mi serve,
oppure cerco qui, http://oreilly.com/, ottimo per guide pratiche, peccano molto sulla parte teorica
--------------------------------------

IDE: Visual Studio 2008 Professional Edition
IDE: Visual Studio 2010 Express

jlsweb Profilo | Newbie

Grazie 1000 per i consigli, sei stato molto gentile!
Ora ci do occhiata ai link che mi hai posta e vedo di capirci qualcosa!
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5