ሁሉም ሰው ሰላም!
እኛ በRaiffeisenbank የ.NET ገንቢዎች ማህበረሰብ ነን፣ እና በ.NET Core ላይ የተገነቡ የመሠረተ ልማት ቤተ-መጻሕፍት ስብስብን በአንድ ላይ በተዋሃደ ሥነ-ምህዳር ለመፍጠር እንፈልጋለን። ክፍት ምንጭ አድርገነዋል!
ትንሽ ታሪክ
በአንድ ወቅት ወደ ማይክሮ ሰርቪስ ስብስብ የሚቀየር ትልቅ ሞኖሊቲክ ፕሮጀክት ነበረን (ስለዚህ ሂደት ዝርዝር መረጃ ማንበብ ይችላሉ) ) በሂደቱ ወቅት፣ አዳዲስ ማይክሮ ሰርቪሶችን ስንፈጥር ብዙውን ጊዜ የተለያዩ የመሠረተ ልማት መፍትሄዎችን መቅዳት ነበረብን - እንደ የምዝግብ ቅንብሮች፣ የውሂብ ጎታ አስተዳደር፣ WCF፣ ወዘተ። ይህ ፕሮጀክት በአንድ ቡድን እየተሰራ ነበር፣ እና ሁሉም ሰው ከመሠረተ ልማት ጋር ለመስራት በተወሰነ የተቋቋመ አቀራረብ መልመድ ጀምሯል። ስለዚህ፣ የተጋራውን ኮድ ወደ ተለየ ማከማቻ ለየነው፣ የተገኙትን ቤተ-መጻሕፍት በNuGet ፓኬጆች ጠቅልለን በውስጣዊ የNuGet ማከማቻችን ውስጥ አስቀመጥናቸው።
ጊዜ እያለፈ ሲሄድ ፕሮጀክቱ ቀስ በቀስ ተበታተነ፣ እና ዘመናዊ የጃቫስክሪፕት ማዕቀፍን በመጠቀም አዳዲስ የደንበኛ-ጎን ሞጁሎችን መፍጠር እና በአሳሽ ውስጥ ማስኬድ መፈለግ ጀመርን። ከ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 ፈጽሞ ሳይለወጡ ሲዛወሩ ሌሎቹ ደግሞ ጥቃቅን ማሻሻያዎችን አግኝተዋል። ነገር ግን ከሁሉም በላይ በAsp.Net Core ላይ አገልግሎቶችን ከማሄድ ጋር የተያያዘውን ተግባር እንደገና መስራት ፈልገን ነበር።
የመጀመሪያው እርምጃ የቀድሞውን ስሪት ዋና ችግር የሚፈታ ጽንሰ-ሀሳብ መመርመር ነበር፡- ተለዋዋጭነት አለመኖሩ። ስለዚህ መላውን የቤተ-መጻሕፍት ስርዓት በተቻለ መጠን ገለልተኛ እና ሞዱላር ለማድረግ እና እንደ የግንባታ ኪት ያሉ አስፈላጊ አገልግሎቶችን ለማሰባሰብ ተወስኗል።
ዋናው ግብ ከውሂብ ጎታዎች፣ አውቶቡሶች እና ሌሎች አገልግሎቶች ጋር እንዴት መስተጋብር መፍጠር እንደሚቻል የሚገልጽ የተዋሃደ አቀራረብ መፍጠር ነው። ውህደቶችን ፈጣን እና ህመም የሌለበት ለማድረግ ጥረት አድርገናል፣ ይህም ገንቢዎች ከመሠረተ ልማት ይልቅ የንግድ አመክንዮ በመጻፍ ላይ እንዲያተኩሩ ያስችላቸዋል - ቀድሞውኑ እዚያ አለ። የተጋራ ማከማቻ በቡድኖች ውስጥ የትብብር ልምድን ለማሻሻል ይረዳል፡ በጣም ተመሳሳይ የሆኑ ውስጣዊ መሠረተ ልማቶች ጥቅም ላይ ሲውሉ፣ ከሌላ ቡድን የልማት ሂደት ጋር መዋሃድ እና እውቀትን መጋራት ቀላል ነው።
እና ለምን ክፍት ምንጭ ያስፈልገናል?
የኛን የብቃት ደረጃ ማሳየት እና ከፍተኛ ጥራት ያለው ግብረመልስ መቀበል እንፈልጋለን፡ ከባንኩ ውጭ ያለ ሰው ልዩ የሆነ ነገር ማበርከት ይችላል። በኢንዱስትሪው ውስጥ በ.NET ውስጥ ማይክሮ ሰርቪስ እና የDDD ልምዶችን በማዘጋጀት ላይ ፍላጎት አለን፤ ምናልባት አንድ ሰው የተወሰኑትን የማዕቀፉ ክፍሎች ለመቀበል ፈቃደኛ ሊሆን ይችላል።
እንደ እውነቱ ከሆነ፣ ቪየናኔት
አሁን ሁሉንም ነገር በዝርዝር እንመልከት። .
ቪየናኔት.ዌብአፒ*
ይህ የቤተ-መጻሕፍት ስብስብ የCampHostBuilder አገልግሎት ገንቢ ክፍልን እና የViennaNET.WebApi.Configurators.* ውቅሮችን የያዘውን የViennaNET.WebApi "root" እና እያንዳንዳቸው በሚፈጠረው አገልግሎት ላይ የተወሰኑ ተግባራትን እንዲያክሉ እና እንዲያዋቅሩ ያስችልዎታል። እነዚህ ውቅሮች ለሎግንግ፣ ለምርመራ፣ ለማረጋገጫ እና ለፈቃድ አይነቶች፣ ለSwagger እና ለሌሎችም አማራጮችን ያካትታሉ።
ViennaNET.WebApi.Runners.* እንዲሁም አስቀድሞ የተዋቀሩ የአገልግሎት ገንቢዎችን ይዟል። እነዚህ ፓኬጆች አዲስ አገልግሎት በሚፈጥሩበት ጊዜ ሁሉ የትኞቹን ውቅሮች ማንቃት እንዳለባቸው ማስታወስ አስፈላጊ መሆኑን ያስወግዳሉ። እንዲሁም የአገልግሎት ገንቢውን ተግባር በምንም መንገድ አይገድቡም።
ቪየናኔት። አስታራቂ።*
በአንድ አገልግሎት ውስጥ ላሉ ትዕዛዞች እና ጥያቄዎች ውስጣዊ መካከለኛ አውቶቡስ እንዲፈጥሩ የሚያስችሉዎት ቤተ-መጻሕፍት። ይህ አካሄድ የDI መርፌዎችን ቁጥር ለምሳሌ በመቆጣጠሪያዎች ውስጥ ወደ አንድ ይቀንሳል። ይህም የተለያዩ ማስጌጫዎችን ወደ ጥያቄዎች እንዲጨምሩ፣ ሂደቱን አንድ በማድረግ እና የኮዱን መጠን እንዲቀንሱ ያስችልዎታል።
የቪየናኔት.ማረጋገጫ
የማረጋገጫ ደንቦችን እና ቅደም ተከተሎቻቸውን ለመፍጠር የክፍሎችን ስብስብ የያዘ ስብስብ። ይህ እያንዳንዱ የንግድ ሁኔታ እንደ ቀላል፣ የተለየ ደንብ እንዲገለጽ ስለሚያስችል ለጎራ-ተኮር ማረጋገጫ ተግባራዊ ለማድረግ በጣም ምቹ ነው።
ቪየናኔት.ሬዲስ
ሬዲስን እንደ ማህደረ ትውስታ መሸጎጫ በመጠቀም ምቹ በሆነ መንገድ ለመስራት መጠቅለያዎች ያሉት ቤተ መጻሕፍት።
ቪየናኔት.ዝርዝሮች
የዝርዝር መግለጫውን ንድፍ ተግባራዊ የሚያደርጉ ክፍሎችን የያዘ ስብስብ።
ይህ በእኛ ስብስብ ውስጥ ካለው ሁሉ በጣም የራቀ ነው። የቀረውን ማየት ይችላሉ። የመረጃ ቋታችንን ቤተ-መጻሕፍት በቅርቡ ምንጭ ለመክፈት አቅደናል።
ስለ ትኩረትዎ እናመሰግናለን፣ አስተያየቶችዎን እና የመሳብ ጥያቄዎችን በጉጉት እንጠብቃለን።
ምንጭ: hab.com
