.NET bilan bog’liq mavhumliklardan qochish
.NET Framework, .NET Core, .NET Standard, va .NET kabi terminlar tez-tez uchrab turadi. Ular nima va bir-biridan qanday farq qiladi?
Bugungi postimizda shular xususida so‘z yuritamiz. 😃
.NET 6, .NET Core, .NET Framework va Xamarin ilovalar va xizmatlarni yaratishda foydalaniladigan dasturchilar uchun oʻzaro bogʻliq va bir-biriga oʻxshash platformalardir. Ushbu boʻlimda men sizlarni ushbu .NET tushunchalarining har biri bilan tanishtirmoqchiman.
.NET Frameworkni Tushunish
.NET Framework — bu kodning bajarilishini boshqaruvchi Common Language Runtime (CLR) va ilovalarni yaratish uchun sinflarning boy kutubxonasini ta’minlovchi Base Class Library (BCL) larni o’z ichiga olgan ishlab chiqish platformasi.
Microsoft dastlab .NET Frameworkni kross-platform imkoniyatiga ega bo’lishini rejalashtirgandi, biroq Microsoft uni Windows bilan juda zo’r ishlashini amalga oshirish uchun kuchini sarfladi.
.NET Framework 4.5.2 dan boshlab u Windows operatsion tizimining rasmiy komponenti hisoblanadi.
Komponentlar o’zlarining asosiy mahsulotlari bilan bir xil qo’llab-quvvatlovga ega, shuning uchun 4.5.2 va undan keyingilari o’rnatilgan Windows operatsion tizimning yashash davri siyosatiga amal qiladi. .NET Framework bir milliarddan ziyod kompyuterlarda o’rnatildi, shuning uchun unda iloji boricha kamroq o’zgarishlar bo’lishi kerak. Hatto bug(qurtcha) larni tuzatish ham muammolarga olib kelishi mumkin, shunga u kamdan-kam yangilanadi.
.NET Framework 4.0 yoki undan keyingilarida .NET Framework uchun yozilgan kompyuterdagi barcha ilovalar CLR ning bir xil versiyasini va Global Assembly Cache (GAC) da saqlangan kutubxonalarni baham ko’radi, bu esa ulardan ba’zilariga o’zaro muvofiqlik uchun ma’lum bir versiya kerak bo’lsa, muammolarga olib kelishi mumkin.
Mono, Xamarin va Unity loyihalarni Tushunish
Uchinchi tomon tashkilotlar Mono loyihasi deb nomlangan .NET Framework tadbiqini ishlab chiqdilar. Mono — kross-platformadir, lekin u .NET Frameworkning rasmiy tatbiq etilishidan ancha orqada qoldi.
Mono Xamarin mobil platformasi, shuningdek, Unity kabi kross-platformali o’yinlarni ishlab chiqish platformalarining asosi sifatida o’z o’rnini topdi.
Microsoft Xamarinni 2016-yilda sotib oldi va endi ilgari qimmat Xamarin extension(kengaytmasi)ni Visual Studio bilan bepul taqdim etadigan bo’ldi. Microsoft faqat mobil ilovalar yaratishi mumkin bo’lgan Xamarin Studioni Mac uchun Visual Studio deb o’zgartirdi va unga konsol ilovalari va veb-xizmatlar kabi boshqa turdagi loyihalarni yaratish xizmatlarini qo’shdi. Mac uchun Visual Studio 2022 bilan Microsoft tajriba va ishlashning yaqinroq tengligini taʼminlash uchun Xamarin Studio muharriri qismlarini Windows uchun Visual Studio 2022 qismlari bilan almashtirdi. Mac uchun Visual Studio 2022 ham macOS oʻrnatilgan yordamchi texnologiyalari bilan ishonchlilik diapazoni ishini yaxshilash uchun haqiqiy macOS UI ilovasi boʻlishi uchun qayta yozildi.
.NET Core ni Tushunish
Bugungi kunda biz chinakam platformalararo dunyoda yashayapmizki, zamonaviy mobil va bulutli rivojlanish Windows ni operatsion tizim sifatida unchalik ahamiyatsiz holga keltirdi. Shu sababli Microsoft .NET ni Windows bilan yaqin aloqalaridan ajratish ustida ishlamoqda. .NET Frameworkni chinakam kross-platformali bo’lishi uchun qayta yozish paytida ular endi core(o‘zak) hisoblanmaydigan asosiy qismlarni qayta qurish va olib tashlash imkoniyatidan foydalanganlar.
Ushbu yangi mahsulot .NET Core brendi ostida bo’lib, .NET Frameworkdagi CLR nomi CoreCLR ga, BCL esa soddalashtirilib CoreFX ga o’zgartirildi va kross-platforma xususiyati qo’shildi.
.NET Core tez harakat qiladi va u ilova bilan yonma-yon joylashtirilishi mumkinligi sababli, u tez-tez o’zgarishi mumkin, chunki bu o’zgarishlar bir xil mashinadagi boshqa .NET Core ilovalariga ta’sir qilmaydi. Microsoft .NET Core va zamonaviy .NET ga qilgan ko’pgina yaxshilanishlarni .NET Frameworkga osongina qo’shib bo’lmaydi.
.NET ning o‘ziga Tushunish
2020-yil may oyida boʻlib oʻtgan Microsoft Build dasturchilar konferensiyasida .NET jamoasi .NET ni birlashtirish boʻyicha rejalari kechiktirilganini eʼlon qildi. Ular .NET 5 2020-yil 10-noyabrda chiqarilishini va u mobildan tashqari barcha turli .NET platformalarini birlashtirishini aytishdi. 2021-yil noyabr oyida .NET 6 ga qadar mobil qurilmalar ham birlashgan .NET platformasi tomonidan qo‘llab-quvvatlanadi.
.NET Core nomi .NET deb o‘zgartirildi va asosiy versiya raqami .NET Framework 4.x bilan chalkashmaslik uchun to‘rtinchi raqamni o‘tkazib yubordi. Microsoft har yili noyabrda yillik yirik versiyalarini chiqarishni rejalashtirmoqda, xuddi Apple har sentyabrda iOS ning asosiy versiya raqamlarini chiqarganidek.
Quyidagi jadvalda zamonaviy .NET ning asosiy versiyalari qachon chiqarilgani, kelajakdagi relizlar qachon rejalashtirilganligi ko‘rsatilgan:
Zamonaviy .NET nimasi bilan farq qiladi?
Zamonaviy .NET eski .NET Framework bilan solishtirganda kross-platform qilingan. Bu “open-source” bo’lib, Microsoft yaxshilanishlar va o’zgarishlar haqida qarorlar qabul qiladi. Microsoft zamonaviy .NET ish faoliyatini yaxshilash uchun alohida kuch sarfladi.
Eski va kross-platform boʻlmagan texnologiyalarni olib tashlash tufayli u .NET Frameworkning soʻnggi versiyasidan kichikroq. Misol uchun, Windows Forms va Windows Presentation Foundation (WPF) kabi ichki platformalar foydalanuvchi grafik interfeysi (GUI) ilovalarini yaratish uchun ishlatilishi mumkin, lekin ular Windows’ga qattiq bog’langan, shuning uchun ular macOS va Linuxda ishlatiladigan .NET da qo’shilmaydi.
Windows Ilovalar
Zamonaviy .NET ning xususiyatlaridan biri bu .NET Core 3.1 yoki undan keyingilarining Windows versiyasiga kiritilgan Windows Developer Pack yordamida eski Windows Forms va WPF ilovalarini ishga tushirishni qo‘llab-quvvatlashdir, shuning uchun macOs va Linux SDK laridan kattaroqdir. Agar kerak bo’lsa, eski Windows ilovangizga kichik o’zgarishlar kiritishingiz mumkin, so’ngra yangi xususiyatlar va ish faoliyatini yaxshilashdan foydalanishda uni .NET 6 uchun qayta qurishingiz mumkin.
Web Ilovalar
ASP.NET Web Forms va Windows Communication Foundation (WCF) eski veb-ilova va xizmat ko’rsatish texnologiyalari bo’lib, bugungi kunda kamdan-kam dasturchilar yangi loyihalarni ishlab chiqish uchun tanlamoqda, shu sababdan ular zamonaviy .NET dan ham olib tashlangan. Buning o’rniga ishlab chiquvchilar ASP.NET MVC, ASP.NET Web API, SignalR va gRPC dan foydalanishni afzal ko’rishadi. Ushbu texnologiyalar qayta ishlab chiqilgan va ASP.NET Core deb nomlangan zamonaviy .NET da ishlaydigan platformaga birlashtirilgan.
Ma’lumotlar Bazalari
Entity Framework (EF) 6 — bu Oracle va Microsoft SQL Server kabi relyatsion ma’lumotlar bazalarida saqlanadigan ma’lumotlar bilan ishlash uchun mo’ljallangan object-relational mapping (ORM) texnologiyasi. U yillar davomida o’ziga yuk ortib bordi, shuning uchun kross-platformali API qisqartirildi, Microsoft Azure Cosmos DB kabi non-relational(aloqador boʻlmagan) maʼlumotlar bazalari uchun qoʻllab-quvvatlandi va Entity Framework Core deb oʻzgartirildi. Agar sizda eski EF dan foydalanadigan ilovalaringiz bo’lsa, 6.3 versiyasi .NET Core 3.0 yoki undan keyingi versiyalarida qo’llab-quvvatlanadi.
.NET Standard ni Tushunish
2019-yilda .NET bilan bog‘liq vaziyat quyidagi ro‘yxatda ko‘rsatilganidek, Microsoft tomonidan boshqariladigan uchta shoxli .NET platformasi mavjud edi:
• .NET Core: Kross-platforma va yangi ilovalar uchun • .NET Framework: Eski ilovalar uchun • Xamarin: Mobil ilovalar uchun
Har birining kuchli va zaif tomonlari bor edi, chunki ularning barchasi turli ssenariylar uchun tuzilgandi. Bu dasturiy ta’minot muhandislari uchta platformani o’rganishi kerak bo’lgan muammoga olib keldi, ularning har biri zerikarli g’alatilik va cheklovlarga ega.
Shu sababli, Microsoft .NET Standard ni belgiladi va bu barcha .NET platformalari moslik darajasini ko’rsatish uchun amalga oshirishi mumkin bo’lgan API to’plamining spetsifikatsiyasi. Misol uchun, asosiy qo’llab-quvvatlash platforma .NET Standard 1.4 bilan mos kelishi bilan ko’rsatilgan.
.NET Standard 2.0 va undan keyingi versiyalari bilan Microsoft har uch platformani zamonaviy minimal standartda birlashtirdi, bu esa ishlab chiquvchilarga .NET ning har qanday istaklari o’rtasida kod almashishni ancha osonlashtirdi.
.NET Core 2.0 va undan keyingilarida bu dasturchilar .NET Framework uchun yozilgan eski kodni oʻzaro platforma .NET Corega portlashi kerak boʻlgan yetishmaydigan API larning koʻpini qoʻshishdi. Biroq, ba’zi API lar amalga oshirilgan, ammo ishlab chiquvchiga ulardan foydalanmaslik kerakligini ko’rsatish uchun istisno qiladi. Bu odatda siz .NET ishlatadigan operatsion tizimdagi farqlarga bog’liq.
Qolaversa, .NET Standard shunchaki standart ekanligini tushunish muhimdir. Frontenddan xabaringiz bo’lsa, HTML5 ni qurilmangizga o’rnatolmaganingizdek, bu yerda ham .NET Standardni o’rnatishning iloji yo’q. Chunki, u dasturiy ta’minotning bir qismi emas, shunchaki texnologiyalar to’plami xolos. HTML5 dan foydalanish uchun HTML5 standartini amalga oshiradigan veb-brauzerni o’rnatishingiz kerak.
.NET Standard dan foydalanish uchun .NET Standard spetsifikatsiyasini amalga oshiradigan .NET platformasini o’rnatishingiz kerak. Oxirgi .NET Standard, 2.1 versiyasi .NET Core 3.0, Mono va Xamarin tomonidan amalga oshiriladi. C# 8.0 ning ayrim xususiyatlari .NET Standard 2.1 ni talab qiladi. .NET Standard 2.1 .NET Framework 4.8 tomonidan amalga oshirilmagan, shuning uchun biz .NET Frameworkni eskirgan sifatida talqin qilishimiz kerak.
2021-yil noyabr oyida .NET 6 ning chiqarilishi bilan .NET Standardga ehtiyoj sezilarli darajada kamaydi, chunki endi barcha platformalar, jumladan, mobil qurilmalar uchun yagona .NET mavjud. .NET 6 da bitta BCL va ikkita CLR mavjud: CoreCLR veb-saytlar va Windows Desktop ilovalari kabi server yoki desktop stsenariylari uchun optimallashtirilgan va Mono ish vaqti cheklangan resurslarga ega mobil va veb-brauzer ilovalari uchun optimallashtirilgan.
Hozir ham .NET Framework uchun yaratilgan ilovalar va veb-saytlar qo‘llab-quvvatlanishi kerak, shuning uchun siz eski .NET platformalari bilan o’tmishda mos keladigan .NET Standard 2.0 sinf kutubxonalarini yaratishingiz mumkinligini tushunish zarurdir.
.NET Texnologiyalarini Taqqoslash
Bu yerda soddalashtirish maqsadida, Zamonaviy .NET atamasi deb .NET 6 va .NET Core’dan kelgan uning .NET 5 kabi oldingilariga murojaat qilish uchun foydalanildi. Eski .NET atamasidan .NET Framework, Mono, Xamarin va .NET Standard ga murojaat qilish uchun ishlatildi. Xulosa qilib aytganda, Zamonaviy .NET — bu eski platformalar va standartlarni birlashtirilgani.
Dasturlash
.NET bilan bog’liq mavhumliklardan qochish