2011-12-30 14 views
9

In che modo un'applicazione Windows 8 Metro si collega a un database centrale?In che modo un'applicazione Windows 8 Metro si connette a un database centrale?

  • Ho letto sull'archiviazione locale, ma non ho letto nulla sulla connessione a un database centrale.
  • Ovviamente, questa decisione di progettazione architettonica deve supportare lo scenario disconnesso.
  • I servizi Web WCF sembrano avere un senso.
    • Ma anche se hanno senso, dovremmo davvero creare metodi separati per tutte le operazioni di lettura/scrittura?
    • O i servizi WCF di OData sono la soluzione?
  • Sembra che l'architettura del software per tablet debba essere in grado di prendere in prestito molto dall'architettura del software per smartphone (ma sono nuovo ad entrambi).
  • Microsoft ha formulato raccomandazioni nel suo app samples?
+0

Avere tutti i cambiamenti avvenuti dal momento che hai pubblicato la tua domanda e risposta? Potresti suggerire i riferimenti di eventuali cambiamenti significativi? Grazie. – NoChance

risposta

13

Sembra che altri stiano facendo domande simili sullo Microsoft Developer Forums.

Ecco cosa ho trovato:

According to Tim Heuer:

... Non si può avere direttamente un db SQL incorporato nel app o usare qualcosa come ADO.NET. Si tratta di un'infrastruttura asincrona/servizi . Quindi se i tuoi dati sono stati esposti tramite servizi, allora del corso potresti connetterti in questo modo. Esistono altri metodi leggeri che è possibile utilizzare anche per lo storage locale, ad esempio lo spazio dei nomi Windows.Storage (simile a Storage isolato in .NET).

Morten Nielsen agrees:

È possibile utilizzare HttpClient per scaricare praticamente qualsiasi cosa dal web. Perché non si configura il servizio WCF per restituire i dati come JSON e utilizzare DataContractJsonSerializer per deserializzare i risultati?

Inoltre, Tim Heuer cautions:

... Si prega di notare che, mentre impressionante, il progetto SQLWinRT su CodePlex è un wrapper per comunicare con il classico motore di SQLite ... che utilizza le API che avrebbe non superare la convalida del negozio attualmente.


Generic Object Storage Helper for WinRT e WinRTFile Based Database sembrano avere qualche promessa.

Ma Daniel Stolt raises some good points:

E 'impressionante che ci sia un buon supporto per la costruzione di clienti OData e altri client REST - ma questo solo gli indirizzi lo scenario in linea. La parte "strutturata" di Windows.Storage è un modello molto limitato, essenzialmente limitato a coppie nome/valore, insufficiente per tutti tranne gli scenari di base . Sì, c'è un archivio di file locale, che è ottimo ovviamente. Ma forzare tutti gli sviluppatori di app là fuori per creare il proprio DB2 in cima all'archiviazione di file locale semplicemente non lo taglierà, specialmente con tutti i System.Data che sono stati rimossi dal profilo. Se l'archiviazione locale del file era sufficiente per la maggior parte delle app del dispositivo, cose come lo SQLCE non avrebbero avuto alcuno scopo oggi. E SQLCE ha chiaramente uno scopo e ha giocato un ruolo molto importante per occasionalmente app di dispositivi connesse per un tempo molto lungo. C'è anche un enorme bisogno di sincronizzazione con un database lato server come SQL Azure, principalmente per poter effettuare il roaming dei dati tra dispositivi. Sì, c'è lo modello di archiviazione di roaming in WinRT, ma condivide le stesse limitazioni di memoria locale menzionate sopra, e in aggiunta è molto limitato nella capacità di (attualmente 30 KB se la memoria serve). È semplicemente insufficiente per tutti tranne i più semplici bisogni di dati di roaming. Ancora una volta, costringendo ogni sviluppatore di app a progettare e implementare la propria soluzione di sincronizzazione è pessima. Puoi fare molto meglio per abilitare gli sviluppatori di .


Molte persone sono delusi dal fatto che lo spazio dei nomi System.Data non è supportata in WinRT.

Richard Bethell said:

Non ho nemmeno ho parole per questo. Questo è sorprendente.Lasciare da parte per nel momento in cui vogliono forzare l'astrazione al middleware per la connettività del database - Non sono d'accordo, ma posso quasi capire una motivazione per lo . Posso persino vedere percorsi per lo sviluppo in questo modo.

Ma nessun System.Data .... a tutti? Capisci cosa hai fatto a ?

Cosa System.Data può fare, al di fuori del solo che hanno fornitori per SQL, OleDb e altri provider personalizzati come Oracle, è fornire una ricca astrazione della serie di dati XML che consentono di costruire rapidamente un data orientato Service Oriented Architettura.

Ad esempio, posso facilmente creare un servizio Web utilizzando SOAP o WCF che restituisce DataSet o DataTable e quindi li consumano facilmente e direttamente. Essere in grado di farlo consente una costruzione molto rapida delle architetture n-tier , anche senza connessioni dati dirette disponibili.

Senza System.Data e la potenza di DataView, DataTable, ecc. Questo diventa molto più difficile. Certo, puoi creare strutture personalizzate, inserire i dati in , e servire le strutture, e usare Linq per fare qualunque ordinamento, il filtro , ecc. Che vuoi fare .... ma finisce con il doppio del lavoro , e rende il riutilizzo del codice molto più difficile. E significa usando il nostro architettura orientata ai servizi esistenti è impossibile (senza un grande revisione.)

Il ritiro delle System.Data è grande cosa per gli sviluppatori a che fare con come la perdita dell'oggetto Printer in VB6 a vb.net 1.0 è stato. Ciò che è è più difficile da capire in questo caso è il motivo per cui è necessario - riattivarlo nel profilo Metro non può essere una difficoltà tecnica del prodotto , vero?

E 'abbastanza importante che vorrei seriamente in considerazione tra cui classi System.Data di Mono come parte di qualsiasi applicazione creo (che sarebbe ovviamente devono essere open source.)

+1

Lol. Ho appena finito di leggere quel post sul forum. – Arrow

3

Penso che questo è un altro di quei "dipende" domande ...

Il primo e più ovvio problema è che molto dipende dal contesto in cui l'applicazione è in esecuzione sul fatto , per prendere il primo caso "Ovviamente ... supporto ... disconnesso" è in realtà vero - se l'app è un'app interna aziendale allora probabilmente non in quel caso nessun db == non funziona.

In secondo luogo si potrebbe guardare (hmm, rash ... si presume che si potrebbe guardare, questo potrebbe essere una cattiva ipotesi) alla sincronizzazione del database tra un database SQL locale e il db remoto e così via e così via.

Fare un passo indietro ... sì - hai perfettamente ragione, guarda come se fosse lo stesso di telefono o silverlight (anche se non so se c'è ancora il supporto RIA) - ma la cosa è a questo punto è molto difficile essere prescrittivo perché dato una piattaforma per scopi generali si può quindi scrivere applicazioni per tutti i tipi di scopi.

Non è una risposta estremamente utile, ma un inizio.


Avendo letto la risposta di @Jim G, sembra che probabilmente dovrei ritirare il mio?

+0

+1: No, per favore mantieni la risposta. È stato molto utile; in particolare la parte su "non assumere uno scenario disconnessi". –

Problemi correlati