ViennaNET: маҷмӯи китобхонаҳо барои пуштибонӣ

Салом хама!

Мо як ҷомеаи таҳиягарони .NET дар Raiffeisenbank ҳастем ва мо мехоҳем дар бораи маҷмӯи китобхонаҳои инфрасохторӣ дар асоси .NET Core барои зуд эҷод кардани хидматҳои хурд бо як экосистема сӯҳбат кунем. Онҳо онро ба кушодаасос оварданд!

ViennaNET: маҷмӯи китобхонаҳо барои пуштибонӣ

Якчанд таърих

Замоне мо як лоиҳаи бузурги монолитӣ доштем, ки тадриҷан ба маҷмӯи микросервисҳо табдил ёфт (шумо метавонед дар бораи хусусиятҳои ин раванд дар ин мақола). Дар ин раванд, мо бо мушкилоте рӯ ба рӯ шудем, ки ҳангоми эҷоди хидматҳои нав, ба мо лозим меомад, ки аксар вақт ҳалли инфрасохтори гуногунро нусхабардорӣ кунем - ба монанди насб кардани сабт, кор бо пойгоҳи додаҳо, WCF ва ғайра. Як даста дар ин лоиҳа кор мекард ва ҳама аллакай ба ягон муносибати муқарраршуда барои кор бо инфрасохтор одат карда буданд. Аз ин рӯ, мо рамзи умумиро ба як анбори алоҳида ҷудо кардем, китобхонаҳои ҷамъшударо дар бастаҳои Nuget печондем ва онҳоро дар анбори дохилии Nuget ҷойгир кардем.

Вақт гузашт, лоиҳа тадриҷан пароканда шуд ва хоҳиш пайдо шуд, ки модулҳои нави муштарӣ дар чаҳорчӯбаи муосири JS эҷод карда, онҳоро дар браузер иҷро кунед. Мо гузаштан аз WCF/SOAP ба REST/HTTP оғоз кардем, аз ин рӯ ба мо китобхонаҳои нав лозим буд, то хадамотро дар асоси AspNet WebApi зуд оғоз кунем. Варианти аввал дар .Net Framework 4.5 аз ҷониби меъмори мо дар вақти холӣ қариб дар зонуяш сохта шудааст, аммо аз қуттӣ он имкон дод, ки хидмат бо се сатр дар Program.cs, ки дорои иҷозатнома (NTLM) буд, оғоз карда шавад. logging, Swagger, IoC/DI дар асоси Castle Windsor, мизоҷони фармоишии HTTP, ки сарлавҳаҳои гуногунро барои таъмин кардани сабти ба охир дар тамоми лоиҳа интиқол медиҳанд. Ва ин ҳама чиз метавонад минбаъд бевосита дар файли конфигуратсияи хидматрасонӣ танзим карда шавад.

Бо вуҷуди ин, на ҳама чиз ҳамвор буд: ин китобхона аз ҷиҳати ҷорӣ намудани модулҳои нав хеле ноустувор буд. Масалан, агар ба шумо лозим буд, ки ягон миёнаравии махсусро илова кунед, шумо бояд маҷлиси нав эҷод кунед ва аз синфи асосие, ки хидматро иҷро мекунад, мерос гиред, ки ин хеле нороҳат буд. Хушбахтона, ин гуна ҳолатҳо чандон зиёд набуданд.

Давраи Докер ва Кубернетес

Замоне фаро расид, ки мавҷи Докер ва Кубернетес ба мо расид, ки мо онро бодиққат мушоҳида кардем: дар ниҳоят, ин як имконияти хубе буд, ки минбаъд дар технологияҳои .Net Core ҳаракат кунад. Ин маънои онро дорад, ки мо ба инфрасохтори нав ниёз дорем, то хидматҳоро иҷро кунем: баъзе китобхонаҳо аз .Net Framework ба .Net Standard ва .Net Core амалан бидуни тағирот, баъзеҳо бо такмилдиҳии ночиз гузаштанд. Аммо пеш аз ҳама ман мехостам, ки функсияи марбут ба оғози хидматҳо дар AspNet Core аз нав кор кунам.

Аввалин чизе, ки мо баррасӣ кардем, консепсияе буд, ки камбудии асосии версияи қаблиро бартараф мекунад: набудани чандирӣ. Аз ин рӯ, тасмим гирифта шуд, ки тамоми системаи китобхона то ҳадди имкон мустақил ва модулӣ гардонад ва хидматҳоеро, ки барои фаъолият ҳамчун созанда заруранд, ҷамъоварӣ кунанд.

Ҳадафи асосӣ эҷоди равиши ягонаест, ки чӣ гуна муносибат карданро бо пойгоҳи додаҳо, автобусҳо ва хидматҳои дигар тавсиф мекунад. Мо кӯшиш кардем, ки ҳамгироиро зуд ва бедард созем ва таҳиягарон метавонистанд ба навиштани мантиқи тиҷорӣ тамаркуз кунанд, на инфрасохтор - он аллакай омода аст. Анбори умумӣ барои беҳтар кардани таҷрибаи ҳамкории байни дастаҳо кӯмак мекунад: вақте ки инфрасохтори дохилӣ хеле шабеҳ истифода мешавад, ҳамроҳ шудан ба раванди рушди дастаи дигар ва табодули таҷриба осонтар мешавад.

Ва чаро мо ба манбаи кушода ниёз дорем?

Мо мехоҳем камолоти таҷрибаамонро нишон диҳем ва фикру мулоҳизаҳои баландсифат гирем: шахсе, ки берун аз бонк аст, метавонад чизе аз худ биёрад. Мо инчунин ба рушди таҷрибаҳо оид ба кор бо хидматрасонии микросервисҳо ва DDD дар .NET дар саноат манфиатдорем; шояд касе мехоҳад қисматҳои муайяни чаҳорчӯбаро ба ӯҳда гирад.

Дар асл, ViennaNET

Акнун биёед муфассалтар назар кунем. Рамзи пурраи сарчашма дар ин ҷо ҷойгир карда шудааст.

ViennaNET.WebApi.*

Ин маҷмӯи китобхонаҳо аз "реша" ViennaNET.WebApi иборат аст, ки дорои синфи созанда барои хидмати CompanyHostBuilder ва маҷмӯи конфигураторҳои ViennaNET.WebApi.Configurators.* мебошад, ки ҳар яки онҳо ба шумо имкон медиҳанд, ки баъзе функсияҳоро ба китобхонаи сохташуда илова ва танзим кунед. хизматрасонй. Дар байни конфигураторҳо шумо метавонед пайвастҳоро барои сабти ном, ташхис, аутентификатсия ва намудҳои авторизатсия, swagger ва ғайра пайдо кунед.

ViennaNET.WebApi.Runners.* инчунин бинокорони хидматрасонии пешакӣ танзимшударо дар бар мегирад. Ин бастаҳо ба шумо имкон медиҳанд, ки ҳар дафъае, ки шумо хидмати наверо эҷод мекунед, ки конфигураторҳо бояд пайваст шаванд, ба ёд оред. Бо вуҷуди ин, онҳо ба ҳеҷ ваҷҳ фаъолияти созандаи хидматрасониро маҳдуд намекунанд.

ViennaNET.Mediator.*

Китобхонаҳое, ки ба шумо имкон медиҳанд, ки автобуси дохилии миёнаравро барои фармонҳо ва дархостҳо дар дохили хидмат эҷод кунед. Ин равиш ба шумо имкон медиҳад, ки шумораи тазриқҳои DI-ро то як, масалан, дар контроллерҳо кам кунед. Ба туфайли ин, шумо метавонед ороишгарони гуногунро ба дархостҳо илова кунед, ки коркарди онҳоро муттаҳид мекунад ва миқдори кодро кам мекунад.

ViennaNET.Validation

Маҷмааи дорои маҷмӯи синфҳо барои эҷоди қоидаҳо ва пайдарпайии тасдиқи онҳо. Он барои татбиқи тасдиқи домен хеле қулай аст, зеро он ба шумо имкон медиҳад, ки ҳар як ҳолати тиҷоратро дар шакли як қоидаи оддӣ ва алоҳида тавсиф кунед.

ViennaNET.Redis

Китобхона бо парпечҳо барои кори қулай бо Redis ҳамчун кэши дохили хотира.

Мушаххасоти ViennaNET

Маҷмааи дорои синфҳое, ки намунаи мушаххасотро амалӣ мекунанд.

Ин ҳама чизест, ки дар маҷмӯи мо нест. Шумо метавонед боқимондаро бубинед дар анбори GitHub. Мо ният дорем, ки ба наздикӣ китобхонаҳои худро барои кор бо пойгоҳи додаҳо ба OpenSource озод кунем.

Ташаккур барои таваҷҷуҳ, мо интизори шарҳҳо ва дархостҳои шумост.

Манбаъ: will.com

Илова Эзоҳ