{"id":32475,"date":"2019-10-31T21:47:15","date_gmt":"2019-10-31T18:47:15","guid":{"rendered":"https:\/\/prohoster.info\/blog\/platforma-1s-predpriyatie-chto-pod-kapotom\/"},"modified":"2019-10-31T21:47:15","modified_gmt":"2019-10-31T18:47:15","slug":"platforma-1s-predpriyatie-chto-pod-kapotom","status":"publish","type":"post","link":"https:\/\/prohoster.info\/nl\/blog\/administrirovanie\/platforma-1s-predpriyatie-chto-pod-kapotom","title":{"rendered":"Het platform '1C: Enterprise' \u2013 wat zit er onder de motorkap?","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Hallo, Habr! <br \/>\nIn dit artikel beginnen we met het verhaal over hoe binnen <noindex><a rel=\"nofollow\" href=\"http:\/\/v8.1c.ru\/overview\/Platform.htm\">het platform '1C:Enterprise 8'<\/a><\/noindex> is opgebouwd en welke technologie\u00ebn worden gebruikt bij de ontwikkeling.<\/p>\n<p><img decoding=\"async\" alt=\"Het platform &#039;1C: Enterprise&#039; \u2013 wat zit er onder de motorkap?\" src=\"\/wp-content\/uploads\/2019\/04\/9375ea3be32979a7d8c72239dfd50f07.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nWaarom denken we dat dit interessant is? Ten eerste omdat het platform '1C:Enterprise 8' een grote (meer dan 10 miljoen regels code) toepassing is in C++ (client, server, enz.), JavaScript (webclient), en, sinds kort, ook <noindex><a rel=\"nofollow\" href=\"http:\/\/www.1c.ru\/news\/info.jsp?id=19821\">Java<\/a><\/noindex>. Grote projecten zijn al interessant vanwege hun omvang, want vragen die onopgemerkt blijven in een kleinere codebasis, komen in zulke projecten volledig naar voren. Ten tweede is '1C:Enterprise' een gerepliceerd, 'doos' product, en er zijn heel weinig artikelen over dergelijke ontwikkelingen op Habr. Het is ook altijd interessant om te ontdekken hoe andere teams en bedrijven functioneren.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nLaten we beginnen. In dit artikel geven we een overzicht van enkele technologie\u00ebn die in het platform worden gebruikt en schetsen we het landschap, zonder diep in de implementatie te duiken. Voor veel mechanismen zou een gedetailleerd verhaal genoeg stof opleveren voor een apart artikel, en voor sommige zelfs voor een heel boek!<br \/>\nLaten we eerst de basiszaken vaststellen \u2014 wat is het platform '1C:Enterprise' en uit welke componenten bestaat het? Het antwoord op deze vraag is niet zo eenvoudig, want onder de term 'Platform' (voor de kortheid zullen we het zo noemen) worden zowel de ontwikkeltools voor zakelijke applicaties, de uitvoeringsomgeving als de administratietools verstaan. We kunnen grofweg de volgende onderdelen onderscheiden:<\/p>\n<ul>\n<li>cluster van servers<\/li>\n<li>'dunne' client die verbinding kan maken met de server via http en een eigen binaire protocol<\/li>\n<li>client voor werken in een tweelaagse architectuur met een database op een harde schijf of netwerkmmap<\/li>\n<li>webclient<\/li>\n<li>administratietools voor de applicatieserver<\/li>\n<li>ontwikkelomgeving (bekend als de Configurator)<\/li>\n<li>uitvoeringsomgeving voor iOS, Android en Windows Phone (mobiele platform 1C)<\/li>\n<\/ul>\n<p>\nAl deze delen, met uitzondering van de webclient, zijn geschreven in C++. Bovendien is er onlangs aangekondigd <noindex><a rel=\"nofollow\" href=\"http:\/\/www.1c.ru\/news\/info.jsp?id=19821\">Configurators van de volgende generatie<\/a><\/noindex>, geschreven in Java.<\/p>\n<h3>Natuurlijke applicaties<\/h3>\n<p>\nVoor de ontwikkeling van native applicaties wordt C++03 gebruikt. Onder Windows wordt Microsoft Visual C++ 12 (profiel compatibel met Windows XP) als compiler gebruikt, en onder Linux en Android wordt gcc 4.8 gebruikt, voor iOS is dat clang 5.0. De standaardbibliotheek is dezelfde voor alle besturingssystemen en compilers \u2014 STLPort. Deze oplossing vermindert de kans op fouten die specifiek zijn voor de implementatie van STL. Momenteel zijn we van plan over te schakelen op de STL-implementatie die met CLang wordt geleverd, omdat STLPort zijn ontwikkeling heeft stopgezet en niet compatibel is met de ingeschakelde C++11-ondersteuning in gcc.<br \/>\nDe codebase van de server is daarbij voor 99% gemeenschappelijk, die van de client voor ongeveer 95%. Bovendien gebruikt zelfs het mobiele platform dezelfde C++ code als de 'grote' versie, hoewel de mate van unificatie daar iets lager is. <br \/>\nNet als de meeste C++ gebruikers claimen wij niet 100% van de mogelijkheden van de taal en zijn bibliotheken te gebruiken. Zo maken we praktisch geen gebruik van Boost, en wat de taal betreft, zijn dynamische typeconversies nauwelijks aanwezig. We maken echter actief gebruik van:<\/p>\n<ul>\n<li>STL (in het bijzonder, strings, containers en algoritmen)<\/li>\n<li>meervoudige overerving, inclusief meervoudige implementatie-erfenis<\/li>\n<li>sjablonen<\/li>\n<li>uitzonderingen.<\/li>\n<li>slimme pointers (eigen implementatie)<\/li>\n<\/ul>\n<p>\nDoor gebruik te maken van meervoudige interface-erfenis (volledig abstracte klassen) wordt een componentmodel mogelijk, waar we later op terugkomen.<\/p>\n<h3>Componenten<\/h3>\n<p>\nVoor het waarborgen van modulariteit is alle functionaliteit verdeeld in componenten, die zich in dynamische bibliotheken bevinden (*.dll voor Windows, *.so voor Linux). In totaal zijn er meer dan eenhonderd componenten, hieronder volgen beschrijvingen van enkele daarvan:<\/p>\n<p>backend<br \/>\nBevat de 'engine' voor metadata van het platform<\/p>\n<p>accnt<br \/>\nObjecten die toepassingsontwikkelaars gebruiken voor het opbouwen van boekhouding (rekeningenplannen en boekhoudregisters)<\/p>\n<p>bsl<br \/>\nEngine voor de uitvoering van de ingebouwde taal<\/p>\n<p>nuke<br \/>\nEigen implementatie van een geheugentoewijzer<\/p>\n<p>dbeng8<br \/>\nEngine voor bestandsdatabases. Een eenvoudige file-server database machine, gebaseerd op ISAM, inclusief een eenvoudige SQL-processor<\/p>\n<p>wbase<br \/>\nBevat basis klassen en functies voor de implementatie van gebruikersinterfaces in Windows \u2014 vensterklassen, toegang tot GDI, enzovoort.<\/p>\n<p>\nDe opsplitsing in meerdere componenten is vanuit verschillende hoeken nuttig:<\/p>\n<ul>\n<li>Opsplitsing bevordert beter ontwerp, in het bijzonder betere isolatie van code<\/li>\n<li>Met de set componenten kunnen verschillende leveringsvarianten flexibel worden samengesteld:\n<ul>\n<li>Bijvoorbeeld, de installatie van de thin client bevat wbase, maar niet de backend<\/li>\n<li>en op de server is wbase daarentegen niet aanwezig.<\/li>\n<li>Beide varianten bevatten natuurlijk nuke en bsl.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>\nAlle benodigde componenten voor deze opstartvariant worden bij het opstarten van het programma geladen. Dit is vooral nodig voor de registratie van SCOM-klassen, waarover hieronder meer zal worden gezegd.<\/p>\n<h3>SCOM<\/h3>\n<p>\nVoor decompositie op een lager niveau wordt het SCOM-systeem gebruikt \u2014 vergelijkbaar in idee met de ATL-bibliotheek. Voor degenen die niet met ATL hebben gewerkt, worden de belangrijkste mogelijkheden en kenmerken kort opgesomd. <br \/>\nVoor speciaal ontworpen SCOM-klassen:<\/p>\n<ul>\n<li>Biedt fabrieksmethoden waarmee een klasse uit een andere component kan worden gemaakt, alleen wetende wat de naam is (zonder de implementatie bekend te maken).<\/li>\n<li>Biedt infrastructuur voor slimme pointers met referentietelling. De levensduur van de SCOM-klasse hoeft niet handmatig te worden beheerd.<\/li>\n<li>Maakt het mogelijk om te bepalen of een object een specifieke interface implementeert en de pointer naar het object automatisch om te zetten naar een pointer naar de interface.<\/li>\n<li>Cre\u00eber een service-object dat altijd beschikbaar is via de methode get_service, enz.<\/li>\n<\/ul>\n<p>\nBijvoorbeeld, in de component json.dll kan een klasse worden beschreven voor het lezen van JSON (bijvoorbeeld, JSONStreamReader).<br \/>\nKlassen, instanties kunnen worden gemaakt uit andere componenten die in de SCOM-machine moeten worden geregistreerd:<\/p>\n<pre><code class=\"cpp\">SCOM_CLASS_ENTRY(JSONStreamReader)\n<\/code><\/pre>\n<p>\nDeze macro beschrijft een speciale statische registrerende klasse, waarvan de constructor zal worden opgeroepen bij het laden van de component in het geheugen.<br \/>\nDaarna kan een exemplaar in een andere component worden gemaakt:<\/p>\n<pre><code class=\"cpp\">IJSONStreamReaderPtr jsonReader = create_instance&lt;IJSONStreamReader&gt;(SCOM_CLSIDOF(JSONStreamReader));\n<\/code><\/pre>\n<p>\nVoor de ondersteuning van services biedt SCOM een aanvullende, vrij complexe infrastructuur. Centraal hierin staat het concept van een SCOM-proces, dat als container dient voor de actieve services (dat wil zeggen, fungeert als Service Locator), en bevat ook de binding aan lokaal te vertalen bronnen. Het SCOM-proces is aan een OS-thread gebonden. Hierdoor kunnen binnen de applicatie services als volgt worden verkregen:<\/p>\n<pre><code class=\"cpp\">SCOM_Process* process = core::current_process();\nif (process)\n         return get_service&lt;IMyService&gt;(process);\n<\/code><\/pre>\n<p>\nBovendien kan door de logische (SCOM) processen die aan de stroom zijn gekoppeld om te schakelen, bijna onafhankelijke applicaties worden verkregen vanuit het perspectief van de informatieve ruimte, operationeel binnen \u00e9\u00e9n stroom. Dit is hoe onze dunne cli\u00ebnt is opgezet, die werkt met een bestandssysteem \u2014 binnen \u00e9\u00e9n OS-proces zijn er twee SCOM-processen, \u00e9\u00e9n voor de cli\u00ebnt en de tweede voor de server. Deze aanpak maakt het mogelijk om de codering te uniformiseren, zodat deze zowel op de lokale bestandssysteem als in de 'echte' cli\u00ebnt-server variant werkt. De prijs voor deze uniformiteit zijn de overheadkosten, maar de praktijk toont aan dat ze de moeite waard zijn.<\/p>\n<p>Op basis van het componentmodel is zowel de bedrijfslogica als de interface van 1C:Enterprise gerealiseerd.<\/p>\n<h3>Gebruikersinterface<\/h3>\n<p>\nOver interfaces gesproken. We gebruiken geen standaard Windows-controles, onze bedieningselementen zijn direct gebaseerd op de Windows API. Voor de Linux-versie is er een tussenlaag gemaakt die werkt via de wxWidgets-bibliotheek.<br \/>\nDe bibliotheek met bedieningselementen is onafhankelijk van andere delen van '1C:Enterprise' en wordt door ons ook gebruikt in enkele andere kleine interne tools.<\/p>\n<p>In de loop der jaren is het uiterlijk van de bedieningselementen veranderd, maar er was slechts \u00e9\u00e9n serieuze verandering van principes, in 2009, met de release van versie 8.2 en de introductie van 'managed forms'. Naast de verandering in uiterlijk is het principe van het samenstellen van formulieren fundamenteel veranderd \u2014 er is een afscheid genomen van pixelprecisie bij het positioneren van elementen ten gunste van flow-structuur van elementen. Bovendien werken in het nieuwe model de bedieningselementen niet rechtstreeks met domeinobjecten, maar met speciale DTO (<noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/DTO\">Data Transfer Objects<\/a><\/noindex>).<br \/>\nDeze veranderingen hebben het mogelijk gemaakt om een webclient voor '1C:Enterprise' te cre\u00ebren, die de C++ logica van de bedieningselementen op JavaScript herhaalt. We proberen functionele gelijkwaardigheid te behouden tussen de dunne en de webclient. In gevallen waarin dit niet mogelijk is, bijvoorbeeld vanwege beperkingen van de beschikbare JavaScript API (zoals de beperkte mogelijkheden voor het werken met bestanden), realiseren we vaak de benodigde functionaliteit met behulp van browserextensies, geschreven in C++. Momenteel ondersteunen we Internet Explorer en Microsoft Edge (Windows), Google Chrome (Windows), Firefox (Windows en Linux) en Safari (MacOS).<\/p>\n<p>Bovendien wordt de technologie van beheerde formulieren gebruikt voor het cre\u00ebren van de interface van mobiele applicaties op het 1C-platform. Op mobiele apparaten wordt de rendering van de controls uitgevoerd met behulp van \u2018native\u2019 technologie\u00ebn voor het besturingssysteem, maar voor de logica van de formulierindeling en de reactie van de interface wordt dezelfde code gebruikt als op het \u2018grote\u2019 platform \u20181C: Enterprise\u2019.<\/p>\n<p><img decoding=\"async\" alt=\"Het platform &#039;1C: Enterprise&#039; \u2013 wat zit er onder de motorkap?\" src=\"\/wp-content\/uploads\/2019\/04\/a4a87ca99cef465e82429739a8845300.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>1C-interface op Linux<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Het platform &#039;1C: Enterprise&#039; \u2013 wat zit er onder de motorkap?\" src=\"\/wp-content\/uploads\/2019\/04\/23f48ade4e28242104bfd4e9099800e2.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>1C-interface op een mobiel apparaat<\/i><\/p>\n<p><b class=\"spoiler_title\">1C-interface op andere platforms<\/b> <img decoding=\"async\" alt=\"Het platform &#039;1C: Enterprise&#039; \u2013 wat zit er onder de motorkap?\" src=\"\/wp-content\/uploads\/2019\/04\/d04d2431d8c5240d44acce675d837018.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <i>1C-interface op Windows<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Het platform &#039;1C: Enterprise&#039; \u2013 wat zit er onder de motorkap?\" src=\"\/wp-content\/uploads\/2019\/04\/a443f6e2d1cb95e256e0dcff4fe139d2.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <i>1C-interface \u2014 webclient<\/i><\/p>\n<p><\/p>\n<h3>Open source<\/h3>\n<p>\nHoewel we de standaardbibliotheken voor C++-ontwikkelaars onder Windows (MFC, WinAPI-controls) niet gebruiken, schrijven we niet alle componenten zelf. De bibliotheek werd al genoemd: <noindex><a rel=\"nofollow\" href=\"http:\/\/www.wxwidgets.org\/\">wxWidgets<\/a><\/noindex>, en daarnaast gebruiken we:<\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/curl.haxx.se\/libcurl\/\">cURL<\/a><\/noindex> voor het werken met HTTP en FTP. <\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/openssl.org\/\">OpenSSL<\/a><\/noindex> voor het werken met cryptografie en het opzetten van TLS-verbindingen<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/www.xmlsoft.org\/\">libxml2 en libxslt<\/a><\/noindex> voor het parseren van XML<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/dinhviethoa\/libetpan\">libetpan<\/a><\/noindex> voor het werken met mailprotocollen (POP3, SMTP, IMAP)<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/www.codesink.org\/mimetic_mime_library.html\">mimetic<\/a><\/noindex> voor het parseren van e-mailberichten<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/www.sqlite.org\/\">sqllite<\/a><\/noindex> voor het opslaan van gebruikerswerklogs<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/site.icu-project.org\/\">ICU<\/a><\/noindex> voor internationalisatie<\/li>\n<\/ul>\n<p>\nDe lijst kan nog verder worden uitgebreid.<br \/>\nBovendien maken we gebruik van sterk gemodificeerde versies van <noindex><a rel=\"nofollow\" href=\"http:\/\/code.google.com\/p\/googletest\/\">Google Test<\/a><\/noindex> en <noindex><a rel=\"nofollow\" href=\"http:\/\/code.google.com\/p\/googlemock\/\">Google Mock<\/a><\/noindex> bij het ontwikkelen van unit-tests.<br \/>\nDe bibliotheken vereisten aanpassing voor compatibiliteit met het SCOM-model van componentorganisaties.<br \/>\nDe verspreiding van 1C maakt het platform een uitstekende test voor de gebruikte bibliotheken. De diversiteit aan gebruikers en scenario's onthult snel fouten, zelfs in de zeldzaam gebruikte delen van de code. We verhelpen deze bij ons en proberen deze terug te geven aan de auteurs van de bibliotheken. De ervaringen met de samenwerking zijn zeer verschillend.<br \/>\nOntwikkelaars <noindex><a rel=\"nofollow\" href=\"http:\/\/curl.haxx.se\/libcurl\/\">cURL<\/a><\/noindex> en <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/dinhviethoa\/libetpan\">libetpan<\/a><\/noindex> snel reageren op pull-requests, maar de patch in <noindex><a rel=\"nofollow\" href=\"http:\/\/openssl.org\/\">OpenSSL<\/a><\/noindex> is ons niet gelukt terug te geven.<\/p>\n<h3>Conclusie<\/h3>\n<p>\nIn dit artikel hebben we enkele belangrijke aspecten van de ontwikkeling van het platform \u20181C: Enterprise\u2019 besproken. In het beperkte bereik van dit artikel hebben we slechts enkele interessante aspecten aangeraakt, naar onze mening. <br \/>\nEen algemene beschrijving van verschillende mechanismen van het platform kan worden bekeken <noindex><a rel=\"nofollow\" href=\"http:\/\/v8.1c.ru\/overview\/Platform.htm\">here<\/a><\/noindex>.<br \/>\nWelke onderwerpen zouden u interesseren in de volgende artikelen?<\/p>\n<p>Hoe is het mobiele platform 1C gerealiseerd?<br \/>\nDe beschrijving van de interne structuur van de webclient? <br \/>\nOf misschien bent u ge\u00efnteresseerd in het proces van het kiezen van functies voor nieuwe releases, ontwikkeling en testen?<\/p>\n<p>Laat het ons weten in de reacties!<br \/>\n<br \/>Bron: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/1c\/blog\/269611\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u043d\u0430\u0447\u043d\u0435\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0437 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u00ab1\u0421:\u041f\u0440\u0435\u0434\u043f\u0440\u0438\u044f\u0442\u0438\u0435 8\u00bb \u0438 \u043a\u0430\u043a\u0438\u0435 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043f\u0440\u0438 \u0435\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435. \u041f\u043e\u0447\u0435\u043c\u0443 \u043c\u044b \u0441\u0447\u0438\u0442\u0430\u0435\u043c, \u0447\u0442\u043e \u044d\u0442\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e? \u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u00ab1\u0421:\u041f\u0440\u0435\u0434\u043f\u0440\u0438\u044f\u0442\u0438\u0435 8\u00bb \u2014 \u044d\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0435 (\u0431\u043e\u043b\u0435\u0435 10 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u043e\u0432 \u0441\u0442\u0440\u043e\u043a \u043a\u043e\u0434\u0430) \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 C++ (\u043a\u043b\u0438\u0435\u043d\u0442, \u0441\u0435\u0440\u0432\u0435\u0440 \u0438 \u0442.\u0434.), JavaScript (\u0432\u0435\u0431-\u043a\u043b\u0438\u0435\u043d\u0442), \u0438, \u0441 \u043d\u0435\u0434\u0430\u0432\u043d\u0438\u0445 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":24279,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-32475","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.4 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440!\" \/>\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\/nl\/blog\/administrirovanie\/platforma-1s-predpriyatie-chto-pod-kapotom\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"nl_NL\" \/>\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\udd47\u041f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u00ab1\u0421: \u041f\u0440\u0435\u0434\u043f\u0440\u0438\u044f\u0442\u0438\u0435\u00bb \u2014 \u0447\u0442\u043e \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c? | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440!\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/nl\/blog\/administrirovanie\/platforma-1s-predpriyatie-chto-pod-kapotom\" \/>\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=\"2019-10-31T18:47:15+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:47:15+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\udd47Platform \u20181C: Enterprise\u2019 \u2014 wat zit er onder de motorkap? | ProHoster","description":"Hallo, Habr!","canonical_url":"https:\/\/prohoster.info\/nl\/blog\/administrirovanie\/platforma-1s-predpriyatie-chto-pod-kapotom","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"nl_NL","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\udd47\u041f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u00ab1\u0421: \u041f\u0440\u0435\u0434\u043f\u0440\u0438\u044f\u0442\u0438\u0435\u00bb \u2014 \u0447\u0442\u043e \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c? | ProHoster","og:description":"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440!","og:url":"https:\/\/prohoster.info\/nl\/blog\/administrirovanie\/platforma-1s-predpriyatie-chto-pod-kapotom","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":"2019-10-31T18:47:15+00:00","article:modified_time":"2019-10-31T18:47:15+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"32475","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":"2026-01-21 11:03:20","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 02:58:23","updated":"2026-01-21 11:03:20","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts\/32475","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/comments?post=32475"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts\/32475\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media\/24279"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media?parent=32475"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/categories?post=32475"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/tags?post=32475"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}