• XMLni asinxron tarzda qayta ishlash
  • W3C spetsifikatsiyalaridan farqlari
  • Xmlni asinxron tarzda qayta ishlash




    Download 66 Kb.
    bet1/2
    Sana27.09.2023
    Hajmi66 Kb.
    #84549
      1   2
    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.

    Download 66 Kb.
      1   2




    Download 66 Kb.