Kelas sentral dalam serialisasi
XML adalah kelas XmlSerializer, dan metode yang paling penting dalam kelas ini
adalah cerita bersambung dan Deserializemethods. XmlSerializer menciptakan C #
file dan mengkompilasi menjadi file .dll untuk melakukan serialisasi ini. Dalam
.NET Framework 2.0, XML Serializer Generator Tool (Sgen.exe) dirancang untuk
menghasilkan majelis serialisasi ini di muka untuk digunakan dengan aplikasi
Anda dan meningkatkan kinerja startup. Aliran XML yang dihasilkan oleh
XmlSerializer ini kompatibel dengan World Wide Web Consortium (www.w3.org)
Bahasa definisi XML Schema (XSD) 1.0 rekomendasi. Selanjutnya, jenis data yang
dihasilkan telah sesuai dengan dokumen berjudul "XML Schema Part 2:.
Datatypes"
Data dalam objek Anda dijelaskan
menggunakan konstruksi bahasa pemrograman seperti kelas, bidang, sifat, jenis
primitif, array, dan bahkan tertanam XML dalam bentuk XmlElement atau
XmlAttribute benda. Anda memiliki pilihan untuk membuat kelas Anda sendiri,
dijelaskan dengan atribut, atau menggunakan XML alat Skema Definisi untuk
menghasilkan kelas didasarkan pada skema XML yang ada.
Jika Anda memiliki Skema XML,
Anda dapat menjalankan XML alat Skema Definisi untuk menghasilkan satu set
kelas yang sangat diketik untuk skema dan dijelaskan dengan atribut. Ketika
sebuah instance dari kelas tersebut adalah serial, XML yang dihasilkan mematuhi
Skema XML. Tersedia dengan kelas seperti itu, Anda dapat program terhadap model
obyek dengan mudah dimanipulasi sementara menjadi yakin bahwa XML yang
dihasilkan sesuai dengan skema XML. Ini adalah sebuah alternatif untuk
menggunakan kelas-kelas lain di Framework, seperti XmlReader dan XmlWriter
kelas, untuk mengurai dan menulis aliran XML. Untuk informasi lebih lanjut,
lihat Dokumen XML dan data. Kelas-kelas ini memungkinkan Anda untuk mengurai
setiap aliran XML. Sebaliknya, gunakan XmlSerializer ketika aliran XML
diharapkan untuk menyesuaikan diri dengan Skema XML diketahui.
Atribut mengontrol aliran XML
yang dihasilkan oleh kelas XmlSerializer, memungkinkan Anda untuk mengatur
namespace XML, nama elemen, atribut nama, dan sebagainya, dari aliran XML.
Untuk informasi lebih lanjut tentang atribut ini dan bagaimana mereka
mengontrol serialisasi XML, lihat Mengontrol XML serialisasi Menggunakan
Atribut. Untuk tabel atribut-atribut yang digunakan untuk mengontrol XML yang
dihasilkan, lihat Atribut Itu Kontrol XML serialisasi.
Kelas XmlSerializer dapat lebih
cerita bersambung objek dan menghasilkan aliran SOAP XML dikodekan. XML yang
dihasilkan menganut bagian 5 dari World dokumen Wide Web Consortium berjudul
"Simple Object Access Protocol (SOAP) 1.1." Untuk informasi lebih
lanjut tentang proses ini, lihat Cara: Cerita bersambung Obyek sebagai Streaming
XML SOAP-Pengkodean. Untuk tabel atribut yang mengontrol XML yang dihasilkan,
lihat Atribut yang mengendalikan Pengkodean SOAP serialisasi.
Kelas XmlSerializer menghasilkan
pesan SOAP yang dibuat oleh, dan diteruskan ke, layanan XML Web. Untuk mengontrol
pesan SOAP, Anda dapat menerapkan atribut untuk kelas, nilai kembali,
parameter, dan bidang yang ditemukan di file XML layanan Web (.asmx). Anda
dapat menggunakan kedua atribut yang tercantum dalam "Atribut Itu Kontrol
XML serialisasi" dan "Atribut Itu Kontrol Pengkodean SOAP
serialisasi" karena layanan Web XML dapat menggunakan salah gaya SOAP
literal atau dikodekan. Untuk informasi lebih lanjut tentang menggunakan
atribut untuk mengontrol XML yang dihasilkan oleh layanan Web XML, lihat XML
serialisasi dengan XML Web Services. Untuk informasi lebih lanjut tentang SOAP
dan XML Web layanan, lihat Menyesuaikan SOAP Pesan.
Pertimbangan keamanan untuk
Aplikasi XmlSerializer
Ketika membuat sebuah aplikasi
yang menggunakan XmlSerializer, Anda harus menyadari item berikut dan
implikasinya:
• The XmlSerializer menciptakan C
# (Cs) file dan mengkompilasi menjadi file .dll di direktori bernama oleh
variabel lingkungan TEMP; serialisasi terjadi dengan orang-orang DLL.
o Kode dan DLL rentan terhadap
proses berbahaya pada saat penciptaan dan kompilasi. Ketika menggunakan
komputer yang menjalankan Microsoft Windows NT 4.0 atau yang lebih baru, ada
kemungkinan untuk dua atau lebih pengguna untuk berbagi direktori TEMP. Berbagi
direktori TEMP berbahaya jika dua akun memiliki hak keamanan yang berbeda dan
akun yang lebih tinggi-hak istimewa menjalankan aplikasi menggunakan
XmlSerializer. Dalam hal ini, salah satu pengguna dapat melanggar keamanan
komputer dengan mengganti baik Cs atau .dll file yang dikompilasi. Untuk menghilangkan
kekhawatiran ini, selalu pastikan bahwa setiap account pada komputer memiliki
profil sendiri. Secara default, lingkungan TEMP poin variabel ke direktori yang
berbeda untuk setiap akun.
o Jika pengguna berbahaya
mengirim aliran kontinu data XML ke server Web (denial of service attack), maka
XmlSerializer terus memproses data sampai komputer berjalan rendah pada sumber
daya.
serangan semacam ini dihilangkan
jika Anda menggunakan komputer yang menjalankan Internet Information Services
(IIS), dan aplikasi Anda berjalan dalam IIS. IIS memiliki gerbang yang tidak
proses stream lebih lama dari jumlah yang ditetapkan (default adalah 4 KB).
Jika Anda membuat sebuah aplikasi yang tidak menggunakan IIS dan deserializes
dengan XmlSerializer, Anda harus menerapkan sebuah gerbang yang sama yang
mencegah serangan penolakan layanan.
o XmlSerializer serializes data
dan menjalankan kode apapun menggunakan jenis diberikan untuk itu.
Ada dua cara di mana objek
berbahaya menghadirkan ancaman. Ini bisa menjalankan kode berbahaya atau bisa
menyuntikkan kode berbahaya ke dalam C # file yang dibuat oleh XmlSerializer.
Dalam kasus pertama, jika benda berbahaya mencoba untuk menjalankan prosedur
destruktif, keamanan akses kode membantu mencegah kerusakan dari yang
dilakukan. Dalam kasus kedua, ada kemungkinan teoritis bahwa benda berbahaya
mungkin entah bagaimana menyuntikkan kode ke C # file yang dibuat oleh
XmlSerializer. Meskipun masalah ini telah diperiksa secara menyeluruh, dan
serangan itu dianggap tidak mungkin, Anda harus mengambil tindakan pencegahan
tidak pernah serialisasi data dengan jenis yang tidak diketahui dan tidak
dipercaya.
o data sensitif Serial mungkin
rentan.
Setelah XmlSerializerhas serial
data, dapat disimpan sebagai file XML atau menyimpan data lainnya. Jika
menyimpan data Anda tersedia untuk proses lainnya, atau terlihat di intranet
atau internet, data dapat dicuri dan digunakan jahat. Misalnya, jika Anda
membuat sebuah aplikasi yang serializes perintah yang mencakup nomor kartu
kredit, data tersebut sangat sensitif. Untuk membantu mencegah hal ini, selalu
melindungi toko untuk data Anda dan mengambil langkah-langkah untuk tetap
pribadi.
Keuntungan Menggunakan XML
serialisasi
The XmlSerializerclass memberi
Anda kontrol lengkap dan fleksibel ketika Anda cerita bersambung objek sebagai
XML. Jika Anda membuat layanan Web XML, Anda dapat menerapkan atribut yang
mengontrol serialisasi untuk kelas dan anggota untuk menjamin bahwa output XML
sesuai dengan skema tertentu.
Misalnya, XmlSerializer
memungkinkan Anda untuk:
o Tentukan apakah bidang atau
properti harus dikodekan sebagai atribut atau elemen.
o Tentukan namespace XML untuk
digunakan.
o Tentukan nama elemen atau
atribut jika bidang atau properti nama adalah tidak pantas.
Keuntungan lain dari serialisasi
XML adalah bahwa Anda tidak memiliki kendala pada aplikasi Anda mengembangkan,
selama aliran XML yang sesuai dengan skema yang diberikan dihasilkan. Bayangkan
sebuah skema yang digunakan untuk menggambarkan buku. Ini fitur judul, penulis,
penerbit, dan ISBN jumlah elemen. Anda dapat mengembangkan aplikasi yang
memproses data XML dengan cara apapun yang Anda inginkan, misalnya, sebagai
urutan buku, atau sebagai persediaan buku. Dalam kedua kasus, satu-satunya
persyaratan adalah bahwa aliran XML sesuai dengan yang ditentukan XML Schema
bahasa definisi (XSD) skema.
Pertimbangan XML serialisasi
berikut harus dipertimbangkan
ketika menggunakan kelas XmlSerializer:
• Alat Sgen.exe secara tegas
dirancang untuk menghasilkan majelis serialisasi untuk kinerja yang optimal.
• Data serial hanya berisi data
itu sendiri dan struktur kelas Anda. Jenis identitas dan informasi perakitan
tidak termasuk.
• Hanya properti publik dan
bidang dapat serial. Properti harus memiliki accesor publik (mendapatkan dan
menetapkan metode). Jika Anda harus cerita bersambung data non-publik,
menggunakan kelas DataContractSerializer daripada serialisasi XML.
• Sebuah kelas harus memiliki
konstruktor default untuk menjadi serial oleh XmlSerializer.
• Metode tidak dapat serial.
• XmlSerializer dapat memproses
kelas yang mengimplementasikan ICollection IEnumerable atau berbeda jika mereka
memenuhi persyaratan tertentu, sebagai berikut.
Sebuah kelas yang
mengimplementasikan IEnumerable harus menerapkan metode Tambahkan publik yang
mengambil satu parameter. parameter Tambah Metode ini harus konsisten
(polimorfik) dengan jenis kembali dari properti IEnumerator.Current kembali
dari metode GetEnumerator.
Sebuah kelas yang
mengimplementasikan ICollection selain IEnumerable (seperti CollectionBase)
harus memiliki public Barang diindeks properti (pengindeks dalam C #) yang
mengambil integer dan harus memiliki properti Count publik bertipe integer.
Parameter dilewatkan ke metode Tambahkan harus jenis yang sama seperti yang
kembali dari properti Item, atau salah satu basis jenis ini.
Untuk kelas yang
mengimplementasikan ICollection, nilai-nilai untuk menjadi serial yang diambil
dari properti Item diindeks bukan oleh callingGetEnumerator. Juga, bidang umum
dan properti tidak serial, dengan pengecualian bidang publik yang kembali kelas
koleksi lain (salah satu yang mengimplementasikan ICollection). Sebagai contoh,
lihat Contoh XML serialisasi.
XSD Tipe Data Pemetaan
World Wide Web Consortium
(www.w3.org) dokumen berjudul "XML Schema Part 2: Datatypes"
menentukan tipe data sederhana yang diperbolehkan dalam bahasa definisi XML
Schema (XSD) skema. Bagi banyak dari ini (misalnya, int dan desimal), ada jenis
data yang sesuai dalam Framework. Namun, beberapa jenis data XML tidak memiliki
tipe data yang sesuai pada .NET Framework (misalnya, NMTOKEN tipe data). Dalam
kasus tersebut, jika Anda menggunakan alat XML Schema Definition (XML Schema
Definition Tool (XSD.exe)) untuk menghasilkan kelas dari skema, atribut yang
sesuai diterapkan untuk anggota dari tipe string, dan properti DataType yang
diatur ke XML nama tipe data.
Referensi:
https://msdn.microsoft.com/en-us/library/182eeyhh(v=vs.110).aspx