{"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\/de\/blog\/administrirovanie\/viennanet-nabor-bibliotek-dlya-backenda","title":{"rendered":"ViennaNET: Bibliothekenset f\u00fcr Backend","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Hallo zusammen!<\/p>\n<p><\/p>\n<p>Wir sind die .NET-Entwicklergemeinschaft der Raiffeisenbank und m\u00f6chten \u00fcber eine Sammlung von Infrastruktur-Bibliotheken auf .NET Core berichten, die die schnelle Erstellung von Mikrodiensten mit einem einheitlichen \u00d6kosystem erm\u00f6glichen. Wir haben sie als Open Source ver\u00f6ffentlicht! <\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/raiffeisenbank\/blog\/494830\/\"><img decoding=\"async\" alt=\"ViennaNET: Bibliothekenset f\u00fcr Backend\" 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>Ein wenig Geschichte<\/h3>\n<p><\/p>\n<p>Fr\u00fcher hatten wir ein gro\u00dfes monolithisches Projekt, das sich nach und nach in eine Sammlung von Mikrodiensten verwandelte (mehr \u00fcber die Besonderheiten dieses Prozesses kann man lesen in <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/raiffeisenbank\/blog\/458404\/\">diesem Artikel<\/a><\/noindex>). Im Verlauf stie\u00dfen wir auf das Problem, dass wir beim Erstellen neuer Mikrodienste oft verschiedene infrastrukturelle L\u00f6sungen kopieren mussten \u2013 etwa die Konfiguration des Loggings, den Umgang mit Datenbanken, WCF usw. An diesem Projekt arbeitete ein Team, und alle waren bereits an einen bestimmten etablierten Ansatz zur Arbeit mit der Infrastruktur gew\u00f6hnt. Daher haben wir den gemeinsamen Code in ein separates Repository ausgegliedert, die gesammelten Bibliotheken in Nuget-Pakete verpackt und in unser internes Nuget-Repository eingestellt.<\/p>\n<p><\/p>\n<p>Die Zeit verging, das Projekt wurde nach und nach zersplittert, es gab den Wunsch, neue Module der Client-Seite mit einem modernen Js-Framework zu erstellen und sie im Browser auszuf\u00fchren. Wir begannen, von WCF\/SOAP auf REST\/HTTP umzusteigen, weshalb wir neue Bibliotheken ben\u00f6tigten, um Dienste basierend auf AspNet WebApi schnell zu starten. Die erste Version auf .Net Framework 4.5 wurde von unserem Architekten quasi im Alleingang in seiner Freizeit erstellt, aber sie erlaubte bereits 'Out of the Box', mit drei Zeilen in Program.cs einen Dienst zu starten, der die Authentifizierung (NTLM), Logging, Swagger, IoC\/DI auf Basis von Castle Windsor, konfigurierte HTTP-Clients, die verschiedene Header f\u00fcr eine durchg\u00e4ngige Protokollierung im gesamten Projekt weiterleiteten, enthielt. Und all dies konnte auch zus\u00e4tzlich direkt in der Konfigurationsdatei des Dienstes konfiguriert werden.<\/p>\n<p><\/p>\n<p>Allerdings war nicht alles reibungslos: Diese Bibliothek war \u00e4u\u00dferst unflexibel bei der Einf\u00fchrung neuer Module. Beispielsweise musste, wenn ein spezielles Middleware hinzugef\u00fcgt werden sollte, eine neue Assembly erstellt und von der Basisklasse, die den Dienst startete, abgeleitet werden, was \u00e4u\u00dferst unpraktisch war. Gl\u00fccklicherweise gab es nicht allzu viele solcher F\u00e4lle.<\/p>\n<p><\/p>\n<h3>Das Zeitalter von Docker und Kubernetes<\/h3>\n<p><\/p>\n<p>Es kam die Zeit, als auch wir von der Welle von Docker und Kubernetes erreicht wurden, die wir aufmerksam verfolgt haben: es war eine gro\u00dfartige Gelegenheit, den technologischen Fortschritt in .Net Core voranzutreiben. Das bedeutet, dass wir eine neue Infrastruktur f\u00fcr den Betrieb von Services ben\u00f6tigen: ein Teil der Bibliotheken wurde praktisch unver\u00e4ndert von .Net Framework auf .Net Standard und .Net Core \u00fcbertragen, ein anderer Teil mit kleinen Verbesserungen. Am meisten wollten wir die Funktionen, die mit dem Start von Services in AspNet Core verbunden sind, \u00fcberarbeiten.<\/p>\n<p><\/p>\n<p>An erster Stelle stand das Konzept, das den gro\u00dfen Nachteil der vorherigen Version beseitigen sollte: fehlende Flexibilit\u00e4t. Daher wurde beschlossen, das gesamte System von Bibliotheken so unabh\u00e4ngig und modular wie m\u00f6glich zu gestalten und die erforderlichen Services wie ein Baukasten zusammenzustellen.<\/p>\n<p><\/p>\n<p>Das Hauptziel ist es, einen einheitlichen Ansatz zu schaffen, der beschreibt, wie man mit Datenbanken, Bus-Systemen und anderen Services interagiert. Wir haben darauf geachtet, dass die Integrationen schnell und schmerzfrei sind, sodass sich die Entwickler auf die Erstellung der Gesch\u00e4ftslogik und nicht auf die Infrastruktur konzentrieren k\u00f6nnen \u2013 diese ist bereits bereit. Das gemeinsame Repository tr\u00e4gt dazu bei, die Erfahrungen der Teammitglieder zu verbessern: Wenn sehr \u00e4hnliche interne Infrastrukturen verwendet werden, ist es einfacher, sich in den Entwicklungsprozess eines anderen Teams einzufinden und Fachwissen auszutauschen.<\/p>\n<p><\/p>\n<h3>Und warum brauchen wir Open Source?<\/h3>\n<p><\/p>\n<p>Wir m\u00f6chten die Reife unserer Expertise zeigen und qualitativ hochwertiges Feedback erhalten: Eine Person von au\u00dferhalb der Bank wird etwas Eigenes einbringen k\u00f6nnen. Au\u00dferdem interessiert uns die Weiterentwicklung von Praktiken im Umgang mit Mikrodiensten und DDD im .NET Bereich in der Industrie \u2013 m\u00f6glicherweise m\u00f6chte jemand bestimmte Teile des Frameworks \u00fcbernehmen. <\/p>\n<p><\/p>\n<h3>Genau genommen, ViennaNET<\/h3>\n<p><\/p>\n<p>Schauen wir uns das nun genauer an. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Raiffeisen-DGTL\/ViennaNET\">Den vollst\u00e4ndigen Quellcode haben wir hier abgelegt<\/a><\/noindex>. <\/p>\n<p><\/p>\n<h4>ViennaNET.WebApi.*<\/h4>\n<p><\/p>\n<p>Dieses Bibliothekspaket besteht aus dem \u201eWurzel\u201c-Element von ViennaNET.WebApi, das eine Builder-Klasse f\u00fcr den Service CompanyHostBuilder enth\u00e4lt, sowie einer Reihe von Konfiguratoren ViennaNET.WebApi.Configurators.*, von denen jeder es erm\u00f6glicht, bestimmte Funktionen zum erstellten Service hinzuzuf\u00fcgen und zu konfigurieren. Unter den Konfiguratoren finden Sie die Anbindung von Logging, Diagnostik, Authentifizierungs- und Autorisierungsarten, Swagger usw.<\/p>\n<p><\/p>\n<p>Hier enth\u00e4lt ViennaNET.WebApi.Runners.* vorkonfigurierte Service-Builder. Diese Pakete erm\u00f6glichen es, sich nicht jedes Mal daran zu erinnern, welche Konfiguratoren beim Erstellen eines neuen Dienstes eingebunden werden m\u00fcssen. Dabei schr\u00e4nken sie die Funktionalit\u00e4t des Service-Builders in keinster Weise ein.<\/p>\n<p><\/p>\n<h4>ViennaNET.Mediator.*<\/h4>\n<p><\/p>\n<p>Bibliotheken, die es erm\u00f6glichen, einen internen Mediatortyp f\u00fcr Befehle und Anfragen innerhalb des Dienstes zu erstellen. Dieser Ansatz reduziert die Anzahl der DI-Injektionen auf bis zu eine, zum Beispiel in Controllern. Dadurch k\u00f6nnen verschiedene Dekoratoren zu Anfragen hinzugef\u00fcgt werden, was deren Verarbeitung vereinheitlicht und den Code reduziert. <\/p>\n<p><\/p>\n<h4>ViennaNET.Validation<\/h4>\n<p><\/p>\n<p>Eine Assembly, die eine Reihe von Klassen zur Erstellung von Validierungsregeln und Sequenzen dieser Regeln enth\u00e4lt. Sehr n\u00fctzlich f\u00fcr die Implementierung von Dom\u00e4nenvalidierungen, da es erm\u00f6glicht, jede Gesch\u00e4ftsbedingung als einfache und separate Regel zu beschreiben. <\/p>\n<p><\/p>\n<h4>ViennaNET.Redis<\/h4>\n<p><\/p>\n<p>Eine Bibliothek mit Wrappern, die eine bequeme Arbeit mit Redis als In-Memory-Cache erm\u00f6glicht.<\/p>\n<p><\/p>\n<h4>ViennaNET.Specifications<\/h4>\n<p><\/p>\n<p>Eine Assembly, die Klassen enth\u00e4lt, die das Muster \u201eSpezifikation\u201c implementieren.<\/p>\n<p><\/p>\n<p>Das ist noch lange nicht alles, was unser Paket zu bieten hat. Weitere Informationen finden Sie <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Raiffeisen-DGTL\/ViennaNET\">im Repository auf GitHub<\/a><\/noindex>. Bald planen wir die Ver\u00f6ffentlichung unserer Bibliotheken f\u00fcr die Arbeit mit Datenbanken als OpenSource.<\/p>\n<p><\/p>\n<p>Danke f\u00fcr Ihre Aufmerksamkeit, wir freuen uns auf Ihre Kommentare und Pull Requests.<\/p>\n<p>Quelle: <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.1.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\/de\/blog\/administrirovanie\/viennanet-nabor-bibliotek-dlya-backenda\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\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\/de\/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: Bibliotheken f\u00fcr das Backend | ProHoster","description":"Hallo zusammen! Wir sind die .NET-Entwicklergemeinschaft der Raiffeisenbank und m\u00f6chten Ihnen eine Reihe von Infrastruktur-Bibliotheken auf .NET Core vorstellen, die eine schnelle Erstellung von Microservices mit einem einheitlichen \u00d6kosystem erm\u00f6glichen.","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/viennanet-nabor-bibliotek-dlya-backenda","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","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\/de\/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\/de\/wp-json\/wp\/v2\/posts\/92433","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=92433"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/92433\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/92434"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=92433"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=92433"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=92433"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}