Domanda

Non ne sono convinto - penso che potrebbe essere utile esporre i tuoi dati a diversi consumatori che possono costruire le loro app front-end sul tuo servizio web.

Qualcuno può fornire esempi di quando si utilizzano i servizi Web per avvolgere il livello di accesso ai dati è una cattiva idea?

È stato utile?

Soluzione

A seconda di ciò che definisci un "livello di accesso ai dati", potrebbe esserci o meno un buon motivo per farlo. Tradizionalmente, le API distribuite come i servizi Web o i livelli RPC vivono al livello successivo. Ciò presenta i seguenti vantaggi:

  1. Senza l'accoppiamento stretto con il DB È possibile ottimizzare questo livello per giocare bene con l'accesso distribuito, ad esempio organizzando l'API per ridurre al minimo i round trip.

  2. È possibile inserire un ulteriore livello di convalida nell'API. Un livello di accesso ai dati non elaborati può consentire la scrittura nel sistema di dati errati. Per questo motivo, sarebbe male esporlo a clienti non attendibili.

  3. Puoi mettere la sicurezza a livello di applicazione sul livello dei servizi in un modo che potrebbe non essere possibile a un livello di accesso ai dati.

  4. I punti 1 e 2 indicano che puoi riutilizzare le convalide delle regole di business nel livello intermedio.

L'esposizione di una semplice API per le operazioni CRUD può essere ottenuta anche collegandosi direttamente al server di database, quindi un livello di servizio Web sopra questo non ti darà nulla che il DBMS non fornisca già. Alcuni motori DB possono anche servire direttamente query su HTTP in modo da poter effettuare il tunneling attraverso la maggior parte dei firewall. Tuttavia, gli aspetti di sicurezza di questo significano che quasi sicuramente non vuoi esporlo a Internet pubblico.

Sebbene in teoria si possano esporre le operazioni CRUD (che è quello che presumo intendi per "livello di accesso ai dati") attraverso un servizio web, ci sono alcuni buoni motivi per non farlo e relativamente poco beneficio nel farlo .

Altri suggerimenti

La principale spinta nel mondo di oggi è verso il cloud o il computing SaaS.

Tenendo conto di ciò, molte delle principali applicazioni tra cui SalesForce (CRM), Google, Parature (helpdesk), ecc. espongono le loro applicazioni tramite servizi web.

Non è solo una buona idea, è l'unico modo per fare in modo che l'applicazione venga presa sul serio dalle aziende che desiderano integrarla nel proprio ambiente.

Detto questo, l'unico esempio che mi viene in mente quando si utilizzano i servizi Web per avvolgere il DAL è una cattiva idea è quando una sola applicazione chiamerà il DAL ed è sotto il tuo controllo di sviluppo diretto. Ciò è dovuto alla penalità prestazionale pagata per serializzare / deserializzare i dati oltre un limite del servizio Web.

Bene, se stai esponendo la tua intera API su un servizio web senza sicurezza, questa potrebbe essere una cattiva idea.

Ma se stai esponendo le parti richieste, in modo sicuro e di sola lettura, e piace ai tuoi clienti, questo deve sicuramente essere una buona cosa.

Se hai mai bisogno di convincere il management, ricorda che " Google fallo. "

In .NET, WCF sembra offrire un modo per aggirare il successo prestazionale menzionato da Chris. WCF dovrebbe consentire all'utente di eseguire il componente di accesso ai dati in-process per la propria applicazione, ma di essere prontamente esposto come servizio Web. (Dichiarazione di non responsabilità: non l'ho ancora implementato, ma solo guardato.)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top