|
Xmlni asinxron tarzda qayta ishlash
|
bet | 1/2 | Sana | 27.09.2023 | Hajmi | 66 Kb. | | #84549 |
Bog'liq XML 1698915284, KICHIK VA O’RTA GURUHLARDA QURILISH VA KOSTRUKSIYALASH BO’YICHA FAOLIYATLARNI LOYHALASHTIRISAH, DIDAKTIK JARAYON -PEDAGOGIK TEXNOLOGIYALARNING ASOSIY OMILI, 4-SINFDA ARIFMETIK AMALLAR OʻQITISH METODIKASI DEB YOZING, MAKTABGACHA TA\'LIM TASHKILOTLARIDA TARBIYALANUVCHILAR FAOLIYATI, TEXNOLOGIYALARNING TA’LIM JARAYONIDA TUTGAN O’RNI
XML hujjat hosil qilish uchun C# dasturlash tilida System.Xml.Linq nomlar fazosidagi XElement sinfidan ham foydalansak bo'ladi:
XElement sinfi yordamida XML hujjat hosil qilish birmuncha oson va tushunarli. Har bir element va uning ichidagi elementlar shajaraga o'xshab joylashadi
XElement talabalar =
new XElement("Talabalar",
new XElement("Talaba",
new XElement("Id", "1"),
new XElement("Ism", "Baxtiyor"),
new XElement("Familiya", "Murodov"),
new XElement("Tel_nomer", "+998901234567")));
talabalar.Save("Talabalar.xml");
XML hujjatni JSON fayllar kabi Serialize qilish orqali ham yaratishimiz mumkin. Buning uchun bizga System.Xml.Serialization nomlar fazosidagi sinflar kerak bo'ladi.
Dastlab Talaba modelimizga [Serializable] attributini qo'shishimiz kerak bo'ladi:
[Serializable]
public class Talaba
{
public int Id { get; set; }
public string Ism { get; set; }
public string Familiya { get; set; }
public string TelNomer { get; set; }
}
Yangi Talaba obyektini xususiyatlari bilan yaratamiz va Talabalar listiga qo'shamiz:
Talaba talaba = new Talaba
{
Id = 1,
Ism = "Baxtiyor",
Familiya = "Murodov",
TelNomer = "+998901234567"
};
List talabalar = new List();
talabalar.Add(talaba);
Obyektimizni serialize qilamiz va TextWriter yordamida Talabalar.xml nomi bilan saqlaymiz:
XmlSerializer serializer = new XmlSerializer(typeof(List));
TextWriter twriter = new StreamWriter("Talabalar.xml");
serializer.Serialize(twriter, talabalar);
twriter.Close();
Natijamiz:
XMLni asinxron tarzda qayta ishlash
System.Xml.XmlReader va System.Xml.XmlWriter sinflari asinxron dasturlash modeliga asoslangan bir qancha asinxron usullarni o'z ichiga oladi . Ushbu usullarni nomlari oxiridagi "Async" qatori bilan aniqlash mumkin. Ushbu usullar yordamida siz sinxron kodingizga o'xshash asinxron kodni yozishingiz va mavjud sinxron kodingizni osongina asinxron kodga o'tkazishingiz mumkin.
Tarmoq oqimining sezilarli kechikishi mavjud bo'lgan ilovalarda asinxron usullardan foydalaning. Xotira oqimi yoki mahalliy fayl oqimini o'qish/yozish operatsiyalari uchun asinxron API lardan foydalanishdan saqlaning. Kirish oqimi, XmlTextReader va XmlTextWriter asinxron operatsiyalarni ham qo'llab-quvvatlashi kerak. Aks holda, oqimlar kirish/chiqarish operatsiyalari bilan bloklanadi.
Biz sinxron va asinxron funksiya chaqiruvlarini aralashtirishni tavsiya etmaymiz, chunki siz awaitkalit so‘zdan foydalanishni unutib qo‘yishingiz yoki asinxron zarur bo‘lganda sinxron API dan foydalanishingiz mumkin.
Agar asinxron usuldan foydalanmoqchi bo‘lmasangiz, XmlReaderSettings.Async yoki XmlWriterSettings.Asyc bayrog‘ini o‘rnatmang .true
Asinxron usulni chaqirganda kalit so'zni ko'rsatishni unutib qo'ysangiz await, natijalar aniqlanmaydi: Siz kutgan natijani yoki istisnoni olishingiz mumkin.
XmlReader ob'ekti katta matn tugunini o'qiyotganda , u faqat qisman matn qiymatini keshlashi va matn tugunini qaytarishi mumkin, shuning uchun XmlReader.Value xususiyatini olish I/U operatsiyasi bilan bloklanishi mumkin. Asinxron rejimda matn qiymatini olish uchun XmlReader.GetValueAsync usulidan foydalaning yoki katta matn blokini bo'laklarga bo'lib o'qish uchun XmlReader.ReadValueChunkAsync usulidan foydalaning.
XmlWriter obyektidan foydalanganda XmlWriter.Close ga qo'ng'iroq qilishdan oldin XmlWriter.FlushAsync usuliga qo'ng'iroq qiling va kirish/chiqarish operatsiyasini blokirovka qilmaslik uchun.
W3C spetsifikatsiyalaridan farqlari
Model guruh sxemasi komponentlarida cheklovlarni o'z ichiga olgan ikkita holatda System.Xml nom maydoni W3C tavsiyalaridan farq qiladi.
|
| |