JavaRush /Java blogi /Random-UZ /2-qism. Keling, dasturiy ta'minot arxitekturasi haqida bi...

2-qism. Keling, dasturiy ta'minot arxitekturasi haqida bir oz gapiraylik

Guruhda nashr etilgan
Ushbu material " Korxonani rivojlantirishga kirish " turkumining bir qismidir . Tarmoq haqidagi birinchi qism bu yerda . 2-qism. Dasturiy ta'minot arxitekturasi haqida bir oz gapiraylik - 1Dasturiy ta'minot arxitekturasi - bu tuzilma bo'lib, uning asosida dastur yaratiladi va butun dasturning modullari va komponentlari o'zaro ta'sir qiladi. Dasturchilar juda uzoq vaqt davomida yaxshi arxitektura yaratishga harakat qilishgan, shuning uchun biz hozirda ko'plab me'moriy naqshlarni bilganimiz ajablanarli emas. Siz ularni tushunishingiz kerak: veb-ilovani yozishda arxitektura muammosi keskinlashadi, chunki unda oddiy dasturga qaraganda ko'proq komponentlar va modullar mavjud. Arxitektura namunasi dasturiy ta'minotni loyihalashda ba'zi muammolarni hal qilishning allaqachon o'ylangan usulidir. Ehtimol, siz allaqachon zavod usuli, abstrakt zavod, quruvchi, prototip, Singleton va ehtimol boshqalar kabi dizayn naqshlariga duch kelgansiz. Ular oddiygina kod yozish, sinflar yaratish va ularning o'zaro ta'sirini rejalashtirish uchun ishlatiladi. Arxitektura naqshlari abstraktsiyaning yuqori darajasida - dastur foydalanuvchisining server, ma'lumotlar va loyihaning boshqa komponentlari bilan o'zaro ta'sirini rejalashtirishda qo'llaniladi. Keling, ba'zi shablonlarni va ulardan qanday foydalanishni qisqacha ko'rib chiqaylik.

Mijoz-server arxitekturasi

Nomidan odam bu mavzudagi hamma narsa sodda va tushunarli degan taassurot paydo bo'ladi. Ammo shartli Bahorni o'rganishni boshlaganingizda, biz nima haqida gapirayotganimizni aniq tushunishingiz uchun ba'zi fikrlarga aniqlik kiritaylik. Aytaylik, siz chat yozdingiz va siz va do'stingiz undan foydalanishni boshlaysiz. Bu erda oddiy variant mavjud - siz o'zingiz bilgan IP-manzillardan foydalangan holda to'g'ridan-to'g'ri Internet orqali bir-biringizga xabar yuborasiz: 2-qism. Dasturiy ta'minot arxitekturasi haqida bir oz gapiraylik - 2Avvaliga hamma narsa yaxshi ishlayotgandek tuyulishi mumkin, toki sizning boshqa do'stingiz: "Nega bunday qilmayapsiz?" Siz meni chatingizga qo'shmaysizmi? Va suhbatga umumiy do'st qo'shishga qaror qilganingizda, siz arxitektura muammosiga duch kelasiz: har bir chat foydalanuvchisi foydalanuvchilar soni haqidagi ma'lumotlarni yangilashi, yangi foydalanuvchining IP-manzilini qo'shishi kerak. Va xabar yuborayotganda, u barcha ishtirokchilarga etkazilishi kerak. Bu paydo bo'ladigan eng aniq muammolar. Kodning o'zida yana ko'p muammolar yashirin bo'ladi. Ularning oldini olish uchun siz foydalanuvchilar haqidagi barcha ma'lumotlarni saqlaydigan va ularning manzillarini biladigan serverdan foydalanishingiz kerak . Xabar faqat serverga yuborilishi kerak bo'ladi. Va u, o'z navbatida, barcha qabul qiluvchilarga xabar yuboradi. Suhbatingizga server tomonini qo'shishga qaror qilganingizda, siz mijoz-server arxitekturasini qurishni boshlaysiz.

Mijoz-server arxitekturasining komponentlari

Keling, uning nima ekanligini bilib olaylik. Mijoz-server arxitekturasi dizayn namunasi, veb-ilovalarni yaratish uchun asosdir. Ushbu arxitektura uchta komponentdan iborat: 2-qism. Dasturiy ta'minot arxitekturasi haqida bir oz gapiraylik - 3
  1. Mijoz - nomidan ma'lum bo'ladiki, bu ba'zi ma'lumotlarni olish uchun serverga murojaat qiladigan xizmat (veb-ilova) foydalanuvchisi.

  2. Server - bu sizning veb-ilovangiz yoki uning server qismi joylashgan joy. U foydalanuvchilar haqida kerakli ma'lumotlarga egalik qiladi yoki uni so'rashi mumkin. Bundan tashqari, mijoz aloqa qilganda, server so'ralgan ma'lumotni qaytaradi.

  3. Tarmoq oddiy: u mijoz va server o'rtasida axborot almashinuvini ta'minlaydi.

Server turli foydalanuvchilarning ko'p sonli so'rovlarini qayta ishlashga qodir. Ya'ni, mijozlar ko'p bo'lishi mumkin va agar ular bir-biri bilan ma'lumot almashishi kerak bo'lsa, bu server orqali amalga oshirilishi kerak. Shunday qilib, server yana bir qo'shimcha funktsiyani oladi - trafikni boshqarish. Agar biz yaratgan ko'p foydalanuvchili chat haqida gapiradigan bo'lsak, butun dastur kodi ikkita moduldan iborat bo'ladi:
  • mijoz - avtorizatsiya qilish, xabarlarni jo'natish/qabul qilish uchun grafik interfeysni o'z ichiga oladi;

  • server tomoni - serverda joylashgan va foydalanuvchilardan xabarlarni qabul qiladigan, ularni qayta ishlaydigan va keyin ularni qabul qiluvchilarga yuboradigan veb-ilova.

2-qism. Dasturiy ta'minot arxitekturasi haqida bir oz gapiraylik - 4Internetda foydali (yoki unchalik foydali bo'lmagan) ma'lumotlarni ko'rib chiqmoqchi bo'lganimizda, biz brauzerni ochamiz, qidiruv satriga so'rov kiritamiz va javob sifatida biz qidiruv tizimidan ma'lumot olamiz. Ushbu zanjirda brauzer bizning mijozimizdir. U biz qidirayotganimiz haqidagi ma'lumot bilan serverga so'rov yuboradi. Server so'rovni qayta ishlaydi, eng mos natijalarni topadi, ularni brauzer (mijoz) uchun tushunarli formatda paketlaydi va ularni qaytarib yuboradi. Qidiruv tizimlari kabi murakkab xizmatlarda ko'plab serverlar bo'lishi mumkin. Masalan, avtorizatsiya serveri, ma'lumot qidirish serveri, javobni yaratish serveri. Ammo mijoz bu haqda hech narsa bilmaydi: uning uchun server birlashtirilgan narsadir. Mijoz faqat kirish nuqtasi, ya'ni so'rov yuborishi kerak bo'lgan server manzili haqida biladi. Oldingi qismda ko'rib chiqqan dasturni eslaylik - real vaqt rejimida barcha mamlakatlardagi o'rtacha havo haroratini kuzatish uchun. Uning arxitekturasi quyidagicha ko'rinadi: 2-qism. Dasturiy ta'minot arxitekturasi haqida bir oz gapiraylik - 5Bizning ilovamiz serverda joylashgan. Aytaylik, u har besh soniyada mahalliy gidrometeorologiya markazlari serverlariga so‘rovlar yuboradi, ulardan ma’lum bir mamlakatdagi havo harorati haqida ma’lumot oladi va bu ma’lumotlarni saqlaydi. Mijoz bizga “dunyodagi joriy havo haroratini koʻrish” soʻrovi bilan murojaat qilganda, biz eng soʻnggi saqlangan maʼlumotlarni mamlakat boʻyicha saralab beramiz. Shunday qilib, bizning ilovamiz ham server (foydalanuvchi so'rovlarini qayta ishlaganda) va mijoz (boshqa serverlardan ma'lumot olganida) hisoblanadi.
Muhim: server tushunchasi ma'lum bir kompyuter haqida emas, balki tarmoq abonentlari o'rtasidagi munosabatlar haqida .
Oddiy mijoz-server arxitekturasi juda kamdan-kam hollarda va faqat juda oddiy ilovalar uchun ishlatiladi. Haqiqatan ham katta va murakkab loyihalar uchun har xil turdagi arxitekturalar qo'llaniladi, ular bilan kelajakda ko'proq tanish bo'lasiz. Hozircha mijoz-server modeliga juda o'xshash modelni ko'rib chiqamiz.

Uch bosqichli arxitektura

Bu uchinchi o'yinchini taqdim etadigan me'moriy naqsh: ma'lumotlar ombori . Ushbu naqshdan foydalanganda uchta daraja odatda qatlamlar deb ataladi: 2-qism. Dasturiy ta'minot arxitekturasi haqida bir oz gapiraylik - 6
  1. Mijoz qatlami foydalanuvchi interfeysi hisoblanadi. Bu HTML sahifalari yuboriladigan veb-brauzer yoki JavaFX yordamida yozilgan GUI ilovasi bo'lishi mumkin. Asosiysi, uning yordami bilan foydalanuvchi serverga so'rovlar yuborishi va uning javoblarini qayta ishlashi mumkin.

  2. Mantiqiy qatlam so'rovlar/javoblar qayta ishlanadigan serverdir. U ko'pincha server qatlami deb ham ataladi. Bu erda barcha mantiqiy operatsiyalar ham amalga oshiriladi: matematik hisoblar, ma'lumotlar operatsiyalari, boshqa xizmatlarga qo'ng'iroqlar yoki ma'lumotlarni saqlash.

  3. Ma'lumotlar qatlami ma'lumotlar bazasi serveridir: bizning serverimiz unga kiradi. Ushbu qatlam dastur ish paytida foydalanadigan barcha kerakli ma'lumotlarni saqlaydi.

Shunday qilib, bizning serverimiz foydalanuvchiga to'g'ridan-to'g'ri kirishga ruxsat bermasdan, ma'lumotlarga kirish bo'yicha barcha majburiyatlarni o'z zimmasiga oladi.

Uch bosqichli arxitekturaning afzalliklari

Bunday arxitekturadan foydalanib, biz ko'plab afzalliklarga ega bo'lamiz, jumladan:
  1. SQL in'ektsiyasidan himoyani yaratish qobiliyati SQL kodi uzatiladigan serverga hujumdir va bu kod bajarilganda tajovuzkor bizning ma'lumotlar bazasiga ta'sir qilishi mumkin.

  2. Biz foydalanuvchilarning kirishini tartibga solmoqchi bo'lgan ma'lumotlarni chegaralash.

  3. Mijozga yuborishdan oldin ma'lumotlarni o'zgartirish imkoniyati.

  4. Scalability - dasturimizni bir xil ma'lumotlar bazasidan foydalanadigan bir nechta serverlarga kengaytirish qobiliyati.

  5. Foydalanuvchining ulanish sifati uchun kamroq talablar. Serverda javob yaratishda biz ko'pincha ma'lumotlar bazasidan juda ko'p turli xil ma'lumotlarni olamiz, uni formatlaymiz, faqat foydalanuvchiga kerak bo'lgan narsani qoldiramiz. Shunday qilib, biz mijozga javob sifatida yuboradigan ma'lumotlar miqdorini kamaytiramiz.

Arxitektura naqshlaridan qanchalik tez-tez foydalanish kerak?

Agar siz, aytaylik, zavod usuli dizayn namunasi bilan tanish bo'lsangiz , uni qachon ishlatishni o'ylab ko'rgandirsiz. Ba'zan nima qilish kerakligini hal qilish qiyin: yangi operator yordamida yoki zavod usuli yordamida ob'ekt yaratish. Ammo vaqt o'tishi bilan tushunish keladi. Arxitektura naqshlari bilan narsalar biroz boshqacha. Korxona ramkalari dasturchi ulardan ba'zi bir umumiy qabul qilingan naqsh asosida loyiha yaratishda foydalanishi uchun mo'ljallangan. Shuning uchun, Spring Framework-ni o'rganishdan oldin, mijoz-server arxitekturasi, uch bosqichli arxitektura va MVC arxitekturasi nima ekanligini aniq tushunishingiz kerak. Xavotir olmang: MVC arxitekturasi haqida keyinroq gaplashamiz. 1-qism. Spring va JavaEE-ni o'rganishdan oldin nimalarni bilishingiz kerak 3-qism. HTTP/HTTPS protokollari 4-qism. Maven asoslari 5-qism. Servletlar. Oddiy veb-ilovani yozish 6-qism. Servlet konteynerlari 7-qism. MVC (Model-View-Controller) naqshini tanishtirish 8-qism. Kichkina bahor-boot ilovasini yozish
Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION