Come gestire un'applicazione winforms installata in molti PC connessi a un singolo database sql?

1

Ho un'applicazione winforms che si connette a un singolo database sql server 2012 ed è eseguita in molti PC di un'azienda.

Sto riscontrando diversi problemi con alcune transazioni all'interno dell'applicazione, deadlock e timeout, quindi l'idea del refattore mi viene in mente.

In realtà l'app utilizza l'oggetto DbConnection (l'app inizia con Framework 2.0 e di recente è stata aggiornata a Framework 3.5 ma il livello di accesso ai dati non è stato modificato) per eseguire le chiamate sql al database e in Program.cs la connessione è aperto e fino a quando l'utente non chiude l'app mantenuta aperta.

Quali sono le mie opzioni per refactoring questa app?

  • Entity Framework? = > Con questo devo dire che il database SQL non ha chiavi estranee
  • Riforma il livello di accesso ai dati per utilizzare una connessione più efficiente? Forse usando TransactionScope?
  • L'app sempre connessa è efficiente?
posta Phoenix_uy 16.05.2014 - 15:53
fonte

1 risposta

3

La migrazione a una tecnologia diversa non impedisce necessariamente deadlock, timeout e altri problemi a livello di applicazione. Ti limiterai a riorganizzare le sdraio.

Ci sono molti casi in cui questo modello client-server funziona, in genere è efficiente, a patto che i client non facciano cose come leggere una grande query e mantenere il blocco sul set di risultati del DB (come alcuni "risultati di modifica") i controlli possono fare).

Il trucco è leggere ciò che ti serve, lavorare con esso e aggiornare ciò che hai cambiato in seguito, consentendo ad altri di giocare bene con la stessa risorsa DB. Se ti sei spostato, ad esempio, su un'architettura a 3 livelli in cui la connessione DB è detenuta da un servizio centrale, dovrai comunque adottare questo approccio.

A parte questo, non posso davvero aiutare - dipende dal tuo programma il suo utilizzo e le cose brutte che fa. Un approccio a 3 livelli è comunque una buona cosa e, se lo si progetta in modo tale che non sia legato a un client Winforms specifico, sarà possibile riutilizzare il server centrale con i client futuri (ad esempio uno Web)

    
risposta data 16.05.2014 - 16:33
fonte

Leggi altre domande sui tag