வியன்னாநெட்: பின்தளத்திற்கான நூலகங்களின் தொகுப்பு

அனைவருக்கும் வணக்கம்!

நாங்கள் Raiffeisenbank இல் உள்ள .NET டெவலப்பர்களின் சமூகமாக இருக்கிறோம் மேலும் .NET கோர் அடிப்படையிலான உள்கட்டமைப்பு நூலகங்களின் தொகுப்பைப் பற்றி பேச விரும்புகிறோம். அவர்கள் அதை திறந்த மூலத்திற்கு கொண்டு வந்தார்கள்!

வியன்னாநெட்: பின்தளத்திற்கான நூலகங்களின் தொகுப்பு

வரலாற்றின் ஒரு பிட்

ஒரு காலத்தில் எங்களிடம் ஒரு பெரிய மோனோலிதிக் திட்டம் இருந்தது, இது படிப்படியாக மைக்ரோ சர்வீஸ்களின் தொகுப்பாக மாறியது (இந்த செயல்முறையின் அம்சங்களைப் பற்றி நீங்கள் படிக்கலாம் இந்த கட்டுரையில்) செயல்பாட்டில், புதிய மைக்ரோ சர்வீஸ்களை உருவாக்கும் போது, ​​பல்வேறு உள்கட்டமைப்பு தீர்வுகளை நாங்கள் அடிக்கடி நகலெடுக்க வேண்டிய சிக்கலை எதிர்கொண்டோம் - பதிவு செய்தல், தரவுத்தளத்துடன் பணிபுரிதல், WCF போன்றவை. இந்த திட்டத்தில் ஒரு குழு வேலை செய்தது, மேலும் உள்கட்டமைப்புடன் பணிபுரியும் சில நிறுவப்பட்ட அணுகுமுறைக்கு அனைவரும் ஏற்கனவே பழக்கமாகிவிட்டனர். எனவே, நாங்கள் பொதுவான குறியீட்டை ஒரு தனி களஞ்சியமாக பிரித்து, சேகரிக்கப்பட்ட நூலகங்களை நுகெட் தொகுப்புகளில் போர்த்தி அவற்றை எங்கள் உள் நுகெட் களஞ்சியத்தில் வைத்தோம்.

நேரம் கடந்துவிட்டது, திட்டம் படிப்படியாக துண்டு துண்டானது, மேலும் நவீன JS கட்டமைப்பில் புதிய கிளையன்ட் பக்க தொகுதிகளை உருவாக்கி அவற்றை உலாவியில் இயக்க விருப்பம் இருந்தது. நாங்கள் WCF/SOAP இலிருந்து REST/HTTP க்கு மாறத் தொடங்கினோம், எனவே AspNet WebApi அடிப்படையிலான சேவைகளை விரைவாகத் தொடங்க புதிய நூலகங்கள் தேவைப்பட்டன. .Net Framework 4.5 இன் முதல் பதிப்பு, எங்கள் கட்டிடக் கலைஞர் தனது ஓய்வு நேரத்தில் கிட்டத்தட்ட முழங்காலில் உருவாக்கப்பட்டது, ஆனால் பெட்டியின் வெளியே, Program.cs இல் அங்கீகாரம் (NTLM) உள்ள மூன்று வரிகளுடன் ஒரு சேவையைத் தொடங்க முடிந்தது. லாக்கிங், ஸ்வாக்கர், IoC/DI, Castle Windsor அடிப்படையிலானது, தனிப்பயனாக்கப்பட்ட HTTP கிளையண்டுகள் முழுத் திட்டம் முழுவதும் எண்ட்-டு-எண்ட் லாக்கிங்கை வழங்க பல்வேறு தலைப்புகளை அனுப்புகின்றன. இந்த முழு விஷயத்தையும் நேரடியாக சேவை உள்ளமைவு கோப்பில் கட்டமைக்க முடியும்.

இருப்பினும், எல்லாம் சீராக இல்லை: புதிய தொகுதிகளை அறிமுகப்படுத்துவதில் இந்த நூலகம் மிகவும் நெகிழ்வானதாக மாறியது. எடுத்துக்காட்டாக, நீங்கள் சில சிறப்பு மிடில்வேர்களைச் சேர்க்க வேண்டும் என்றால், நீங்கள் ஒரு புதிய அசெம்பிளியை உருவாக்கி, சேவையை இயக்கும் அடிப்படை வகுப்பிலிருந்து பெற வேண்டும், இது மிகவும் சிரமமாக இருந்தது. அதிர்ஷ்டவசமாக, இதுபோன்ற பல வழக்குகள் இல்லை.

டோக்கர் மற்றும் குபெர்னெட்டஸின் சகாப்தம்

டோக்கர் மற்றும் குபெர்னெட்ஸின் அலை எங்களை அடைந்த நேரம் வந்துவிட்டது, அதை நாங்கள் உன்னிப்பாகக் கவனித்தோம்: எல்லாவற்றிற்கும் மேலாக, .நெட் கோர் தொழில்நுட்பங்களில் மேலும் முன்னேற இது ஒரு சிறந்த வாய்ப்பு. இதன் பொருள், சேவைகளை இயக்குவதற்கு நமக்கு ஒரு புதிய உள்கட்டமைப்பு தேவைப்படும்: சில நூலகங்கள் .Net Framework இலிருந்து .Net Standard மற்றும் .Net Core க்கு மாறியுள்ளன, நடைமுறையில் மாற்றங்கள் இல்லாமல், சில சிறிய மேம்பாடுகளுடன். ஆனால் எல்லாவற்றிற்கும் மேலாக நான் AspNet Core இல் சேவைகளை தொடங்குவது தொடர்பான செயல்பாட்டை மறுவேலை செய்ய விரும்பினேன்.

முந்தைய பதிப்பின் முக்கிய குறைபாட்டை நீக்கும் ஒரு கருத்தாக்கத்தை நாங்கள் கருத்தில் கொண்ட முதல் விஷயம்: நெகிழ்வுத்தன்மை இல்லாமை. எனவே, முழு நூலக அமைப்பையும் முடிந்தவரை சுயாதீனமாகவும் மட்டுப்படுத்தவும் மற்றும் கட்டமைப்பாளராக செயல்படுவதற்கு தேவையான சேவைகளை சேகரிக்க முடிவு செய்யப்பட்டது.

தரவுத்தளங்கள், பேருந்துகள் மற்றும் பிற சேவைகளுடன் எவ்வாறு தொடர்புகொள்வது என்பதை விவரிக்கும் ஒரு ஒருங்கிணைந்த அணுகுமுறையை உருவாக்குவதே முக்கிய குறிக்கோள். ஒருங்கிணைப்புகளை விரைவாகவும் வலியற்றதாகவும் மாற்ற முயற்சித்தோம், மேலும் டெவலப்பர்கள் உள்கட்டமைப்பைக் காட்டிலும் வணிக தர்க்கத்தை எழுதுவதில் கவனம் செலுத்தலாம் - இது ஏற்கனவே தயாராக உள்ளது. ஒரு பொதுவான களஞ்சியம் அணிகளுக்குள் தொடர்புகொள்வதற்கான அனுபவத்தை மேம்படுத்த உதவுகிறது: மிகவும் ஒத்த உள்கட்டமைப்புகள் பயன்படுத்தப்படும்போது, ​​மற்றொரு குழுவின் வளர்ச்சி செயல்முறையில் சேர்ந்து நிபுணத்துவத்தை பரிமாறிக் கொள்வது எளிது.

நமக்கு ஏன் ஓப்பன் சோர்ஸ் தேவை?

எங்கள் நிபுணத்துவத்தின் முதிர்ச்சியைக் காட்டவும், உயர்தரக் கருத்தைப் பெறவும் விரும்புகிறோம்: வங்கிக்கு வெளியே உள்ள ஒருவர் தங்களுக்குள் ஏதாவது ஒன்றைக் கொண்டு வர முடியும். தொழில்துறையில் .NET இல் மைக்ரோ சர்வீஸ் மற்றும் DDD உடன் பணிபுரிவதற்கான நடைமுறைகளை மேம்படுத்துவதில் நாங்கள் ஆர்வமாக உள்ளோம்; ஒருவேளை யாரேனும் கட்டமைப்பின் சில பகுதிகளை எடுத்துக்கொள்ள விரும்பலாம்.

உண்மையில், வியன்னாநெட்

இப்போது ஒரு நெருக்கமான தோற்றத்தை எடுத்துக் கொள்வோம். முழு மூலக் குறியீடு இங்கே வெளியிடப்பட்டுள்ளது.

ViennaNET.WebApi.*

இந்த நூலகங்களின் தொகுப்பானது, "ரூட்" ViennaNET.WebApi ஐக் கொண்டுள்ளது, இதில் CompanyHostBuilder சேவைக்கான பில்டர் வகுப்பையும், ViennaNET.WebApi.Configurators என்ற உள்ளமைவுகளின் தொகுப்பையும் கொண்டுள்ளது. சேவை. கட்டமைப்பாளர்களில், பதிவு செய்தல், கண்டறிதல், அங்கீகாரம் மற்றும் அங்கீகார வகைகள், ஸ்வாக்கர் போன்றவற்றிற்கான இணைப்புகளை நீங்கள் காணலாம்.

ViennaNET.WebApi.Runners.* முன் கட்டமைக்கப்பட்ட சேவை உருவாக்குநர்களையும் கொண்டுள்ளது. இந்த தொகுப்புகள் ஒவ்வொரு முறையும் நீங்கள் ஒரு புதிய சேவையை உருவாக்கும் போது நினைவில் வைத்துக்கொள்ளாமல் இருக்க அனுமதிக்கின்றன. இருப்பினும், அவை எந்த வகையிலும் சேவை கட்டமைப்பாளரின் செயல்பாட்டைக் கட்டுப்படுத்தாது.

ViennaNET.Mediator.*

ஒரு சேவையில் உள்ள கட்டளைகள் மற்றும் கோரிக்கைகளுக்காக ஒரு உள் இடைநிலை பஸ்ஸை உருவாக்க உங்களை அனுமதிக்கும் நூலகங்கள். இந்த அணுகுமுறை டிஐ ஊசிகளின் எண்ணிக்கையை ஒன்றுக்கு குறைக்க உங்களை அனுமதிக்கிறது, எடுத்துக்காட்டாக, கட்டுப்படுத்திகளில். இதன் காரணமாக, நீங்கள் கோரிக்கைகளுக்கு பல்வேறு அலங்காரங்களைச் சேர்க்கலாம், இது அவற்றின் செயலாக்கத்தை ஒருங்கிணைக்கிறது மற்றும் குறியீட்டின் அளவைக் குறைக்கிறது.

ViennaNET. சரிபார்ப்பு

சரிபார்ப்பு விதிகள் மற்றும் அவற்றிலிருந்து வரிசைகளை உருவாக்குவதற்கான வகுப்புகளின் தொகுப்பைக் கொண்ட ஒரு சட்டசபை. டொமைன் சரிபார்ப்பைச் செயல்படுத்த இது மிகவும் வசதியானது, ஏனெனில் இது ஒவ்வொரு வணிக நிலையையும் எளிய மற்றும் தனி விதியின் வடிவத்தில் விவரிக்க அனுமதிக்கிறது.

வியன்னாநெட்.ரெடிஸ்

ரெடிஸுடன் இன்-மெமரி கேச் ஆக வசதியான வேலைக்காக ரேப்பர்களைக் கொண்ட நூலகம்.

ViennaNET. விவரக்குறிப்புகள்

ஸ்பெசிபிகேஷன் பேட்டர்னைச் செயல்படுத்தும் வகுப்புகளைக் கொண்ட சட்டசபை.

இது எல்லாம் எங்கள் தொகுப்பில் இல்லை. மீதியை நீங்கள் பார்க்கலாம் GitHub களஞ்சியத்தில். தரவுத்தளங்களுடன் பணிபுரியும் எங்கள் நூலகங்களை விரைவில் OpenSource க்கு வெளியிட திட்டமிட்டுள்ளோம்.

உங்கள் கவனத்திற்கு நன்றி, உங்கள் கருத்துகளையும் இழுக்கும் கோரிக்கைகளையும் எதிர்பார்க்கிறோம்.

ஆதாரம்: www.habr.com

கருத்தைச் சேர்