{"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 koleksion 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 i zhvilluesve .NET n\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 mikroserviseve me nj\u00eb ekosistem t\u00eb vet\u00ebm. E kemi b\u00ebr\u00eb at\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 koleksion 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>Kur dikur kishim nj\u00eb projekt t\u00eb madh monolitik, i cili gradualisht po shnd\u00ebrrohej n\u00eb nj\u00eb grup mikroservisesh (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\u00ebto artikuj<\/a><\/noindex>). Gjat\u00eb procesit, u p\u00ebrball\u00ebm me problem q\u00eb, kur krijonim mikroservise t\u00eb reja, shpesh na duhej t\u00eb kopjonim zgjidhje t\u00eb ndryshme infrastrukturore \u2013 si\u00e7 jan\u00eb konfigurimi i regjistrimit, puna me Baza t\u00eb Dh\u00ebnash, WCF etj. Ky projekt ishte punuar nga nj\u00eb ekip i vet\u00ebm, dhe t\u00eb gjith\u00eb ishin m\u00ebsuar me nj\u00eb qasje t\u00eb caktuar p\u00ebr pun\u00ebn me infrastruktur\u00ebn. Prandaj, ne e ndam\u00eb kodin e p\u00ebrbashk\u00ebt n\u00eb nj\u00eb depo t\u00eb ve\u00e7ant\u00eb, bibliotekat e mbledhura i b\u00ebm\u00eb n\u00eb paketa Nuget dhe i vendos\u00ebm n\u00eb depo ton\u00eb t\u00eb brendshme Nuget.<\/p>\n<p><\/p>\n<p>Koha kalonte, projekti po cop\u00ebtohej, dhe shfaqej d\u00ebshira p\u00ebr t\u00eb krijuar module t\u00eb reja t\u00eb pjes\u00ebs frontale me nj\u00eb framework modern Js dhe p\u00ebr t'i lan\u00e7uar ato n\u00eb shfletues. Filluam t\u00eb kalojm\u00eb nga WCF\/SOAP n\u00eb REST\/HTTP, prandaj na duhej bibliotek\u00eb t\u00eb re p\u00ebr lan\u00e7imin e shpejt\u00eb t\u00eb sh\u00ebrbimeve t\u00eb bazuara n\u00eb AspNet WebApi. Versioni i par\u00eb n\u00eb .Net Framework 4.5 u realizua nga arkitekti yn\u00eb n\u00eb nj\u00eb koh\u00eb t\u00eb lir\u00eb, por ai tashm\u00eb nga kutia lejonte q\u00eb me tri rreshta n\u00eb Program.cs t\u00eb lanconim nj\u00eb sh\u00ebrbim, i cili p\u00ebrmbante autorizimin (NTLM), regjistrimin, Swagger, IoC\/DI t\u00eb bazuar n\u00eb Castle Windsor, klient\u00ebt HTTP t\u00eb konfiguruar, q\u00eb kalonin t\u00eb dh\u00ebna t\u00eb ndryshme p\u00ebr sigurimin e regjistrimit t\u00eb plot\u00eb n\u00eb t\u00eb gjith\u00eb projektin. Dhe e gjith\u00eb kjo mund t\u00eb konfigurohej m\u00eb tej n\u00eb dosjen e konfigurimit t\u00eb sh\u00ebrbimit.<\/p>\n<p><\/p>\n<p>Megjithat\u00eb, nuk ishte gjith\u00e7ka pa probleme: kjo bibliotek\u00eb doli t\u00eb ishte jasht\u00ebzakonisht e ngurt\u00eb p\u00ebr implementimin e moduleve t\u00eb reja. P\u00ebr shembull, n\u00ebse duheshin shtuar ndonj\u00eb middleware t\u00eb ve\u00e7ant\u00eb, duhej t\u00eb krijonim nj\u00eb n\u00ebpak dhe t\u00eb trash\u00ebgonim nga klasa themelore q\u00eb lan\u00e7onte sh\u00ebrbimin, q\u00eb ishte jasht\u00ebzakonisht e pamundur. Fatmir\u00ebsisht, raste t\u00eb tilla ishin mjaft t\u00eb pakta.<\/p>\n<p><\/p>\n<h3>Epoka e Docker dhe Kubernetes<\/h3>\n<p><\/p>\n<p>Ka ardhur koha kur edhe ne u godit\u00ebm nga val\u00eb e Docker dhe Kubernetes, pas s\u00eb cil\u00ebs ne vum\u00eb v\u00ebrejtjen: ishte nj\u00eb mund\u00ebsi e shk\u00eblqyer p\u00ebr t\u00eb vazhduar me teknologjit\u00eb m\u00eb tej, n\u00eb .Net Core. K\u00ebshtu q\u00eb do t\u00eb na nevojitej nj\u00eb infrastruktur\u00eb e re p\u00ebr t\u00eb nisur sh\u00ebrbimet: nj\u00eb pjes\u00eb e 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 d\u00ebshironim t\u00eb ripunonim funksionalitetin e lidhur me nisjen e sh\u00ebrbimeve n\u00eb AspNet Core.<\/p>\n<p><\/p>\n<p>Hapi i par\u00eb ishte shqyrtimi i konceptit q\u00eb do t\u00eb eliminoj\u00eb mang\u00ebsin\u00eb kryesore t\u00eb versionit t\u00eb m\u00ebparsh\u00ebm: mungesa e fleksibilitetit. Prandaj, u vendos q\u00eb t\u00eb b\u00ebhet e gjith\u00eb sistemi i bibliotekave sa m\u00eb t\u00eb pavarura dhe modulare dhe t\u00eb grumbullohen sh\u00ebrbimet e nevojshme si nd\u00ebrtues.<\/p>\n<p><\/p>\n<p>Q\u00ebllimi kryesor \u00ebsht\u00eb krijimi i nj\u00eb qasje t\u00eb unifikuar q\u00eb p\u00ebrshkruan se si t\u00eb bashk\u00ebveprohet me bazat e t\u00eb dh\u00ebnave, autobus\u00ebt dhe sh\u00ebrbimet e tjera. Ne u p\u00ebrpoq\u00ebm q\u00eb integrimet t\u00eb ishin t\u00eb shpejta dhe pa dhembje, n\u00eb m\u00ebnyr\u00eb q\u00eb zhvilluesit t\u00eb mund t\u00eb p\u00ebrqendrohen n\u00eb shkrimin e logjik\u00ebs biznesore dhe jo t\u00eb infrastruktur\u00ebs - ajo tashm\u00eb \u00ebsht\u00eb e gatshme. Repository i p\u00ebrgjithsh\u00ebm ndihmon n\u00eb p\u00ebrmir\u00ebsimin e p\u00ebrvoj\u00ebs s\u00eb bashk\u00ebveprimit brenda grupeve: 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 ndash ekspertiz\u00ebn.<\/p>\n<p><\/p>\n<h3>Dhe p\u00ebrse na duhet Open Source?<\/h3>\n<p><\/p>\n<p>Ne duam t\u00eb tregojm\u00eb pjekurin\u00eb e ekspertiz\u00ebs dhe t\u00eb marrim reagime cil\u00ebsore: nj\u00eb person q\u00eb ndodhet jasht\u00eb bank\u00ebs, do t\u00eb mund t\u00eb sjell\u00eb di\u00e7ka nga vetja. Po ashtu, na intereson zhvillimi i praktikave t\u00eb pun\u00ebs me mikrosh\u00ebrbimet 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 korniz\u00ebs p\u00ebr veten. <\/p>\n<p><\/p>\n<h3>Pik\u00ebrisht, ViennaNET<\/h3>\n<p><\/p>\n<p>Tani le t\u00eb shqyrtojm\u00eb gjith\u00e7ka m\u00eb n\u00eb detaje. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Raiffeisen-DGTL\/ViennaNET\">Kodi i plot\u00eb burimor \u00ebsht\u00eb vendosur k\u00ebtu<\/a><\/noindex>. <\/p>\n<p><\/p>\n<h4>ViennaNET.WebApi.*<\/h4>\n<p><\/p>\n<p>Ky set bibliotekash konsiston n\u00eb \"rr\u00ebnj\u00ebn\" ViennaNET.WebApi, q\u00eb p\u00ebrmban nj\u00eb klas\u00eb nd\u00ebrtuese p\u00ebr sh\u00ebrbimin CompanyHostBuilder, dhe nj\u00eb grup konfiguruesish ViennaNET.WebApi.Configurators.*, secili prej t\u00eb cil\u00ebve lejon shtimin dhe konfigurimin e ndonj\u00eb funksionaliteti n\u00eb sh\u00ebrbimin n\u00eb krijim. N\u00eb mesin e konfiguruesve mund t\u00eb gjeni lidhje t\u00eb logjistik\u00ebs, diagnostik\u00ebs, llojit t\u00eb identifikimit dhe autorizimit, swagger-it etj.<\/p>\n<p><\/p>\n<p>ViennaNET.WebApi.Runners.* p\u00ebrmban nd\u00ebrtues sh\u00ebrbimesh t\u00eb parakonfiguruar. K\u00ebto paketa lejojn\u00eb q\u00eb t\u00eb mos p\u00ebrmendni \u00e7do her\u00eb, kur krijoni nj\u00eb sh\u00ebrbim t\u00eb ri, cilat konfigurues duhet t\u00eb lidhen. Ato nuk kufizojn\u00eb askund funksionalitetin e nd\u00ebrtuesit 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 autobusi t\u00eb brendsh\u00ebm p\u00ebr komanda dhe k\u00ebrkesa brenda sh\u00ebrbimit. Ky qasje lejon t\u00eb zvog\u00ebloni numrin e injeksioneve DI n\u00eb nj\u00eb, p\u00ebr shembull, n\u00eb kontrollet. K\u00ebshtu, mund t\u00eb shtoni dekorator\u00eb t\u00eb ndrysh\u00ebm p\u00ebr k\u00ebrkesat, q\u00eb unifikon trajtimin e tyre dhe zvog\u00eblon sasin\u00eb e kodit. <\/p>\n<p><\/p>\n<h4>ViennaNET.Validation<\/h4>\n<p><\/p>\n<p>Paketa q\u00eb p\u00ebrmban nj\u00eb grup klasash p\u00ebr krijimin e rregullave dhe sekuencave t\u00eb validimit. Shum\u00eb e p\u00ebrshtatshme p\u00ebr realizimin e validimit vendas, pasi lejon p\u00ebrshkrimin e \u00e7do kushti biznesi 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\u00ebshtjell\u00ebs p\u00ebr pun\u00eb t\u00eb leht\u00eb me Redis si nj\u00eb cache n\u00eb memorie.<\/p>\n<p><\/p>\n<h4>ViennaNET.Specifications<\/h4>\n<p><\/p>\n<p>Paketa q\u00eb p\u00ebrmban klasat q\u00eb realizojn\u00eb modelin \"Specifikimi\".<\/p>\n<p><\/p>\n<p>Kjo nuk \u00ebsht\u00eb gjith\u00e7ka q\u00eb kemi n\u00eb grupin ton\u00eb. Mund t\u00eb shikoni pjes\u00ebn tjet\u00ebr <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Raiffeisen-DGTL\/ViennaNET\">n\u00eb depozitarin ton\u00eb n\u00eb GitHub<\/a><\/noindex>. Shpejt planifikohet dalja n\u00eb OpenSource e bibliotekave tona p\u00ebr pun\u00eb me bazat e t\u00eb dh\u00ebnave.<\/p>\n<p><\/p>\n<p>Faleminderit p\u00ebr v\u00ebmendjen, presim komentet dhe k\u00ebrkesat tuaja p\u00ebr bashk\u00ebpunim.<\/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.2 - 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.2\" \/>\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 komuniteti i zhvilluesve .NET t\u00eb Raiffeisen Bank dhe duam t\u00eb tregojm\u00eb p\u00ebr grupin e bibliotekave infrastrukturor\u00eb n\u00eb .NET Core p\u00ebr krijimin e shpejt\u00eb t\u00eb mikros\u00ebrbimeve me nj\u00eb ekosistem t\u00eb bashkuar.","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}]}}