వియన్నానెట్: బ్యాకెండ్ కోసం లైబ్రరీల సమితి

హలో అందరికీ!

మేము Raiffeisenbank వద్ద .NET డెవలపర్‌ల సంఘం మరియు మేము ఒకే పర్యావరణ వ్యవస్థతో మైక్రోసర్వీస్‌లను త్వరగా సృష్టించడం కోసం .NET కోర్ ఆధారంగా ఇన్‌ఫ్రాస్ట్రక్చర్ లైబ్రరీల గురించి మాట్లాడాలనుకుంటున్నాము. వారు దానిని ఓపెన్ సోర్స్‌కు తీసుకువచ్చారు!

వియన్నానెట్: బ్యాకెండ్ కోసం లైబ్రరీల సమితి

ఒక బిట్ చరిత్ర

ఒకప్పుడు మేము పెద్ద ఏకశిలా ప్రాజెక్ట్‌ను కలిగి ఉన్నాము, ఇది క్రమంగా మైక్రోసర్వీస్‌ల సమితిగా మారింది (మీరు ఈ ప్రక్రియ యొక్క లక్షణాల గురించి చదువుకోవచ్చు ఈ వ్యాసం) ఈ ప్రక్రియలో, కొత్త మైక్రోసర్వీస్‌లను సృష్టించేటప్పుడు, మేము తరచుగా వివిధ మౌలిక సదుపాయాల పరిష్కారాలను కాపీ చేయవలసి ఉంటుంది - లాగింగ్‌ని సెటప్ చేయడం, డేటాబేస్‌తో పని చేయడం, WCF మొదలైనవి. ఈ ప్రాజెక్ట్‌లో ఒక బృందం పనిచేసింది మరియు ప్రతి ఒక్కరూ ఇప్పటికే మౌలిక సదుపాయాలతో పనిచేయడానికి కొన్ని ఏర్పాటు చేసిన విధానానికి అలవాటు పడ్డారు. అందువల్ల, మేము సాధారణ కోడ్‌ను ప్రత్యేక రిపోజిటరీగా వేరు చేసాము, సేకరించిన లైబ్రరీలను Nuget ప్యాకేజీలలో చుట్టాము మరియు వాటిని మా అంతర్గత Nuget రిపోజిటరీలో ఉంచాము.

సమయం గడిచిపోయింది, ప్రాజెక్ట్ క్రమంగా విచ్ఛిన్నమైంది మరియు ఆధునిక JS ఫ్రేమ్‌వర్క్‌లో కొత్త క్లయింట్-సైడ్ మాడ్యూల్‌లను సృష్టించి, వాటిని బ్రౌజర్‌లో అమలు చేయాలనే కోరిక ఉంది. మేము WCF/SOAP నుండి REST/HTTPకి మారడం ప్రారంభించాము, కాబట్టి AspNet WebApi ఆధారంగా సేవలను త్వరగా ప్రారంభించేందుకు మాకు కొత్త లైబ్రరీలు అవసరం. .Net Framework 4.5లో మొదటి వెర్షన్‌ను మా ఆర్కిటెక్ట్ తన ఖాళీ సమయంలో దాదాపు మోకాళ్లపై ఉంచి తయారుచేశాడు, కానీ బాక్స్ వెలుపల Program.csలో ఆథరైజేషన్ (NTLM)ని కలిగి ఉన్న మూడు లైన్‌లతో సేవను ప్రారంభించడం సాధ్యమైంది. లాగింగ్, స్వాగర్, IoC/DI క్యాజిల్ విండ్సర్ ఆధారంగా, అనుకూలీకరించిన HTTP క్లయింట్‌లు మొత్తం ప్రాజెక్ట్‌లో ఎండ్-టు-ఎండ్ లాగింగ్‌ను అందించడానికి వివిధ హెడర్‌లను ఫార్వార్డ్ చేస్తాయి. మరియు ఈ మొత్తం విషయం సేవా కాన్ఫిగరేషన్ ఫైల్‌లో నేరుగా కాన్ఫిగర్ చేయబడుతుంది.

అయితే, ప్రతిదీ సజావుగా లేదు: ఈ లైబ్రరీ కొత్త మాడ్యూళ్లను పరిచయం చేసే విషయంలో చాలా సరళమైనదిగా మారింది. ఉదాహరణకు, మీరు కొన్ని ప్రత్యేక మిడిల్‌వేర్‌లను జోడించాల్సిన అవసరం ఉన్నట్లయితే, మీరు కొత్త అసెంబ్లీని సృష్టించాలి మరియు సేవను అమలు చేసే బేస్ క్లాస్ నుండి వారసత్వంగా పొందాలి, ఇది చాలా అసౌకర్యంగా ఉంది. అదృష్టవశాత్తూ, అలాంటి కేసులు చాలా లేవు.

డాకర్ మరియు కుబెర్నెట్స్ యుగం

డాకర్ మరియు కుబెర్నెటీస్ యొక్క తరంగం మాకు చేరుకున్న సమయం వచ్చింది, మేము నిశితంగా పరిశీలించాము: అన్నింటికంటే, .నెట్ కోర్‌లో సాంకేతికతలతో పాటు మరింత ముందుకు సాగడం ప్రారంభించడానికి ఇది ఒక గొప్ప అవకాశం. సేవలను అమలు చేయడానికి మాకు కొత్త మౌలిక సదుపాయాలు అవసరమని దీని అర్థం: కొన్ని లైబ్రరీలు .Net ఫ్రేమ్‌వర్క్ నుండి .Net Standard మరియు .Net కోర్‌కి మారాయి, ఆచరణాత్మకంగా మార్పులు లేకుండా, కొన్ని చిన్న మెరుగుదలలతో. కానీ అన్నింటికంటే ఎక్కువగా నేను AspNet కోర్‌లో సేవలను ప్రారంభించడంతో అనుబంధించబడిన కార్యాచరణను మళ్లీ పని చేయాలనుకున్నాను.

మేము పరిగణించిన మొదటి విషయం మునుపటి సంస్కరణ యొక్క ప్రధాన లోపాన్ని తొలగించే భావన: వశ్యత లేకపోవడం. అందువల్ల, మొత్తం లైబ్రరీ వ్యవస్థను సాధ్యమైనంత స్వతంత్రంగా మరియు మాడ్యులర్‌గా మార్చాలని మరియు నిర్మాణకర్తగా కార్యాచరణకు అవసరమైన సేవలను సేకరించాలని నిర్ణయించారు.

డేటాబేస్‌లు, బస్సులు మరియు ఇతర సేవలతో ఎలా పరస్పర చర్య చేయాలో వివరించే ఏకీకృత విధానాన్ని రూపొందించడం ప్రధాన లక్ష్యం. మేము ఇంటిగ్రేషన్‌లను త్వరగా మరియు నొప్పిలేకుండా చేయడానికి ప్రయత్నించాము మరియు డెవలపర్‌లు మౌలిక సదుపాయాల కంటే వ్యాపార తర్కాన్ని వ్రాయడంపై దృష్టి పెట్టవచ్చు - ఇది ఇప్పటికే సిద్ధంగా ఉంది. జట్లలో పరస్పర చర్య యొక్క అనుభవాన్ని మెరుగుపరచడానికి ఒక సాధారణ రిపోజిటరీ సహాయపడుతుంది: చాలా సారూప్య అంతర్గత మౌలిక సదుపాయాలను ఉపయోగించినప్పుడు, మరొక బృందం అభివృద్ధి ప్రక్రియలో చేరడం మరియు నైపుణ్యాన్ని మార్పిడి చేయడం సులభం.

మరియు మనకు ఓపెన్ సోర్స్ ఎందుకు అవసరం?

మేము మా నైపుణ్యం యొక్క పరిపక్వతను చూపించాలనుకుంటున్నాము మరియు అధిక-నాణ్యత ఫీడ్‌బ్యాక్‌ను అందుకోవాలనుకుంటున్నాము: బ్యాంక్ వెలుపల ఉన్న వ్యక్తి తమలో తాము ఏదైనా తీసుకురాగలుగుతారు. పరిశ్రమలో .NETలో మైక్రోసర్వీసెస్ మరియు DDDతో పని చేసే పద్ధతులను అభివృద్ధి చేయడంపై కూడా మాకు ఆసక్తి ఉంది; బహుశా ఎవరైనా ఫ్రేమ్‌వర్క్‌లోని కొన్ని భాగాలను స్వాధీనం చేసుకోవాలనుకోవచ్చు.

నిజానికి, వియన్నానెట్

ఇప్పుడు నిశితంగా పరిశీలిద్దాం. పూర్తి సోర్స్ కోడ్ ఇక్కడ పోస్ట్ చేయబడింది.

ViennaNET.WebApi.*

ఈ లైబ్రరీల సెట్‌లో "రూట్" ViennaNET.WebApi, కంపెనీహోస్ట్‌బిల్డర్ సేవ కోసం బిల్డర్ క్లాస్ మరియు ViennaNET.WebApi.Configurators సమితిని కలిగి ఉంటుంది.*, వీటిలో ప్రతి ఒక్కటి మీరు సృష్టించిన వాటికి కొంత కార్యాచరణను జోడించడానికి మరియు కాన్ఫిగర్ చేయడానికి అనుమతిస్తుంది. సేవ. కాన్ఫిగరేటర్లలో మీరు లాగింగ్, డయాగ్నస్టిక్స్, ప్రామాణీకరణ మరియు అధికార రకాలు, స్వాగర్ మొదలైన వాటి కోసం కనెక్షన్‌లను కనుగొనవచ్చు.

ViennaNET.WebApi.Runners.*లో ముందే కాన్ఫిగర్ చేయబడిన సర్వీస్ బిల్డర్‌లు కూడా ఉన్నాయి. ఈ ప్యాకేజీలు మీరు కాన్ఫిగరేటర్లను కనెక్ట్ చేయవలసిన కొత్త సేవను సృష్టించిన ప్రతిసారీ గుర్తుంచుకోకుండా మిమ్మల్ని అనుమతిస్తాయి. అయినప్పటికీ, వారు సేవా బిల్డర్ యొక్క కార్యాచరణను ఏ విధంగానూ పరిమితం చేయరు.

వియన్నాNET.మీడియేటర్.*

సేవలో ఆదేశాలు మరియు అభ్యర్థనల కోసం అంతర్గత మధ్యవర్తి బస్సును సృష్టించడానికి మిమ్మల్ని అనుమతించే లైబ్రరీలు. ఈ విధానం DI ఇంజెక్షన్ల సంఖ్యను ఒకదానికి తగ్గించడానికి మిమ్మల్ని అనుమతిస్తుంది, ఉదాహరణకు, కంట్రోలర్లలో. దీని కారణంగా, మీరు అభ్యర్థనలకు వివిధ డెకరేటర్లను జోడించవచ్చు, ఇది వారి ప్రాసెసింగ్‌ను ఏకీకృతం చేస్తుంది మరియు కోడ్ మొత్తాన్ని తగ్గిస్తుంది.

ViennaNET. ధ్రువీకరణ

వాటి నుండి ధ్రువీకరణ నియమాలు మరియు సీక్వెన్స్‌లను రూపొందించడానికి తరగతుల సమితిని కలిగి ఉన్న అసెంబ్లీ. డొమైన్ ధ్రువీకరణను అమలు చేయడానికి ఇది చాలా సౌకర్యవంతంగా ఉంటుంది, ఎందుకంటే ఇది ప్రతి వ్యాపార స్థితిని సరళమైన మరియు ప్రత్యేక నియమం రూపంలో వివరించడానికి మిమ్మల్ని అనుమతిస్తుంది.

వియన్నాNET.రెడిస్

ఇన్-మెమరీ కాష్‌గా రెడిస్‌తో సౌకర్యవంతమైన పని కోసం రేపర్‌లతో కూడిన లైబ్రరీ.

ViennaNET. స్పెసిఫికేషన్స్

స్పెసిఫికేషన్ నమూనాను అమలు చేసే తరగతులను కలిగి ఉన్న అసెంబ్లీ.

ఇది మా సెట్‌లో ఉన్నదంతా కాదు. మిగిలినవి మీరు చూడవచ్చు GitHub రిపోజిటరీలో. మేము డేటాబేస్‌లతో పని చేయడానికి మా లైబ్రరీలను త్వరలో OpenSourceకి విడుదల చేయడానికి ప్లాన్ చేస్తున్నాము.

మీ దృష్టికి ధన్యవాదాలు, మేము మీ వ్యాఖ్యలు మరియు పుల్ అభ్యర్థనల కోసం ఎదురుచూస్తున్నాము.

మూలం: www.habr.com

ఒక వ్యాఖ్యను జోడించండి