ವಿಯೆನ್ನಾನೆಟ್: ಬ್ಯಾಕೆಂಡ್‌ಗಾಗಿ ಲೈಬ್ರರಿಗಳ ಒಂದು ಸೆಟ್

ಎಲ್ಲರೂ ಹಲೋ!

ನಾವು ರೈಫಿಸೆನ್‌ಬ್ಯಾಂಕ್‌ನಲ್ಲಿರುವ .NET ಡೆವಲಪರ್‌ಗಳ ಸಮುದಾಯವಾಗಿದ್ದೇವೆ ಮತ್ತು ಒಂದೇ ಪರಿಸರ ವ್ಯವಸ್ಥೆಯೊಂದಿಗೆ ಸೂಕ್ಷ್ಮ ಸೇವೆಗಳನ್ನು ತ್ವರಿತವಾಗಿ ರಚಿಸಲು .NET ಕೋರ್ ಆಧಾರಿತ ಮೂಲಸೌಕರ್ಯ ಲೈಬ್ರರಿಗಳ ಬಗ್ಗೆ ಮಾತನಾಡಲು ನಾವು ಬಯಸುತ್ತೇವೆ. ಅವರು ಅದನ್ನು ತೆರೆದ ಮೂಲಕ್ಕೆ ತಂದರು!

ವಿಯೆನ್ನಾನೆಟ್: ಬ್ಯಾಕೆಂಡ್‌ಗಾಗಿ ಲೈಬ್ರರಿಗಳ ಒಂದು ಸೆಟ್

ಇತಿಹಾಸದ ಸ್ವಲ್ಪ

ಒಂದಾನೊಂದು ಕಾಲದಲ್ಲಿ ನಾವು ದೊಡ್ಡ ಏಕಶಿಲೆಯ ಯೋಜನೆಯನ್ನು ಹೊಂದಿದ್ದೇವೆ, ಅದು ಕ್ರಮೇಣ ಮೈಕ್ರೊ ಸರ್ವೀಸ್‌ಗಳ ಗುಂಪಾಗಿ ಬದಲಾಯಿತು (ನೀವು ಈ ಪ್ರಕ್ರಿಯೆಯ ವೈಶಿಷ್ಟ್ಯಗಳ ಬಗ್ಗೆ ಓದಬಹುದು ಈ ಲೇಖನ) ಪ್ರಕ್ರಿಯೆಯಲ್ಲಿ, ಹೊಸ ಮೈಕ್ರೊ ಸರ್ವೀಸ್‌ಗಳನ್ನು ರಚಿಸುವಾಗ, ನಾವು ಆಗಾಗ್ಗೆ ವಿವಿಧ ಮೂಲಸೌಕರ್ಯ ಪರಿಹಾರಗಳನ್ನು ನಕಲಿಸಬೇಕಾದ ಸಮಸ್ಯೆಯನ್ನು ಎದುರಿಸಿದ್ದೇವೆ - ಉದಾಹರಣೆಗೆ ಲಾಗಿಂಗ್ ಅನ್ನು ಹೊಂದಿಸುವುದು, ಡೇಟಾಬೇಸ್‌ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವುದು, WCF, ಇತ್ಯಾದಿ. ಒಂದು ತಂಡವು ಈ ಯೋಜನೆಯಲ್ಲಿ ಕೆಲಸ ಮಾಡಿದೆ, ಮತ್ತು ಎಲ್ಲರೂ ಈಗಾಗಲೇ ಮೂಲಸೌಕರ್ಯದೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ಕೆಲವು ಸ್ಥಾಪಿತ ವಿಧಾನಕ್ಕೆ ಒಗ್ಗಿಕೊಂಡಿರುತ್ತಾರೆ. ಆದ್ದರಿಂದ, ನಾವು ಸಾಮಾನ್ಯ ಕೋಡ್ ಅನ್ನು ಪ್ರತ್ಯೇಕ ರೆಪೊಸಿಟರಿಯಾಗಿ ಬೇರ್ಪಡಿಸಿದ್ದೇವೆ, ಸಂಗ್ರಹಿಸಿದ ಲೈಬ್ರರಿಗಳನ್ನು ನುಗೆಟ್ ಪ್ಯಾಕೇಜ್‌ಗಳಲ್ಲಿ ಸುತ್ತಿ ನಮ್ಮ ಆಂತರಿಕ ನುಗೆಟ್ ರೆಪೊಸಿಟರಿಯಲ್ಲಿ ಇರಿಸಿದ್ದೇವೆ.

ಸಮಯ ಕಳೆದುಹೋಯಿತು, ಯೋಜನೆಯು ಕ್ರಮೇಣ ವಿಘಟನೆಯಾಯಿತು ಮತ್ತು ಆಧುನಿಕ JS ಚೌಕಟ್ಟಿನಲ್ಲಿ ಹೊಸ ಕ್ಲೈಂಟ್-ಸೈಡ್ ಮಾಡ್ಯೂಲ್‌ಗಳನ್ನು ರಚಿಸಲು ಮತ್ತು ಅವುಗಳನ್ನು ಬ್ರೌಸರ್‌ನಲ್ಲಿ ಚಲಾಯಿಸಲು ಬಯಕೆ ಇತ್ತು. ನಾವು WCF/SOAP ನಿಂದ REST/HTTP ಗೆ ಚಲಿಸಲು ಪ್ರಾರಂಭಿಸಿದ್ದೇವೆ, ಆದ್ದರಿಂದ AspNet WebApi ಆಧಾರಿತ ಸೇವೆಗಳನ್ನು ತ್ವರಿತವಾಗಿ ಪ್ರಾರಂಭಿಸಲು ನಮಗೆ ಹೊಸ ಲೈಬ್ರರಿಗಳ ಅಗತ್ಯವಿದೆ. .Net ಫ್ರೇಮ್‌ವರ್ಕ್ 4.5 ನಲ್ಲಿನ ಮೊದಲ ಆವೃತ್ತಿಯನ್ನು ನಮ್ಮ ವಾಸ್ತುಶಿಲ್ಪಿ ತನ್ನ ಬಿಡುವಿನ ವೇಳೆಯಲ್ಲಿ ಬಹುತೇಕ ಮೊಣಕಾಲುಗಳ ಮೇಲೆ ಮಾಡಿದ್ದಾನೆ, ಆದರೆ ಬಾಕ್ಸ್‌ನ ಹೊರಗೆ ಇದು Program.cs ನಲ್ಲಿ ಅಧಿಕಾರವನ್ನು (NTLM) ಒಳಗೊಂಡಿರುವ ಮೂರು ಸಾಲುಗಳೊಂದಿಗೆ ಸೇವೆಯನ್ನು ಪ್ರಾರಂಭಿಸಲು ಸಾಧ್ಯವಾಗಿಸಿತು. ಲಾಗಿಂಗ್, ಸ್ವಾಗ್ಗರ್, IoC/DI ಕ್ಯಾಸಲ್ ವಿಂಡ್ಸರ್ ಆಧರಿಸಿ, ಕಸ್ಟಮೈಸ್ ಮಾಡಿದ HTTP ಕ್ಲೈಂಟ್‌ಗಳು ಸಂಪೂರ್ಣ ಯೋಜನೆಯಾದ್ಯಂತ ಎಂಡ್-ಟು-ಎಂಡ್ ಲಾಗಿಂಗ್ ಅನ್ನು ಒದಗಿಸಲು ವಿವಿಧ ಹೆಡರ್‌ಗಳನ್ನು ಫಾರ್ವರ್ಡ್ ಮಾಡುತ್ತದೆ. ಮತ್ತು ಈ ಸಂಪೂರ್ಣ ವಿಷಯವನ್ನು ಸೇವಾ ಕಾನ್ಫಿಗರೇಶನ್ ಫೈಲ್‌ನಲ್ಲಿ ನೇರವಾಗಿ ಕಾನ್ಫಿಗರ್ ಮಾಡಬಹುದು.

ಆದಾಗ್ಯೂ, ಎಲ್ಲವೂ ಸುಗಮವಾಗಿರಲಿಲ್ಲ: ಈ ಲೈಬ್ರರಿಯು ಹೊಸ ಮಾಡ್ಯೂಲ್‌ಗಳನ್ನು ಪರಿಚಯಿಸುವ ವಿಷಯದಲ್ಲಿ ಅತ್ಯಂತ ಮೃದುವಾಗಿರುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, ನೀವು ಕೆಲವು ವಿಶೇಷ ಮಿಡಲ್‌ವೇರ್ ಅನ್ನು ಸೇರಿಸಬೇಕಾದರೆ, ನೀವು ಹೊಸ ಅಸೆಂಬ್ಲಿಯನ್ನು ರಚಿಸಬೇಕು ಮತ್ತು ಸೇವೆಯನ್ನು ನಡೆಸುವ ಮೂಲ ವರ್ಗದಿಂದ ಆನುವಂಶಿಕವಾಗಿ ಪಡೆಯಬೇಕು, ಅದು ಅತ್ಯಂತ ಅನಾನುಕೂಲವಾಗಿತ್ತು. ಅದೃಷ್ಟವಶಾತ್, ಅಂತಹ ಹೆಚ್ಚಿನ ಪ್ರಕರಣಗಳು ಇರಲಿಲ್ಲ.

ಡಾಕರ್ ಮತ್ತು ಕುಬರ್ನೆಟ್ಸ್ ಯುಗ

ಡಾಕರ್ ಮತ್ತು ಕುಬರ್ನೆಟ್ಸ್ ಅಲೆಯು ನಮ್ಮನ್ನು ತಲುಪಿದಾಗ ಸಮಯ ಬಂದಿದೆ, ಅದನ್ನು ನಾವು ಸೂಕ್ಷ್ಮವಾಗಿ ಗಮನಿಸಿದ್ದೇವೆ: ಎಲ್ಲಾ ನಂತರ, ನೆಟ್ ಕೋರ್‌ನಲ್ಲಿ ತಂತ್ರಜ್ಞಾನಗಳ ಜೊತೆಗೆ ಮತ್ತಷ್ಟು ಚಲಿಸಲು ಇದು ಉತ್ತಮ ಅವಕಾಶವಾಗಿದೆ. ಇದರರ್ಥ ಸೇವೆಗಳನ್ನು ನಡೆಸಲು ನಮಗೆ ಹೊಸ ಮೂಲಸೌಕರ್ಯ ಅಗತ್ಯವಿದೆ: ಕೆಲವು ಲೈಬ್ರರಿಗಳು .Net ಫ್ರೇಮ್‌ವರ್ಕ್‌ನಿಂದ .Net Standard ಮತ್ತು .Net ಕೋರ್‌ಗೆ ಪ್ರಾಯೋಗಿಕವಾಗಿ ಬದಲಾವಣೆಗಳಿಲ್ಲದೆ, ಕೆಲವು ಸಣ್ಣ ಸುಧಾರಣೆಗಳೊಂದಿಗೆ ಸ್ಥಳಾಂತರಗೊಂಡಿವೆ. ಆದರೆ ಎಲ್ಲಕ್ಕಿಂತ ಹೆಚ್ಚಾಗಿ ನಾನು AspNet ಕೋರ್‌ನಲ್ಲಿ ಸೇವೆಗಳನ್ನು ಪ್ರಾರಂಭಿಸುವುದರೊಂದಿಗೆ ಸಂಬಂಧಿಸಿದ ಕಾರ್ಯವನ್ನು ಪುನಃ ಮಾಡಲು ಬಯಸುತ್ತೇನೆ.

ನಾವು ಪರಿಗಣಿಸಿದ ಮೊದಲ ವಿಷಯವೆಂದರೆ ಹಿಂದಿನ ಆವೃತ್ತಿಯ ಮುಖ್ಯ ನ್ಯೂನತೆಯನ್ನು ತೆಗೆದುಹಾಕುವ ಪರಿಕಲ್ಪನೆಯಾಗಿದೆ: ನಮ್ಯತೆಯ ಕೊರತೆ. ಆದ್ದರಿಂದ, ಸಂಪೂರ್ಣ ಗ್ರಂಥಾಲಯ ವ್ಯವಸ್ಥೆಯನ್ನು ಸಾಧ್ಯವಾದಷ್ಟು ಸ್ವತಂತ್ರ ಮತ್ತು ಮಾಡ್ಯುಲರ್ ಮಾಡಲು ಮತ್ತು ಕನ್ಸ್ಟ್ರಕ್ಟರ್ ಆಗಿ ಕಾರ್ಯನಿರ್ವಹಣೆಗೆ ಅಗತ್ಯವಾದ ಸೇವೆಗಳನ್ನು ಸಂಗ್ರಹಿಸಲು ನಿರ್ಧರಿಸಲಾಯಿತು.

ಡೇಟಾಬೇಸ್‌ಗಳು, ಬಸ್‌ಗಳು ಮತ್ತು ಇತರ ಸೇವೆಗಳೊಂದಿಗೆ ಹೇಗೆ ಸಂವಹನ ನಡೆಸಬೇಕು ಎಂಬುದನ್ನು ವಿವರಿಸುವ ಏಕೀಕೃತ ವಿಧಾನವನ್ನು ರಚಿಸುವುದು ಮುಖ್ಯ ಗುರಿಯಾಗಿದೆ. ನಾವು ಏಕೀಕರಣಗಳನ್ನು ತ್ವರಿತವಾಗಿ ಮತ್ತು ನೋವುರಹಿತವಾಗಿ ಮಾಡಲು ಪ್ರಯತ್ನಿಸಿದ್ದೇವೆ ಮತ್ತು ಡೆವಲಪರ್‌ಗಳು ಮೂಲಸೌಕರ್ಯಕ್ಕಿಂತ ಹೆಚ್ಚಾಗಿ ವ್ಯಾಪಾರ ತರ್ಕವನ್ನು ಬರೆಯುವುದರ ಮೇಲೆ ಕೇಂದ್ರೀಕರಿಸಬಹುದು - ಇದು ಈಗಾಗಲೇ ಸಿದ್ಧವಾಗಿದೆ. ಸಾಮಾನ್ಯ ಭಂಡಾರವು ತಂಡಗಳೊಳಗಿನ ಪರಸ್ಪರ ಕ್ರಿಯೆಯ ಅನುಭವವನ್ನು ಸುಧಾರಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ: ಒಂದೇ ರೀತಿಯ ಆಂತರಿಕ ಮೂಲಸೌಕರ್ಯಗಳನ್ನು ಬಳಸಿದಾಗ, ಮತ್ತೊಂದು ತಂಡದ ಅಭಿವೃದ್ಧಿ ಪ್ರಕ್ರಿಯೆಗೆ ಸೇರಲು ಮತ್ತು ಪರಿಣತಿಯನ್ನು ವಿನಿಮಯ ಮಾಡಿಕೊಳ್ಳಲು ಸುಲಭವಾಗುತ್ತದೆ.

ಮತ್ತು ನಮಗೆ ಓಪನ್ ಸೋರ್ಸ್ ಏಕೆ ಬೇಕು?

ನಮ್ಮ ಪರಿಣತಿಯ ಪರಿಪಕ್ವತೆಯನ್ನು ತೋರಿಸಲು ಮತ್ತು ಉತ್ತಮ-ಗುಣಮಟ್ಟದ ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ಪಡೆಯಲು ನಾವು ಬಯಸುತ್ತೇವೆ: ಬ್ಯಾಂಕಿನ ಹೊರಗಿನ ವ್ಯಕ್ತಿಯು ತಾವೇ ಏನನ್ನಾದರೂ ತರಲು ಸಾಧ್ಯವಾಗುತ್ತದೆ. ಉದ್ಯಮದಲ್ಲಿ .NET ನಲ್ಲಿ ಮೈಕ್ರೋ ಸರ್ವೀಸ್ ಮತ್ತು DDD ಯೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವ ಅಭ್ಯಾಸಗಳ ಅಭಿವೃದ್ಧಿಯಲ್ಲಿ ನಾವು ಆಸಕ್ತಿ ಹೊಂದಿದ್ದೇವೆ; ಬಹುಶಃ ಯಾರಾದರೂ ಫ್ರೇಮ್‌ವರ್ಕ್‌ನ ಕೆಲವು ಭಾಗಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳಲು ಬಯಸುತ್ತಾರೆ.

ವಾಸ್ತವವಾಗಿ, ವಿಯೆನ್ನಾನೆಟ್

ಈಗ ನಾವು ಹತ್ತಿರದಿಂದ ನೋಡೋಣ. ಸಂಪೂರ್ಣ ಮೂಲ ಕೋಡ್ ಅನ್ನು ಇಲ್ಲಿ ಪೋಸ್ಟ್ ಮಾಡಲಾಗಿದೆ.

ViennaNET.WebApi.*

ಈ ಲೈಬ್ರರಿಗಳ ಸೆಟ್ "ರೂಟ್" ViennaNET.WebApi ಅನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ, ಇದು CompanyHostBuilder ಸೇವೆಗಾಗಿ ಬಿಲ್ಡರ್ ವರ್ಗವನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ ಮತ್ತು ViennaNET.WebApi.Configurators ನ ಒಂದು ಸೆಟ್ ಅನ್ನು ಒಳಗೊಂಡಿದೆ ಸೇವೆ. ಸಂರಚನಾಕಾರರಲ್ಲಿ ನೀವು ಲಾಗಿಂಗ್, ಡಯಾಗ್ನೋಸ್ಟಿಕ್ಸ್, ದೃಢೀಕರಣ ಮತ್ತು ದೃಢೀಕರಣ ಪ್ರಕಾರಗಳು, ಸ್ವಾಗರ್ ಇತ್ಯಾದಿಗಳಿಗೆ ಸಂಪರ್ಕಗಳನ್ನು ಕಾಣಬಹುದು.

ViennaNET.WebApi.Runners.* ಪೂರ್ವ ಕಾನ್ಫಿಗರ್ ಮಾಡಲಾದ ಸೇವಾ ಬಿಲ್ಡರ್‌ಗಳನ್ನು ಸಹ ಒಳಗೊಂಡಿದೆ. ಸಂರಚನಾಕಾರರನ್ನು ಸಂಪರ್ಕಿಸಲು ಅಗತ್ಯವಿರುವ ಹೊಸ ಸೇವೆಯನ್ನು ನೀವು ರಚಿಸಿದಾಗಲೆಲ್ಲಾ ಈ ಪ್ಯಾಕೇಜುಗಳು ನಿಮಗೆ ನೆನಪಿರುವುದಿಲ್ಲ. ಆದಾಗ್ಯೂ, ಅವರು ಸೇವಾ ಬಿಲ್ಡರ್ನ ಕಾರ್ಯವನ್ನು ಯಾವುದೇ ರೀತಿಯಲ್ಲಿ ಮಿತಿಗೊಳಿಸುವುದಿಲ್ಲ.

ವಿಯೆನ್ನಾನೆಟ್.ಮಧ್ಯವರ್ತಿ.*

ಸೇವೆಯೊಳಗೆ ಆಜ್ಞೆಗಳು ಮತ್ತು ವಿನಂತಿಗಳಿಗಾಗಿ ಆಂತರಿಕ ಮಧ್ಯವರ್ತಿ ಬಸ್ ಅನ್ನು ರಚಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುವ ಗ್ರಂಥಾಲಯಗಳು. ಈ ವಿಧಾನವು DI ಚುಚ್ಚುಮದ್ದಿನ ಸಂಖ್ಯೆಯನ್ನು ಒಂದಕ್ಕೆ ಕಡಿಮೆ ಮಾಡಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ, ಉದಾಹರಣೆಗೆ, ನಿಯಂತ್ರಕಗಳಲ್ಲಿ. ಈ ಕಾರಣದಿಂದಾಗಿ, ನೀವು ವಿನಂತಿಗಳಿಗೆ ವಿವಿಧ ಅಲಂಕಾರಿಕರನ್ನು ಸೇರಿಸಬಹುದು, ಅದು ಅವರ ಸಂಸ್ಕರಣೆಯನ್ನು ಏಕೀಕರಿಸುತ್ತದೆ ಮತ್ತು ಕೋಡ್ ಪ್ರಮಾಣವನ್ನು ಕಡಿಮೆ ಮಾಡುತ್ತದೆ.

ವಿಯೆನ್ನಾನೆಟ್.ಮೌಲ್ಯಮಾಪನ

ಊರ್ಜಿತಗೊಳಿಸುವಿಕೆಯ ನಿಯಮಗಳು ಮತ್ತು ಅನುಕ್ರಮಗಳನ್ನು ರಚಿಸಲು ತರಗತಿಗಳ ಗುಂಪನ್ನು ಹೊಂದಿರುವ ಅಸೆಂಬ್ಲಿ. ಡೊಮೇನ್ ಮೌಲ್ಯೀಕರಣವನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ಇದು ತುಂಬಾ ಅನುಕೂಲಕರವಾಗಿದೆ, ಏಕೆಂದರೆ ಇದು ಪ್ರತಿ ವ್ಯವಹಾರ ಸ್ಥಿತಿಯನ್ನು ಸರಳ ಮತ್ತು ಪ್ರತ್ಯೇಕ ನಿಯಮದ ರೂಪದಲ್ಲಿ ವಿವರಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ.

ವಿಯೆನ್ನಾನೆಟ್.ರೆಡಿಸ್

ಇನ್-ಮೆಮೊರಿ ಕ್ಯಾಶ್‌ನಂತೆ ರೆಡಿಸ್‌ನೊಂದಿಗೆ ಅನುಕೂಲಕರ ಕೆಲಸಕ್ಕಾಗಿ ಹೊದಿಕೆಗಳನ್ನು ಹೊಂದಿರುವ ಲೈಬ್ರರಿ.

ವಿಯೆನ್ನಾನೆಟ್. ವಿಶೇಷಣಗಳು

ಸ್ಪೆಸಿಫಿಕೇಶನ್ ಪ್ಯಾಟರ್ನ್ ಅನ್ನು ಅಳವಡಿಸುವ ತರಗತಿಗಳನ್ನು ಹೊಂದಿರುವ ಅಸೆಂಬ್ಲಿ.

ಇದು ನಮ್ಮ ಸೆಟ್‌ನಲ್ಲಿರುವುದಲ್ಲ. ಉಳಿದದ್ದನ್ನು ನೀವು ನೋಡಬಹುದು GitHub ರೆಪೊಸಿಟರಿಯಲ್ಲಿ. ಡೇಟಾಬೇಸ್‌ಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ನಮ್ಮ ಲೈಬ್ರರಿಗಳನ್ನು ಶೀಘ್ರದಲ್ಲೇ ಓಪನ್‌ಸೋರ್ಸ್‌ಗೆ ಬಿಡುಗಡೆ ಮಾಡಲು ನಾವು ಯೋಜಿಸುತ್ತಿದ್ದೇವೆ.

ನಿಮ್ಮ ಗಮನಕ್ಕೆ ಧನ್ಯವಾದಗಳು, ನಿಮ್ಮ ಕಾಮೆಂಟ್‌ಗಳು ಮತ್ತು ಪುಲ್ ವಿನಂತಿಗಳಿಗಾಗಿ ನಾವು ಎದುರು ನೋಡುತ್ತೇವೆ.

ಮೂಲ: www.habr.com

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ