{"id":92433,"date":"2020-08-27T07:42:01","date_gmt":"2020-08-27T05:42:01","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/viennanet-nabor-bibliotek-dlya-backenda"},"modified":"2020-08-27T07:42:01","modified_gmt":"2020-08-27T05:42:01","slug":"viennanet-nabor-bibliotek-dlya-backenda","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/viennanet-nabor-bibliotek-dlya-backenda","title":{"rendered":"ViennaNET: nj\u00eb grup bibliotekash p\u00ebr backend-in","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>P\u00ebrsh\u00ebndetje t\u00eb gjith\u00ebve!<\/p>\n<p><\/p>\n<p>Ne jemi nj\u00eb komunitet zhvilluesish .NET t\u00eb Raiffeisenbank dhe duam t'ju tregojm\u00eb rreth nj\u00eb grupi bibliotekash infrastrukturore n\u00eb .NET Core p\u00ebr krijimin e shpejt\u00eb t\u00eb mikrosh\u00ebrbjeve me nj\u00eb ekosistem t\u00eb p\u00ebrbashk\u00ebt. E kemi nxjerr\u00eb n\u00eb Open Source! <\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/raiffeisenbank\/blog\/494830\/\"><img decoding=\"async\" alt=\"ViennaNET: nj\u00eb grup bibliotekash p\u00ebr backend-in\" src=\"\/wp-content\/uploads\/2020\/08\/eb063b3083da2c39f7f3c40a560c30ab.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>Pak histori<\/h3>\n<p><\/p>\n<p>Nj\u00ebher\u00eb lexuam nj\u00eb projekt t\u00eb madh monolit, i cili gradualisht po shnd\u00ebrrohej n\u00eb nj\u00eb grup mikrosh\u00ebrbjesh (p\u00ebr ve\u00e7orit\u00eb e k\u00ebtij procesi mund t\u00eb lexoni n\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/raiffeisenbank\/blog\/458404\/\">k\u00ebt\u00eb artikull<\/a><\/noindex>). Gjat\u00eb procesit u p\u00ebrball\u00ebm me problemin q\u00eb, kur krijonim mikrosh\u00ebrbje t\u00eb reja, shpesh her\u00eb duhej t\u00eb kopjonim zgjidhje t\u00eb ndryshme infrastrukturore - si p\u00ebr shembull konfigurimin e logimit, pun\u00ebn me bazat e t\u00eb dh\u00ebnave, WCF etj. Nj\u00eb ekip punonte mbi k\u00ebt\u00eb projekt, dhe t\u00eb gjith\u00eb ishin m\u00ebsuar me nj\u00eb qasje t\u00eb caktuar n\u00eb pun\u00ebn me infrastruktur\u00ebn. Prandaj, ne nxor\u00ebm kodin e p\u00ebrbashk\u00ebt n\u00eb nj\u00eb depo t\u00eb ve\u00e7ant\u00eb, bibliotekat e mbledhura i paketuam n\u00eb paketa NuGet dhe i vendos\u00ebm n\u00eb depo t\u00eb brendshme NuGet.<\/p>\n<p><\/p>\n<p>Koha kalonte, projekti po thyehej pak nga pak, dhe shfaqej d\u00ebshira p\u00ebr t\u00eb krijuar module t\u00eb reja t\u00eb pjes\u00ebs klienti n\u00eb nj\u00eb framework modern Js dhe p\u00ebr t'i nisur ato n\u00eb shfletues. Filluam t\u00eb kalojm\u00eb nga WCF\/SOAP n\u00eb REST\/HTTP, prandaj na duhej bibliotek\u00eb e re p\u00ebr nisjen e sh\u00ebrbimeve n\u00eb baz\u00eb t\u00eb AspNet WebApi. Versioni i par\u00eb n\u00eb .Net Framework 4.5 u krijua nga arkitektin ton\u00eb pothuajse n\u00eb koh\u00ebn e tij t\u00eb lir\u00eb, por ai tashm\u00eb mund\u00ebsonte me vet\u00ebm disa rreshta n\u00eb Program.cs t\u00eb niste nj\u00eb sh\u00ebrbim q\u00eb p\u00ebrmbante autorizimin (NTLM), logimin, Swagger, IoC\/DI n\u00eb baz\u00eb t\u00eb Castle Windsor, klient\u00eb HTTP t\u00eb rregulluar q\u00eb kalonin tituj t\u00eb ndrysh\u00ebm p\u00ebr t\u00eb siguruar logimin e plot\u00eb n\u00eb t\u00eb gjith\u00eb projektin. Dhe gjith\u00e7ka mund t\u00eb konfigurohej p\u00ebrve\u00e7 k\u00ebsaj n\u00eb dosjen e konfigurimit t\u00eb sh\u00ebrbimit.<\/p>\n<p><\/p>\n<p>Megjithat\u00eb, nuk ishte gjith\u00e7ka e leht\u00eb: kjo bibliotek\u00eb rezultoi shum\u00eb e ngurt\u00eb p\u00ebr sa i p\u00ebrket implementimit t\u00eb moduleve t\u00eb reja. P\u00ebr shembull, n\u00ebse k\u00ebrkohej t\u00eb shtohej ndonj\u00eb middleware t\u00eb ve\u00e7ant\u00eb, duhet t\u00eb krijohej nj\u00eb nd\u00ebrtim i ri dhe t\u00eb trash\u00ebgohej nga klasa baz\u00eb, q\u00eb ishte shum\u00eb e pak\u00ebndshme. Me fat, raste t\u00eb tilla nuk ishin shum\u00eb.<\/p>\n<p><\/p>\n<h3>Epoka e Docker dhe Kubernetes<\/h3>\n<p><\/p>\n<p>Ka arritur koha kur edhe ne erdh\u00ebm n\u00eb val\u00ebn me Docker dhe Kubernetes, t\u00eb cilat i kishim v\u00ebzhguar ngusht\u00eb: ishte nj\u00eb mund\u00ebsi e shk\u00eblqyer p\u00ebr t\u00eb filluar t\u00eb l\u00ebviznim p\u00ebrpara me teknologjit\u00eb, n\u00eb .Net Core. K\u00ebshtu, na nevojitej nj\u00eb infrastruktur\u00eb e re p\u00ebr nisjen e sh\u00ebrbimeve: disa biblioteka kaluan nga .Net Framework n\u00eb .Net Standard dhe .Net Core pothuajse pa ndryshime, disa me p\u00ebrmir\u00ebsime t\u00eb vogla. Por m\u00eb s\u00eb shumti donim t\u00eb rip\u00ebrdornim funksionalitetin e lidhur me nisjen e sh\u00ebrbimeve n\u00eb AspNet Core.<\/p>\n<p><\/p>\n<p>S\u00eb pari, u shqyrtua koncepti q\u00eb do t\u00eb eliminonte mang\u00ebsin\u00eb kryesore t\u00eb versionit t\u00eb kaluar: mungesa e fleksibilitetit. Prandaj, u vendos t\u00eb b\u00ebhej e gjith\u00eb sistemi i bibliotekave sa m\u00eb t\u00eb pavarur dhe modular, dhe t\u00eb montoheshin sh\u00ebrbimet e nevojshme si nj\u00eb nd\u00ebrtues.<\/p>\n<p><\/p>\n<p>Q\u00ebllimi kryesor \u00ebsht\u00eb t\u00eb krijojm\u00eb nj\u00eb qasje t\u00eb unifikuar q\u00eb p\u00ebrshkruan se si t\u00eb nd\u00ebrveprohet me bazat e t\u00eb dh\u00ebnave, autobus\u00ebt dhe sh\u00ebrbimet e tjera. Ne p\u00ebrpiqemi q\u00eb integrimet t\u00eb jen\u00eb t\u00eb shpejta dhe pa dhimbje, n\u00eb m\u00ebnyr\u00eb q\u00eb zhvilluesit t\u00eb mund t\u00eb p\u00ebrqendrohen n\u00eb shkruan logjik\u00ebn biznesore, e cila \u00ebsht\u00eb e gatshme. Depo e p\u00ebrbashk\u00ebt ndihmon n\u00eb p\u00ebrmir\u00ebsimin e p\u00ebrvoj\u00ebs s\u00eb bashk\u00ebveprimit brenda ekipeve: kur p\u00ebrdoren infrastrukturat shum\u00eb t\u00eb ngjashme t\u00eb brendshme, \u00ebsht\u00eb m\u00eb e leht\u00eb t\u00eb p\u00ebrfshihesh n\u00eb procesin e zhvillimit t\u00eb nj\u00eb ekipi tjet\u00ebr dhe t\u00eb shk\u00ebmbeni ekspertiz\u00ebn.<\/p>\n<p><\/p>\n<h3>Dhe pse na nevojitet Open Source?<\/h3>\n<p><\/p>\n<p>Ne duam t\u00eb tregojm\u00eb pjekurin\u00eb e ekspertiz\u00ebs dhe t\u00eb marrim reagime t\u00eb cil\u00ebsis\u00eb: nj\u00eb person q\u00eb \u00ebsht\u00eb jasht\u00eb bank\u00ebs do t\u00eb mund t\u00eb sjell\u00eb di\u00e7ka nga vetja. Gjithashtu, na intereson zhvillimi i praktikave t\u00eb pun\u00ebs me mikrosh\u00ebrbje dhe DDD n\u00eb .NET n\u00eb industri, ndoshta dikush do t\u00eb d\u00ebshiroj\u00eb t\u00eb marr\u00eb disa pjes\u00eb t\u00eb kuadrit p\u00ebr vete. <\/p>\n<p><\/p>\n<h3>Pra, ViennaNET<\/h3>\n<p><\/p>\n<p>Tani le t\u00eb shohim gjith\u00e7ka n\u00eb detaje. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Raiffeisen-DGTL\/ViennaNET\">Kodi burimor i plot\u00eb \u00ebsht\u00eb vendosur k\u00ebtu<\/a><\/noindex>. <\/p>\n<p><\/p>\n<h4>ViennaNET.WebApi.*<\/h4>\n<p><\/p>\n<p>Ky grup bibliotekash p\u00ebrb\u00ebhet nga \"rr\u00ebnja\" ViennaNET.WebApi, e cila p\u00ebrmban klas\u00ebn nd\u00ebrtuese p\u00ebr sh\u00ebrbimin CompanyHostBuilder, dhe nj\u00eb grup konfigurator\u00ebsh ViennaNET.WebApi.Configurators.*, \u00e7do nj\u00ebri prej t\u00eb cil\u00ebve lejon t\u00eb shtohet dhe konfigurohet nj\u00eb funksionalitet n\u00eb sh\u00ebrbimin e krijuar. Mes konfigurator\u00ebve mund t\u00eb gjeni lidhjen e logimit, diagnostik\u00ebs, llojin e autentikimit dhe autorizimit, swagger-\u00ebn etj.<\/p>\n<p><\/p>\n<p>ViennaNET.WebApi.Runners.* p\u00ebrmban nd\u00ebrtuesit e sh\u00ebrbimeve t\u00eb konfiguruar paraprakisht. K\u00ebto paketa lejojn\u00eb q\u00eb t\u00eb mos duhet t\u00eb kujtojm\u00eb \u00e7do her\u00eb, nd\u00ebrsa krijojm\u00eb nj\u00eb sh\u00ebrbim t\u00eb ri, se cilat konfigurator\u00eb duhet t\u00eb lidhen. N\u00eb t\u00eb nj\u00ebjt\u00ebn koh\u00eb ato nuk kufizojn\u00eb aspak funksionalitetin e nd\u00ebrtuesve t\u00eb sh\u00ebrbimeve.<\/p>\n<p><\/p>\n<h4>ViennaNET.Mediator.*<\/h4>\n<p><\/p>\n<p>Biblioteka q\u00eb lejojn\u00eb krijimin e nj\u00eb shtegu t\u00eb brendsh\u00ebm p\u00ebr komandat dhe k\u00ebrkesat brenda sh\u00ebrbimit. Ky qasje lejon reduktimin e numrit t\u00eb DI-injeksioneve n\u00eb nj\u00eb t\u00eb vetme, p\u00ebr shembull, n\u00eb kontrollet. Fal\u00eb k\u00ebsaj, mund t\u00eb shtohen dekorator\u00eb t\u00eb ndrysh\u00ebm n\u00eb k\u00ebrkesa, gj\u00eb q\u00eb unifikon p\u00ebrpunimin e tyre dhe redukton numrin e kodit. <\/p>\n<p><\/p>\n<h4>ViennaNET.Validation<\/h4>\n<p><\/p>\n<p>K\u00ebtu \u00ebsht\u00eb nj\u00eb nd\u00ebrtim q\u00eb p\u00ebrmban nj\u00eb grup klasash p\u00ebr krijimin e rregullave dhe sekuencave t\u00eb validimit. Shum\u00eb e leverdishme p\u00ebr implementimin e validimit domenal, pasi lejon p\u00ebrshkrimin e \u00e7do kushti t\u00eb biznesit si nj\u00eb rregull t\u00eb thjesht\u00eb dhe t\u00eb ve\u00e7ant\u00eb. <\/p>\n<p><\/p>\n<h4>ViennaNET.Redis<\/h4>\n<p><\/p>\n<p>Bibliotek\u00eb me mb\u00ebshtjellje p\u00ebr pun\u00eb t\u00eb leht\u00eb me Redis si nj\u00eb cache n\u00eb memories.<\/p>\n<p><\/p>\n<h4>ViennaNET.Specifications<\/h4>\n<p><\/p>\n<p>K\u00ebtu \u00ebsht\u00eb nj\u00eb nd\u00ebrtim q\u00eb p\u00ebrmban klasa q\u00eb implementojn\u00eb modelin 'Specifikation'.<\/p>\n<p><\/p>\n<p>Kjo nuk \u00ebsht\u00eb gjith\u00e7ka q\u00eb kemi n\u00eb paket\u00ebn ton\u00eb. T\u00eb tjera mund t\u00eb shihen <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Raiffeisen-DGTL\/ViennaNET\">n\u00eb depozit\u00ebn e GitHub<\/a><\/noindex>. Shpejt pritet q\u00eb bibliotekat tona p\u00ebr pun\u00ebn me bazat e t\u00eb dh\u00ebnave t\u00eb dalin n\u00eb OpenSource.<\/p>\n<p><\/p>\n<p>Faleminderit p\u00ebr v\u00ebmendjen, presim komentet dhe pull request-et tuaja.<\/p>\n<p>Burimi: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/raiffeisenbank\/blog\/494830\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041c\u044b \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e .NET-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0420\u0430\u0439\u0444\u0444\u0430\u0439\u0437\u0435\u043d\u0431\u0430\u043d\u043a\u0430 \u0438 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e \u043d\u0430\u0431\u043e\u0440 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u044b\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u043d\u0430 .NET Core \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0441 \u0435\u0434\u0438\u043d\u043e\u0439 \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439. \u0412\u044b\u0432\u0435\u043b\u0438 \u0435\u0433\u043e \u0432 Open Source! \u041d\u0435\u043c\u043d\u043e\u0433\u043e \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u041a\u043e\u0433\u0434\u0430-\u0442\u043e \u0443 \u043d\u0430\u0441 \u0431\u044b\u043b \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043c\u043e\u043d\u043e\u043b\u0438\u0442\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u043b\u0441\u044f \u0432 \u043d\u0430\u0431\u043e\u0440 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 (\u043e\u0431 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044f\u0445 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435). \u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":92434,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-92433","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041c\u044b \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e .NET-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0420\u0430\u0439\u0444\u0444\u0430\u0439\u0437\u0435\u043d\u0431\u0430\u043d\u043a\u0430 \u0438 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e \u043d\u0430\u0431\u043e\u0440 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u044b\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u043d\u0430 .NET Core \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0441 \u0435\u0434\u0438\u043d\u043e\u0439 \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/viennanet-nabor-bibliotek-dlya-backenda\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"sq_AL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47ViennaNET: \u043d\u0430\u0431\u043e\u0440 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0434\u043b\u044f backend\u2019\u0430 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041c\u044b \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e .NET-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0420\u0430\u0439\u0444\u0444\u0430\u0439\u0437\u0435\u043d\u0431\u0430\u043d\u043a\u0430 \u0438 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e \u043d\u0430\u0431\u043e\u0440 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u044b\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u043d\u0430 .NET Core \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0441 \u0435\u0434\u0438\u043d\u043e\u0439 \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/viennanet-nabor-bibliotek-dlya-backenda\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-08-27T05:42:01+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-08-27T05:42:01+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47ViennaNET: grup bibliotekash p\u00ebr backend-in | ProHoster","description":"P\u00ebrsh\u00ebndetje t\u00eb gjith\u00ebve! Ne jemi nj\u00eb komunitet zhvilluesish .NET t\u00eb Raiffeisen Bank dhe d\u00ebshirojm\u00eb t\u00eb flasim p\u00ebr nj\u00eb grup bibliotekash infrastrukturore n\u00eb .NET Core p\u00ebr krijimin e shpejt\u00eb t\u00eb mikrosh\u00ebrbimeve me nj\u00eb ekosistem t\u00eb p\u00ebrbashk\u00ebt.","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/viennanet-nabor-bibliotek-dlya-backenda","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sq_AL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47ViennaNET: \u043d\u0430\u0431\u043e\u0440 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0434\u043b\u044f backend\u2019\u0430 | ProHoster","og:description":"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041c\u044b \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e .NET-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0420\u0430\u0439\u0444\u0444\u0430\u0439\u0437\u0435\u043d\u0431\u0430\u043d\u043a\u0430 \u0438 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e \u043d\u0430\u0431\u043e\u0440 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u044b\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u043d\u0430 .NET Core \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0441 \u0435\u0434\u0438\u043d\u043e\u0439 \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439.","og:url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/viennanet-nabor-bibliotek-dlya-backenda","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-08-27T05:42:01+00:00","article:modified_time":"2020-08-27T05:42:01+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"92433","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 12:08:24","updated":"2022-10-03 07:52:44","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/92433","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/comments?post=92433"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/92433\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media\/92434"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=92433"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=92433"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=92433"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}