Code Monkey home page Code Monkey logo

microservice-architecture's Introduction

Assalomu aleykum mening bu loyiham imtihon uchun microservicelar bilan ishlash va o'rgangan yangiliklarimizni projectda qo'llash edi. Mega imtihon uchun qilish kerak bo'lgan projectlar 4 ta edi: 1.University, 2.School, 3.Cadastre, 4.Jamoat Transporti

Screenshot 2023-12-09 021549

Hozir ketma-ketligida bu projectlarni tanishtirishni boshlayman.

  1. University Bu projectda N-Tier Architectureda Foydalanganmiz image

University.Domain qismida bizning CustomAttributelarimiz,Dtolarimiz,entitylar,Enumalar va Custom Exceptionlar mavjud image Bu projectda ishlatilgan Entitylarni tepadagi rasmda ko'rib olishingiz mumkin shu bilan Domain qismi tugaydi. Endi esa University.DataAccess qismiga o'tamiz Bu yerda bizning DataBasega Connect qilish qismi va Migrationlarimiz,EntityTypeConfiguratsiyalar turadi va shunga o'xshash databasega oid narsalar shu yerda joylashagan bo'ladi image ApplicationDbContext clasi ichiga kirib ko'rsak siz DbContext va IApplicationDbContext interfacesida inheritance qilinganini ko'rishingiz mumkin
image shu kabi nega bunday deb aytadigan bo'lsak bizning University.Service Layerida ApplicationDbContextdan emas balki IApplicationDbContext interfacesi yordamida databazaga querylar jo'natishimizni ko'rishingiz mumkin va shu bilan DataAccess qismi ham o'z nihoyasiga yetdi, Endi sizlar University.Serviec Layerini tanishtirib o'taman bu Layerda bizning nimalarimiz joylashadi shularni aytib o'taman ->
image

Abstractions -> ichida bizning interfacelarimiz va shunga o'xshash mavhum narsalar saqlanadi IApplicationDbContext ham shu yerda joylashgan image shu ko'rinishda bo'ladi. Securtity -> papkasi ichida bizning PasswordHashlash uchun algoritmimiz joylashga. Password Hashlash uchun Hash512 Algoritmi bo'yicha Passwordlarimiz Hashlangan image Va bu yerda BackGround Service dan ham foydalanilgan Vazifasini aytib o'tadigan bo'lsam -> har 10 sekundda bizning studentlar joylashgan keshni yangilab turish uchun yozilgan UseCases qismida bizning asosiy logikalar joylashgan yani bu yerda barcha Crud lar bazaga yozish o'chirish o'qish yangilash kabi vazifalarni bajaradi bu amallarni bajarish uchun men MediatR design Patternida foydalanilganman, Har bitta Modelni Commandi,Queryi va Handleri bo'ladi Commands qimida -> bazaga yozish,o'chirish,yangilash kabi amallarning Commandi yoziladi yanada tushunarli qilib aytadigan bo'lsam Dto vazifasini o'taydi bizga shu command kirib keladi userdan va bu Comman IRequest<> interfacedan inheritance olgan bo'lishi kerak bo'ladi image image image

Shu kabi bo'ladi IRequest bu generic interface bo'lib genericiga biz type berib yuboramiz va o'sha tipda ma'lumot qaytarish kerak bo'ladi

Queries qismiga keladigan bo'lsak bu yerda bizning faqatgina Get operatsiyamiz bajariladi faatgina get -> image image image

shu kabi bo'ladi bu ham huddi commanga o'hashydi

Endi esa eng asosiy qismi Handler qismi -> bu qismida bizning bu command va querylarning realizatsiya bo'ladi haqiqiy bazaga murojatlar shu yerda bo'ladi image

Bu GetAdminByIdQueryHandler clasimiz IRequestHandler<> generic classdan inheritance olgan bo'lishi kerak bo'ladi va birinchi paramertiga command yoki query beriladi yani qaysi command yoki queryning realzatisya bo'layotganligi aytib o'tiladi ikkinchi parametriga esa qaytuvchi tipi beriladi bu interfaceni birgina Handle methodi mavjud shu qismda logikani bosaveramiz.

Menimcha sizga oz bo'lsada mediatrR ning ishlash jarayonini tushuntira oldim deb o'ylayman ha aytgancha agarda siz mediatR ni dasturingizda implement qilmoqchi bo'lsangiz quyidagi packeglarni o'rnatishingiz kerak bo'ladi image shu ikkisni va Program.cs da buning registrationdan o'tkazib qo'yish kerak bo'ladi image

Shu bilan bizning Service Layerimiz o'z nihoyasiga yetdi keyingi qism University.Api qismi bo'ladi bu Layerda Faqat Controller mavjud endi bu yerda bizning yozgan servicelarimizni yani ishlatib ko'ramiz yani MediatRni ishlatib ko'ramiz birinchi navbatda Controllerning Constructida register qilib olamiz image

Birinchi bo'lib GetById ni ishlatishni ko'rib o'tamiz

image

Get All

image

Post Async

image

shu kabi mediatR ishlaydi _mediatorga.Send() qilaveramiz bu esa bergan command yoki query bo'yicha uzi topib boradi

Yana bir ajoyib jihatlardan biri biz barcha biz FileServicedan foydalanilganmiz bunda user o'zining imagelarini yuklab uni swaggerda ko'rishi mumkin, bu service qanday ishlaydi? user uzining imagesini post qilganda unga Guid qilib uniue name yaratib beradi -> bu nom image nomi uchun va bazada shu userNing imagePath i saqlanadi rasming haqiqiy shakli esa localda joylashgan bo'ladi hozir buni ham ishlatib ko'rmiz Apilarimiz orasida GetImageNomli api ham mavjud

image

Bu Api ni hozir ishlatib ko'ramiz

image

Man ko'rib turganingizdek 3 idlink Studentning rasmini chiqarib berdi

endi siz bilan buning logikasini ko'rib chiqamiz

image

bu imagening upload qilish jarayoni

image

bu esa imageni Get qilib olish jarayoni

controllerga imageni byte[] qilib berib yuboradi Controller esa

image

shu kabi swaggerga chiqarib beradi.

Shu bilan University.Api ham o'z nihoyasiga yetdi va Projectham o'z nihoyasiga yetdi

Yana bir qo'shgan o'zgarishlardan biri School.Projectdiga hohlagan bir Modelgan siz malumot Add,Update va Delete bo'lsa Telegram.Bot ga ma'lumot yuboib turuvchi qilingan u botga ma'lumot qanday boradi

image

Cadastre Database

Screenshot 2023-12-09 020434

School Database

Screenshot 2023-12-09 020845

Transport Database

Screenshot 2023-12-09 023520

Va ApiGetaway ham yozilgan
shu ko'rinishda va Globalniy Avtorization qo'shilgan va University Platform uchun sql Serverda Triggerlar qo'llanilgan. shu bilan Documentation o'z nihoyasiga yetdi e'tiboringiz uchun raxmat.

Agar dasturni run qilmoqchi bo'lsangiz.

  1. Redisni ishga tushurish
  2. Barcha Platformdagi appsettings.jsondagi connectionStringlarni o'zgartirish kerak bo'ladi
  3. Barcha Platformdagi migrationlarni o'chirish va qaytatdan Migration qilish kerak bo'ladi -> update-database
  4. Telegram bot da o'zingizni TelegramBot Tokeningiz va o'zingizning ChatId yingizni yozishingiz kerak bo'ladi
  5. Imagelarni ishlatish uchun C:\Users\...\AppData\Roaming\ ga kirib media papkasini ochamiz va media papkasi ichida 3 ta papka avatars,files,images papkasini ochish talab etiladi agar sizda Users\ ning ichida appData papkasi yashirin bo'lib qolgan bo'lishi mumkin u holda uni skritniydan ochib qo'yishingiz kerak bo'ladi yoki Windows Terminal orqali kirib papkalarni ochishingiz mumkin.
  6. Dasturni run qilishdan oldin multipleProject qilib run qilish kerak bo'ladi barcha Apilarni run qilib olish kerak bo'ladi

microservice-architecture's People

Contributors

berdikulov-571 avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.