хүн бүрт Сайн байна уу!
Бид Raiffeisenbank-н .NET хөгжүүлэгчдийн нийгэмлэг бөгөөд нэг экосистемтэй бичил үйлчилгээг хурдан бий болгоход зориулагдсан .NET Core дээр суурилсан дэд бүтцийн номын сангийн тухай ярихыг хүсч байна. Тэд үүнийг Нээлттэй эх сурвалж руу авчирсан!
Түүх бага
Нэгэн удаа бид том цул төсөлтэй байсан бөгөөд энэ нь аажмаар микро үйлчилгээний багц болж хувирсан (энэ үйл явцын онцлогуудын талаар та эндээс уншиж болно.
Цаг хугацаа өнгөрч, төсөл аажмаар хуваагдаж, орчин үеийн JS фреймворк дээр клиент талын шинэ модулиудыг бий болгож, тэдгээрийг хөтөч дээр ажиллуулах хүсэл бий болсон. Бид WCF/SOAP-аас REST/HTTP руу шилжиж эхэлсэн тул AspNet WebApi дээр суурилсан үйлчилгээг хурдан эхлүүлэхийн тулд бидэнд шинэ номын сан хэрэгтэй болсон. .Net Framework 4.5-ын анхны хувилбарыг манай архитектор чөлөөт цагаараа бараг өвдөг сөхрөн суулгасан боловч энэ нь Program.cs дээр зөвшөөрөл (NTLM) агуулсан гурван мөр бүхий үйлчилгээг эхлүүлэх боломжтой болсон. логгинг, Swagger, IoC/DI Castle Windsor-д суурилсан, өөрчлөн тохируулсан HTTP клиентүүд нь янз бүрийн толгойнуудыг дамжуулж, төслийн туршид төгсгөл хүртэл бүртгэл хийх боломжийг олгодог. Мөн энэ бүх зүйлийг үйлчилгээний тохиргооны файлд шууд тохируулж болно.
Гэсэн хэдий ч бүх зүйл жигд биш байсан: энэ номын сан нь шинэ модулиудыг нэвтрүүлэхэд туйлын уян хатан биш болсон. Жишээлбэл, хэрэв танд тусгай дунд программ нэмэх шаардлагатай бол та шинэ угсралт үүсгэж, уг үйлчилгээг ажиллуулдаг үндсэн ангиас өвлөн авах шаардлагатай байсан нь туйлын тохиромжгүй байсан. Аз болоход ийм тохиолдол тийм ч олон байгаагүй.
Докер ба Кубернетес нарын эрин үе
Бидний анхааралтай ажиглаж байсан Докер ба Кубернетесийн давалгаа бидэнд хүрэх цаг иржээ: Эцсийн эцэст энэ нь .Net Core-д технологийн дагуу урагшлах сайхан боломж байлаа. Энэ нь үйлчилгээ явуулахын тулд бидэнд шинэ дэд бүтэц хэрэгтэй болно гэсэн үг: зарим номын сангууд .Net Framework-ээс .Net Standard болон .Net Core руу бараг өөрчлөлтгүйгээр шилжсэн, зарим нь бага зэрэг сайжруулсан. Гэхдээ хамгийн гол нь би AspNet Core дээр үйлчилгээ эхлүүлэхтэй холбоотой функцийг дахин боловсруулахыг хүссэн.
Бидний авч үзсэн хамгийн эхний зүйл бол өмнөх хувилбарын гол сул талыг арилгах үзэл баримтлал байсан: уян хатан чанар дутмаг. Тиймээс номын сангийн системийг бүхэлд нь аль болох бие даасан, модульчлагдсан болгож, үйл ажиллагаанд шаардлагатай үйлчилгээг бүтээгчийн хувьд цуглуулахаар шийдсэн.
Гол зорилго нь мэдээллийн сан, автобус болон бусад үйлчилгээтэй хэрхэн харилцах талаар тодорхойлсон нэгдсэн арга барилыг бий болгох явдал юм. Бид интеграцийг хурдан бөгөөд өвдөлтгүй болгохыг хичээсэн бөгөөд хөгжүүлэгчид дэд бүтцээс илүү бизнесийн логик бичихэд анхаарлаа төвлөрүүлж чадсан - энэ нь аль хэдийн бэлэн болсон. Нийтлэг агуулах нь багуудын харилцан үйлчлэлийн туршлагыг сайжруулахад тусалдаг: маш төстэй дотоод дэд бүтцийг ашиглах үед өөр багийн хөгжлийн үйл явцад нэгдэх, туршлага солилцох нь илүү хялбар байдаг.
Тэгээд яагаад бидэнд Нээлттэй эх хэрэгтэй байна вэ?
Бид мэргэжлийн чадвараа харуулж, өндөр чанартай санал хүсэлтийг хүлээн авахыг хүсч байна: банкнаас гадуурх хүн өөрөө ямар нэг зүйлийг авчрах боломжтой болно. Мөн бид энэ салбарт .NET дээр микро үйлчилгээ болон DDD-тэй ажиллах туршлагыг хөгжүүлэхийг сонирхож байна, магадгүй хэн нэгэн хүрээний тодорхой хэсгийг авахыг хүсэх байх.
Үнэндээ, ViennaNET
Одоо илүү дэлгэрэнгүй харцгаая.
ViennaNET.WebApi.*
Энэхүү номын сангууд нь CompanyHostBuilder үйлчилгээний үүсгэгчийн анги агуулсан "root" ViennaNET.WebApi болон ViennaNET.WebApi.Configurators.* тохируулагчийн багцаас бүрдэх ба тэдгээр нь тус бүр нь үүсгэсэн файлд зарим функцийг нэмж, тохируулах боломжийг олгодог. үйлчилгээ. Тохируулагчдын дотроос та бүртгэл, оношлогоо, баталгаажуулалт, зөвшөөрлийн төрлүүд, swagger гэх мэт холболтуудыг олж болно.
ViennaNET.WebApi.Runners.* нь мөн урьдчилан тохируулсан үйлчилгээ бүтээгчдийг агуулдаг. Эдгээр багцууд нь тохируулагчийг холбох шаардлагатай шинэ үйлчилгээ үүсгэх болгондоо санахгүй байх боломжийг танд олгоно. Гэсэн хэдий ч тэд үйлчилгээ бүтээгчийн үйл ажиллагааг ямар ч байдлаар хязгаарладаггүй.
ViennaNET.Зуучлагч.*
Үйлчилгээний доторх тушаал, хүсэлтийн дотоод зуучлагч автобус үүсгэх боломжийг олгодог номын сангууд. Энэ арга нь DI тарилгын тоог нэг болгон бууруулах боломжийг олгодог, жишээлбэл, хянагчдад. Үүний ачаар та хүсэлтүүдэд янз бүрийн чимэглэгч нэмж оруулах боломжтой бөгөөд энэ нь тэдгээрийн боловсруулалтыг нэгтгэж, кодын хэмжээг бууруулдаг.
ViennaNET.Validation
Баталгаажуулах дүрэм, тэдгээрийн дарааллыг бий болгох ангиудыг агуулсан угсралт. Энэ нь бизнесийн нөхцөл бүрийг энгийн бөгөөд тусдаа дүрмийн хэлбэрээр тайлбарлах боломжийг олгодог тул домэйн баталгаажуулалтыг хэрэгжүүлэхэд маш тохиромжтой.
ViennaNET.Redis
Редисийг санах ойн кэш болгон ашиглахад тохиромжтой, боодолтой номын сан.
ViennaNET.Үзүүлэлтүүд
Тодорхойлолтын загварыг хэрэгжүүлдэг ангиудыг агуулсан угсралт.
Энэ бол бидний багцад байгаа бүх зүйл биш юм. Үлдсэнийг нь харж болно
Анхаарал тавьсанд баярлалаа, бид таны сэтгэгдэл, хүсэлтийг хүлээж байна.
Эх сурвалж: www.habr.com