Привет!
Біз Raiffeisenbank-тегі .NET әзірлеушілерінің қауымдастығымыз және бір экожүйемен микросервистерді жылдам жасау үшін .NET Core негізіндегі инфрақұрылымдық кітапханалар жиынтығы туралы айтқымыз келеді. Олар оны Open Source-қа әкелді!
Біраз тарих
Бір кездері бізде үлкен монолитті жоба болды, ол бірте-бірте микросервистердің жиынтығына айналды (бұл процестің ерекшеліктері туралы сіз мына жерден оқи аласыз.
Уақыт өтті, жоба бірте-бірте бөлшектенді және қазіргі заманғы JS жүйесінде жаңа клиенттік модульдерді жасау және оларды браузерде іске қосу ниеті пайда болды. Біз WCF/SOAP-тан REST/HTTP-ге көшуді бастадық, сондықтан AspNet WebApi негізіндегі қызметтерді жылдам іске қосу үшін жаңа кітапханалар қажет болды. .Net Framework 4.5-тің бірінші нұсқасын біздің сәулетшіміз бос уақытында тізе бүгіп тұра жаздады, бірақ ол Program.cs ішінде авторизациясы (NTLM) бар үш жолдан тұратын қызметті іске қосуға мүмкіндік берді, журнал жүргізу, Swagger, IoC/DI Castle Windsor негізіндегі, бүкіл жоба бойынша аяғына дейін тіркеуді қамтамасыз ету үшін әртүрлі тақырыптарды жіберетін теңшелген HTTP клиенттері. Және бұл барлық нәрсені одан әрі тікелей қызмет конфигурация файлында конфигурациялауға болады.
Дегенмен, бәрі тегіс болған жоқ: бұл кітапхана жаңа модульдерді енгізу тұрғысынан өте икемсіз болып шықты. Мысалы, егер сізге арнайы аралық бағдарламалық құралды қосу қажет болса, сізге жаңа жинақ жасау және қызметті іске қосатын негізгі сыныптан мұра алу қажет болды, бұл өте қолайсыз болды. Бақытымызға орай, мұндай жағдайлар көп болған жоқ.
Докер мен Кубернетес дәуірі
Docker және Kubernetes толқыны бізге жеткен уақыт келді, біз оны мұқият қадағаладық: бұл .Net Core-де технологиялар бойынша әрі қарай жылжу үшін тамаша мүмкіндік болды. Бұл қызметтерді іске қосу үшін бізге жаңа инфрақұрылым қажет дегенді білдіреді: кейбір кітапханалар .Net Framework жүйесінен .Net Standard және .Net Core жүйесіне іс жүзінде еш өзгеріссіз көшті, ал кейбіреулері шамалы жақсартулармен көшті. Бірақ бәрінен бұрын мен AspNet Core жүйесінде қызметтерді іске қосумен байланысты функционалдылықты қайта өңдегім келді.
Біз қарастырған бірінші нәрсе - алдыңғы нұсқаның негізгі кемшілігін жоюға болатын тұжырымдама: икемділіктің болмауы. Сондықтан бүкіл кітапхана жүйесін мүмкіндігінше тәуелсіз және модульдік ету және конструктор ретінде функционалдылыққа қажетті қызметтерді жинау туралы шешім қабылданды.
Негізгі мақсат – мәліметтер базасымен, автобустармен және басқа қызметтермен өзара әрекеттесу жолын сипаттайтын бірыңғай тәсілді құру. Біз интеграцияны жылдам және ауыртпалықсыз жасауға тырыстық, ал әзірлеушілер инфрақұрылымға емес, бизнес логикасын жазуға назар аудара алады - ол қазірдің өзінде дайын. Жалпы репозиторий командалардағы өзара әрекеттесу тәжірибесін жақсартуға көмектеседі: өте ұқсас ішкі инфрақұрылымдар пайдаланылғанда, басқа топтың даму процесіне қосылу және тәжірибе алмасу оңайырақ.
Ашық бастапқы код бізге не үшін қажет?
Біз өз тәжірибеміздің жетілгендігін көрсеткіміз келеді және жоғары сапалы кері байланыс алғымыз келеді: банктен тыс адам өзінен бір нәрсе әкеле алады. Біз сондай-ақ өнеркәсіпте .NET жүйесінде микросервистермен және DDD-мен жұмыс істеу тәжірибесін дамытуға мүдделіміз, мүмкін біреу рамканың белгілі бір бөліктерін иемденгісі келетін шығар.
Шын мәнінде, ViennaNET
Енді толығырақ қарастырайық.
ViennaNET.WebApi.*
Бұл кітапханалар жинағы CompanyHostBuilder қызметіне арналған құрастырушы сыныбын қамтитын ViennaNET.WebApi «түбірінен» және ViennaNET.WebApi.Configurators.* конфигураторларының жиынтығынан тұрады, олардың әрқайсысы жасалғанға кейбір функцияларды қосуға және конфигурациялауға мүмкіндік береді. қызмет көрсету. Конфигураторлар арасында журналға, диагностикаға, аутентификация және авторизация түрлеріне, свеггерге және т.б. үшін қосылымдарды таба аласыз.
ViennaNET.WebApi.Runners.* сонымен қатар алдын ала конфигурацияланған сервис құрастырушыларын қамтиды. Бұл пакеттер конфигураторлар қосылуы қажет жаңа қызметті жасаған сайын есте сақтамауға мүмкіндік береді. Дегенмен, олар сервис құрастырушысының функционалдығын ешбір жолмен шектемейді.
ViennaNET.Mediator.*
Қызмет ішіндегі пәрмендер мен сұраулар үшін ішкі делдал шинасын жасауға мүмкіндік беретін кітапханалар. Бұл тәсіл DI инъекцияларының санын біреуге дейін азайтуға мүмкіндік береді, мысалы, контроллерлерде. Осының арқасында сұрауларға әртүрлі декораторларды қосуға болады, бұл оларды өңдеуді біріктіреді және код көлемін азайтады.
ViennaNET.Validation
Валидация ережелері мен олардан реттіліктерді жасауға арналған сыныптар жиынын қамтитын жинақ. Ол доменді тексеруді жүзеге асыру үшін өте ыңғайлы, өйткені ол әрбір бизнес жағдайын қарапайым және бөлек ереже түрінде сипаттауға мүмкіндік береді.
ViennaNET.Redis
Жадтағы кэш ретінде Redis-пен ыңғайлы жұмыс істеуге арналған орауыштары бар кітапхана.
ViennaNET. Техникалық сипаттамалар
Спецификация үлгісін орындайтын сыныптарды қамтитын жинақ.
Бұл біздің жинақтағы барлық нәрсе емес. Қалғанын көре аласыз
Назарларыңызға рахмет, пікірлеріңіз бен сұрауларыңызды күтеміз.
Ақпарат көзі: www.habr.com