ado.net o EF per un sistema di punti vendita

2

Abbiamo un sistema di point-of-sale che è stato sviluppato usando ado.net, la nostra preoccupazione attuale è di rendere l'applicazione molto veloce nella creazione di transazioni (vendite). Di solito non ci sono problemi di prestazioni con i PC di fascia alta, ma con i PC di fascia bassa, le transazioni sono molto lente.

La preoccupazione principale è il salvataggio di transazioni che di solito richiama molte stored procedure per l'inserimento di record all'interno di una singola transazione. Questo di solito richiede tempo su PC di fascia bassa. Dobbiamo migliorare le prestazioni poiché la maggior parte dei client utilizzerà solo PC di fascia bassa per fungere da cassiere. Una soluzione che stiamo pensando è l'uso di un framework di entità per l'accesso ai dati. L'intero progetto è scritto usando ado.net e il tempo di sviluppo se passiamo alla struttura di entità sarebbe molto. Eventuali suggerimenti?

    
posta Gian Acuna 05.07.2013 - 14:40
fonte

4 risposte

6

Vorrei sottolineare che Entity Framework (nome completo: ADO.NET Entity Framework ) è un ORM (Object Relational Mapper) che usa ADO.NET sotto il cofano per connettersi al database. Quindi la domanda "dovremmo usare ADO.NET o EF?" non ha davvero senso in questo senso. A meno che non si riesegua l'architettura della propria applicazione, aggiungere EF al mix è semplicemente aggiungendo un altro layer sopra ADO.NET.

Sinceramente dubito che ADO.NET sia la fonte dei tuoi problemi di prestazioni, comunque. Sembra che il problema esista nelle stesse stored procedure.

Penso i commenti di Luc Franken sono sulla strada giusta, però. È necessario misurare e determinare esattamente dove si verificano i ritardi. Quindi concentrati a risolvere esattamente questo problema. Qualcos'altro sta brancolando nel buio.

    
risposta data 05.07.2013 - 18:50
fonte
3

Se stai cercando prestazioni, stai lontano da EF. È l'ORM più lento là fuori e utilizza molta memoria per mantenere i metadati del database. La maggior parte dei benchmark là fuori mostra che -

    
risposta data 05.07.2013 - 15:27
fonte
3

Dici che stai chiamando "molte stored procedure". Se ogni chiamata include un viaggio separato nel database, questo è il tuo problema di prestazioni, perché i viaggi verso il database sono sempre costosi, qualunque cosa facciano. Dovresti avere una stored procedure per salvare una transazione. Se questa procedura deve chiamare altre procedure, va bene, a patto che non sia necessario effettuare un viaggio separato nel database.

    
risposta data 05.07.2013 - 19:22
fonte
0

Quanto è necessario che ogni transazione richieda una chiamata al database?

A che punto viene eseguito l'inserimento db? C'è una chiamata per transazione o si sta inserendo con ogni aggiunta all'ordine causando un ritardo maggiore nell'interazione dell'utente?

La chiamata db può essere gestita tramite richieste HTTP private su un server dedicato sulla LAN del client?

Forse un approccio migliore sarebbe quello di salvare le transazioni in un repository e postarle sul server tutte insieme usando il modello Unità di lavoro che viene attivato non appena si verifica una pausa di oltre 5 secondi. O forse le macchine client lente potrebbero postare su un servizio in grado di gestire gli inserimenti del database.

Cos'altro potrebbe rallentare la macchina? Il processore della GUI è intenso? È un POS, non un pezzo del portfolio di un grafico.

    
risposta data 01.09.2013 - 10:56
fonte

Leggi altre domande sui tag