Qual è la migliore pratica per il client desktop che ha bisogno di accedere a un server SQL?
Se si utilizza un server SQL locale, accedere direttamente al database. Se il client deve utilizzare un database SQL su un altro sistema, l'uso di un servizio Web è preferito per una protezione aggiuntiva e il vantaggio aggiunto di avere un livello aziendale che dovrebbe essere in grado di gestire più utenti.
Quali sono i vantaggi della connessione al database dall'applicazione rispetto all'utilizzo di un servizio Web?
La connessione tramite un servizio Web sarà sempre un po 'più lenta e le modifiche al database saranno un po' più difficili da aggiungere all'intero sistema. (Fondamentalmente, ciò significherebbe che è necessario creare una versione più recente del servizio Web mantenendo il vecchio servizio Web per la compatibilità con le versioni precedenti.)
Quale offre una maggiore sicurezza?
L'utilizzo dei servizi web tende ad essere più sicuro, anche se la sicurezza è spesso più un persone problema di problema software. Ma con il servizio web tra l'utente e il database, la connessione al database è più sicura poiché l'utente non può accedervi direttamente. (Ad eccezione delle funzionalità fornite tramite il servizio Web.) Questo punto è valido quando client e database si trovano sullo stesso sistema perché l'utente può ottenere l'accesso completo.
Che tipo di portata richiederebbe uno contro l'altro (impresa intranet vs. web app, ecc)
servizi Web sono migliori per le applicazioni client-server, dove gli utenti non dovrebbero avere accesso diretto al database. In caso contrario, una connessione diretta al database migliorerebbe le prestazioni. Quando si crea un servizio Web, iniziare scrivendo una libreria generica (di classe) che fornirà le funzionalità per il servizio web. Creare un servizio Web intorno a questa libreria (aziendale), esponendo i metodi importanti al mondo esterno. Qualsiasi sito Web può chiamare direttamente questa libreria senza utilizzare il servizio Web, sebbene sia sempre possibile anche consentire al codice Web di accedere ai dati tramite il servizio Web. Anche se si crea solo un'applicazione desktop con un database locale, scrivere una business library con la logica per accedere al database è solo un'ottima cosa da fare. Il tuo cliente potrebbe chiamare questa business library direttamente o attraverso un servizio web, a seconda delle tue esigenze.
Ci sono altre considerazioni che sono necessarie quando si sceglie sulla piattaforma?
Per lo più solo la quantità di hardware che si è disposti a utilizzare per impostare le cose. Se puoi permetterti di configurare un server database, un servizio web separato per i servizi e un terzo per il tuo sito web, con una dozzina circa di sistemi client, allora puoi optare per la versione più stratificata, dove sia il client che il sito web chiamare il servizio web, che chiama il database. Ma se tutto ha bisogno di essere eseguito su un singolo sistema, è sufficiente attenersi all'applicazione e al livello aziendale/libreria.
L'aggiunta di livelli ridurrà le prestazioni dalla vista di un singolo utente, però. Tuttavia, lavorare con più livelli può migliorare le prestazioni complessive perché le risorse vengono divise meglio tra più utenti.
"poiché l'utente non può accedervi direttamente" - per quanto riguarda il caso in cui l'accesso al DB è limitato all'esecuzione di stored procedure? Tutti i SELECT/UPDATE/DELETE diretti sono negati. Esiste un rischio per la sicurezza a livello di porta MS SQL che è più debole dell'accesso alla porta del server Web? – i486