Domanda

Stiamo utilizzando il tipo di dati XML in Microsoft SQL Server 2005 per un progetto. Alcuni membri del team e io riteniamo che dovremmo anche usare gli XSD mentre i membri dell'altro campo ritengono che dovremmo mantenere gli XML ad hoc e non trattarli come "tipi" e

Gli XML sono uno sforzo per portare struttura e centralità in un numero di file di configurazione del testo che sono un incubo per la manutenzione.

Stiamo usando .NET 3.5 / C # e le nostre tabelle sono progettate con i tipi di dati appropriati. La mia tesi è che siamo già "orientati ai tipi" nel nostro pensiero perché rompere questo approccio perché è XML. È a causa della mancanza di tipi con i file di testo che si è verificato il problema originale. Non utilizzare un tipo "quotato" l'approccio ci lascia aperti allo stesso problema.

Forse la mia comprensione dei vantaggi degli schemi XML non è corretta. Quindi quali sono i vantaggi e gli svantaggi dell'utilizzo di schemi XML?

È stato utile?

Soluzione

Sfortunatamente anche l'ente autore di XSD (W3C) comprende che XSD è una tecnologia piuttosto negativa. Detto questo, la sua intenzione non è necessariamente negativa. Uno dei maggiori vantaggi di C # è che è tipizzato staticamente. La digitazione statica dei documenti XML offre gli stessi vantaggi. Ciò che probabilmente è meglio qui è il reverse engineering delle classi per produrre lo schema usando gli attributi di serializzazione XML. In questo modo C # creerà un lettore di dati personalizzato per il tuo file XML che migliorerà notevolmente le prestazioni.

Uno dei maggiori costi di XML è che deve essere analizzato per stringa. Maggiore è il numero di ipotesi che puoi fare sui tuoi file XML (ad es. La loro struttura), migliore sarà la tua performance.

Quindi, alla fine, come molte altre cose, è sufficiente la necessità di vantaggi in termini di prestazioni per giustificare i costi nel tempo degli sviluppatori. O c'è un desiderio abbastanza forte di usare sistemi tipizzati staticamente per giustificare il costo di scrittura dell'XSD.

Alla fine le esigenze del tuo progetto determineranno ciò che dovresti fare, ma la tipizzazione statica e le prestazioni sono i principali vantaggi da considerare.

Altri suggerimenti

Mantenere un repository di XML senza un XSD è simile (secondo me) ad avere un database in cui tutti i tipi sono dichiarati come VARCHAR (n). Non ti interessa che tipo di input ricevi, vuoi solo input.

Gli XSD assicurano che i tuoi XML abbiano il tipo di input che ti aspetti. Danno struttura al tuo modello, proprio quello che stai cercando.

Bene, come detto negli altri post e nella domanda, XSD assicurerà che stai usando il tipo giusto nel posto giusto nel tuo XML e che dovrai pensarci due volte prima di cambiare la sua struttura.

Ma XSD è davvero troppo prolisso, se posso dirlo. Ed a volte è davvero un casino descrivere una struttura complessa, con contenuto condizionale.

Speriamo che XSD non sia l'unico modo per convalidare un XML, un approccio molto più semplice è usare RelaxNG , e in particolare la sua sintassi compatta che è davvero più leggibile di quanto si possa mai immaginare con XSD.

Un grande vantaggio nell'uso degli schemi è che aiuta a garantire che tutti i membri del progetto siano d'accordo su come dovrebbe essere presentato un documento XML. Inoltre, usando gli schemi, puoi abilitare la convalida nel tuo parser XML, rendendo più facile capire quando un pezzo di codice fallisce perché gli è stato dato un XML errato.

L'aspetto negativo è che mantenere gli schemi può essere una seccatura e potrebbe non valere la pena a seconda del progetto.

Se non hai uno schema, finirai per reimplementare tutta la convalida da solo (o non convalidare affatto e andare in crash con input non valido). Il parser / validatore XSD fa tutto ciò che fa per te e viene ottimizzato e sottoposto a debug dagli esperti del proprio dominio. Perché dovresti rifare tutto da solo?

Gli XSD non sono l'unico schema XML disponibile. Utilizzare invece http://relaxng.org/. RelaxNG ti consente di esprimere lo schema in XML, piuttosto che richiedere l'apprendimento di un altro dato "lingua" come fanno gli XSD.

un motivo importante per lo sviluppo di XML è che consente l'uso di dati da più fonti e in molti modi in quanto è diventato uno standard ampiamente accettato per lo scambio di dati tra un numero qualsiasi di sistemi informatici.

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