Net-Base Žurnāls

23.06.2026

Alte VCL-Anwendungen schrittweise modernisieren: Praxisleitfaden für Betrieb, Architektur und Risiko

Viele VCL-Desktop-Anwendungen laufen stabil, aber bremsen bei Windows-Updates, Datenbankwechseln, Security und neuen Schnittstellen. Dieser Leitfaden zeigt, wie Unternehmen VCL-Systeme kontrolliert modernisieren: mit klarer Zielarchitektur, messbaren Etappen, sauberem...

23.06.2026

No žurnāla tēmas līdz projektu praksei

Atbilstošas pakalpojumu un tehniskās lapas rakstam

Daudzos uzņēmumos svarīgākā biznesa programmatūra nav jaunākā, bet tā, kas katru dienu darbojas uzticami: izveidojušās Delphi/VCL darbvirsmas lietojumprogrammas. Tās vada procesus, modelē specifisku loģiku, sazinās ar datubāzēm, failu sistēmām, drukas ierīcēm, skeneriem vai ERP- un DMS‑saskarnēm. Tieši tāpēc nomaiņa ir riskanta — un tieši tāpēc ir jēga spēt pakāpeniski modernizēt vecās VCL lietojumprogrammas, nevis visu pārtaisīt vienā Big-Bang.

Pakāpeniska modernizācija nozīmē: saglabāt funkcionālo stabilitāti, mērķtiecīgi samazināt tehniskos parādus, pielāgoties drošības un ekspluatācijas prasībām un vienlaikus palikt piegādāmai un darbināmai jebkurā brīdī. IT vadībai, administrācijai un tehniskajiem projektu atbildīgajiem svarīgāka ir nevis „skaistākā” tehnoloģija, bet plāns, kas reālistiski ņem vērā datus, saskarnes, izvietošanas procesu (Deployment), piekļuves tiesības un uzturēšanu.

Raksts vada pa praksē pārbaudītu modernizācijas ceļu: no esošā stāvokļa inventarizācijas un mērķa arhitektūras, caur datu piekļuvi (piem., BDE-Ablösung), 32/64‑bitu un Unicode atbalstu līdz REST‑API, portālu pieslēgumiem un ekspluatācijas koncepcijām. Uzsvars ir uz lēmumiem, kas ikdienā atstāj reālu ietekmi: atjaunināmība, pieejamības nodrošināšana, Security, Observability (Logs/Metriken) un kontrolēta migrācija.

Kāpēc modernizēt VCL sistēmas, ja tās „taču darbojas”?

Ka VCL lietojumprogramma darbojas, nenozīmē, ka to ir viegli ekspluatēt. Bieži modernizācijas iemesli neparādās GUI dizainā, bet darbībā: operētājsistēmas maiņa, jaunas drošības politikas, datubāzu atjauninājumi, tīkla segmentācija vai jaunas prasības autentifikācijai un protokolēšanai. Daudzi riski kļūst acīmredzami tikai tad, kad nepieciešams atjauninājums — un tad zem laika spiediena.

Tipiskie virzītāji uzņēmumos:

  • Platformu spiediens: 32 bitu ierobežojumi, Windows‑cietināšana, jaunas Windows versijas, virtualizācija vai Windows 11 ARM64 atsevišķās jomās.
  • Datu piekļuve un draiveri: novecojuši DB slāņi (piem., BDE), nepārvaldītas ODBC ķēdes, netīras transakcijas, trūkstošas pooling stratēģijas.
  • Saskarņu spēja: pieprasījums pēc REST‑API, notikumu integrācijas, pieslēguma portāliem vai trešās puses sistēmām.
  • Drošība un atbilstība: TLS standarti, audit‑trail ieraksti, lomu modeļi, secrets pārvaldība, servisu cietināšana.
  • Ekspluatācijas izmaksas: manuālas instalācijas, trausli atjauninātāji, trūkstoša telemetrija, grūti reproducējamas kļūdas.

Tādējādi modernizācija nav kosmētisks projekts, bet gan lēmums par riskiem un ekspluatācijas izmaksām. Māksla ir aizsargāt funkcionālo pamatloģiku, kamēr tehniskā apvalka atjaunošana notiek pa posmiem.

Modernizācija nevis no jauna izstrāde: lēmumu rāmis IT un biznesa nodaļai

„No jauna būvēšana” bieži šķiet skaidrāka, taču praksē tā bieži ir daudzu gadu programma ar lielu apjoma risku. Pakāpeniska modernizācija ir piemērotāka, ja lietojumprogramma ir funkcionāli noturīga, bet tai ir tehniski sastrēgumi. Izšķiroši ir skaidrs lēmumu rāmis, kas balstīts nevis ideoloģijā, bet ekspluatācijas apsvērumos.

Pārbaudīta pieeja ir klasificēšana pa četrām asīm:

  • Funkcionālā stabilitāte: Vai procesi un noteikumi ir lielākoties stabili vai pastāvīgi mainās?
  • Tehniskais stāvoklis: Vai pastāv bloķētāji (BDE, tikai 32 bitu, neatbalsta Unicode, novecojusi kriptogrāfija, komponentes, kurām nav iespējams piemērot ielāpus)?
  • Integrācijas spiediens: Vai īstermiņā ir nepieciešams paplašināt API, portālus, atskaišu sistēmas, DMS/ERP pieslēgumus?
  • Darbības risks: Cik kritiska ir pieejamība, cik liels ir atteices risks atjauninājumu laikā?

Ja funkcionālā stabilitāte ir augsta un lielākie riski ir tehniski, modernizācija bieži vien ir pragmatisks risinājums. Svarīgi: modernizācija nav „turpināt tāpat kā iepriekš“, bet kontrolēta programma ar mērķa arhitektūru, mērījumu punktiem un pieņemšanas kritērijiem.

Inventarizācija: Kas patiesībā jāuzskaita

Pirmā fāze nosaka tempu un kvalitāti. Nevis tikai „skatat kodu“, bet gan darbības inventarizācija. Mērķis ir uzticama karte: kādas komponentes pastāv, kuras atkarības ir kritiskas un kādas izmaiņas rada blakusefektus?

Tehniskā inventarizācija 10 punktos

  • Delphi-versija un toolchain: kompilatora stāvoklis, kompilācijas process, atkarības, trešo pušu komponentes.
  • UI un moduļu struktūra: monolītiskas formas, dinamiskas paketes, spraudņu mehānismi.
  • Datu piekļuve: BDE/ADO/ODBC/BDE aizvietošana ar natīvu pieslēgumu, transakciju robežas, DB-specifiskas SQL iespējas.
  • Datubāzes: versijas, apkopes logi, dublējums/atjaunošana, replikācija, saglabātās procedūras.
  • Integrācijas: failu importi, SMTP, SOAP/REST, TCP/IP, drukāšana/etiķetes, skeneri, Office automatizācija.
  • Izvietošana: MSI, XCOPY, atjauninātāji, tiesības, ceļi, grupu politikas.
  • Drošība: autentifikācija, lomas, šifrēšana, TLS versijas, slepenie dati (secrets), sertifikāti.
  • Darbība: žurnāli, diagnostika, avārijas izraksti (crash-dumps), monitorings, atbalsta procesi.
  • Datu kvalitāte: dublikāti, vecās saistības, kodēšana, laika zīmogi, vairāklietotāju atbalsts.
  • Testējamība: reproducējami testa gadījumi, testdati, pieņemšanas procesi, reģresijas testi.

Paralēli ir vērts veikt īsu interviju sēriju ar darbības komandu un galvenajiem lietotājiem: kur ikdienā rodas lielākās problēmas? Kuri procesi ir kritiski? Kuras kļūdu situācijas prasa daudz laika? No tā var izvest modernizācijas prioritāšu secību, kas ir pamatota gan tehniski, gan operatīvi.

Mērķa arhitektūra: Layer-3 kā vadlīnija pakāpeniskai atjaunošanai

Pakāpeniska modernizācija prasa mērķa struktūru, pretējā gadījumā tiek tikai salaboti atsevišķi traucējumi. Daudzos Delphi-/VCL krājumos trūkst skaidras GUI, biznesa loģikas un datu piekļuves atdalīšanas. Layer-3 arhitektūra (prezentācija, domēna/biznesa loģika, infrastruktūra/datu piekļuve) ir labi saprotama vadlīnija, kas ļauj neriskēt ar tūlītēju pilnīgu pārveidi.

Svarīga ir IT un darbības perspektīva: ja biznesa loģika ir skaidri kapsulēta, vēlāk var apkalpot vairākus front-endus (Desktop, portāls, serviss), pievienot saskarnes un konsolidēt datu piekļuves. Vienlaikus samazinās risks, ka UI izmaiņas netīšām maina datu noteikumus.

Kas darbībā uzlabojas, ieviešot slāņošanu

  • Izlaišanas spēja: mazākas izmaiņas tiek lokalizētas, reģresijas samazinās.
  • Drošība: centrālas vietas autorizācijai, ievades validācijai un auditam.
  • Saskarnes: REST-API oder Windows-/Linux-Services var atkārtoti izmantot biznesa loģiku.
  • Migrācija: datubāzes maiņa un draiveru nomaiņa primāri skar infrastruktūras slāni.

Mērķa arhitektūrai nav jābūt „perfektai“. Tai jābūt pietiekami konkrētai, lai vadītu lēmumus: kur jānovieto jauna loģika? Kā tiks kapsulēta datu piekļuve? Kuras APIs ir stabilas?

Vecās VCL lietojumprogrammas pakāpeniski modernizēt: posmu plāns, kas darbojas ikdienā

Ilgtspējīgs modernizācijas ceļš darbojas posmos, kas katrs sniedz izmērāmu ieguvumu un vienlaikus sagatavo nākamo līmeni. Tas samazina projekta un ekspluatācijas risku, jo pēc katra posma var izvietot stabilu stāvokli.

Posms 1: Build, atkarību un izlaiduma procesa stabilizēšana

Daudzas mantojuma problēmas nav kodā, bet procesā: buildi ir atkarīgi no atsevišķām darbstacijām, instalācijas ir manuālas, atkarības nav versijuotas. Tāpēc pirmais sviras punkts ir reproducējams build un konsekvents pakotņu veidošanas process.

  • Build automatizācija un definētas kompileru/bibliotēku versijas
  • Trešās puses komponentu un konfigurāciju versiju pārvaldība
  • Standardizēti izvietošanas soļi (t.sk. rollback koncepcija)

Rezultāts: atjauninājumi kļūst plānojamāki, atbalsts var viennozīmīgi identificēt stāvokļus, un tehniskais parāds kļūst redzams, nevis slēpts.

Posms 2: Datu piekļuves modernizācija (tipiski: BDE nomaiņa)

BDE (Borland Database Engine) daudzās vidēs ir centrāls šķērslis: vecas draiveru ķēdes, trausla uzstādīšana, ierobežota mūsdienīgu datubāzu un drošības standartu atbalsts. Nomaiņas mērķis nav tikai „cits draiveris“, bet skaidrs datu piekļuves slānis.

In Delphi-projekten ist BDE-Ablosung mit nativer Anbindung kā datu piekļuves slānis izplatīts, jo tas tīri atbalsta DB backendus (piem., PostgreSQL, SQL Server, MariaDB), padara parametru sasaisti un transakciju kontroli iespējamu un vienkāršo draiveru pārvaldību. IT nodaļai būtiski: mazāk speciālu instalāciju klientos, skaidrāka konfigurācija un labākas diagnostikas iespējas savienojuma problēmu gadījumā.

Svarīgi migrācijas aspekti šajā posmā:

  • Transakciju robežas padarīt eksplizītas (kur sākas/beidzas viena biznesa darbība?).
  • SQL varianti identificēt (DB specifiskas funkcijas, datuma loģika, bloķējumi).
  • Savienojumu pārvaldību standartizēt (timeouts, pooling stratēģija, retry tikai mērķtiecīgi).
  • Konfigurācijas higiēna: savienojuma virknes, sertifikāti un slepenie dati nedrīkst būt iekļauti kodā.

Posms 3: Unicode un 64 bitu atbalsta plānošana

Unicode migrācija un pāreja uz 64 bitiem nav tikai „atķeksēšana kompilerī“, bet kvalitātes jautājums. Unicode skar virknes, failu nosaukumus, saskarnes un datubāzes (salīdzināšanas secība/kodējums). 64 bitu pāreja skar rādītāju izmērus, ārējās DLL, drukas/ skenera draiverus un COM atkarības.

Projekta atbildīgajiem der: šos jautājumus neatlikt uz pēdējo sprintu, bet apstrādāt kā atsevišķu posmu ar skaidriem testiem. Tipiskas klupšanas vietas ir eksporta formāti (CSV/Fixed Width), PDF un atskaišu plūsmas, kā arī datu apmaiņa ar vecajām sistēmām, kuras vēl gaida 8-bitu kodējumu.

Posms 4: Saskarnes modernizēt — neradot nestabilitāti darbvirsmā

Daudzi uzņēmumi vēlas no VCL lietojumprogrammas nodrošināt datus portāliem, BI vai trešām sistēmām. Drošākais ceļš parasti ir API fasāde: skaidri versionēta REST-API (HTTP-bāzēta saskarne), kas kontrolē un eksponē biznesa loģiku. Tas nenozīmē «klienta attālinātu vadību», bet gan biznesa operāciju izteikšanu kā servisus.

Tas atslābina izmaiņas: darbvirsma paliek stabila esošajiem lietotājiem, kamēr jaunas integrācijas aug caur API. Svarīgi darbībai un drošībai:

  • Autentifikācija/autorizācija: piemēram, tokenu bāzēta, ar iespēju integrēt SSO (bieži SAML 2.0 uzņēmuma vidēs).
  • Pieprasījumu ierobežojumi un laika noildze: aizsardzība pret nejaušu slodzi, ko rada batch-integrācijas.
  • Versiju pārvaldība: API versijas novērš nekompatibilitātes izmaiņas (breaking changes) pieslēgtajām sistēmām.
  • Auditēšana: kas, kad un ko mainīja (biznesa līmenī), ne tikai „Request kam an“.

Etappe 5: Portal- oder Service-Komponenten ergänzen (C# oder Delphi – architektonisch sauber)

Daudzās modernizācijās blakus darbvirsmai rodas klientu portāls vai iekšējs tīmekļa nodalījums. Nav tik izšķiroši, vai šī daļa tiek realizēta kā C# vai Delphi — svarīgāka ir kopējā arhitektūra: konsekvents datu modelis, skaidras atbildības un stabilas saskarnes. IT kontekstā būtiski, lai ekspluatācija, žurnālfaili, atļaujas un izvietošanas process iederas esošajā ainavā (piem., Microsoft IIS tīmekļa daļām vai Linux servisiem fona apstrādei).

Praktiski lietderīga ir dalīšana pēc uzdevumiem:

  • Darbvirsma (VCL): ar procesu saistīts lietotāja interfeiss, offline/LAN tuvuma funkcijas, ierīču saskarnes.
  • Servisi: fona darbi, validācijas, imports/eksports, rindu apstrāde, laika plānotie uzdevumi.
  • Portāls: pašapkalpošanās, statusa vaicājumi, dokumenti, darbplūsmas pārlūkprogrammā.

Tādējādi izveidojas sistēma, kas var augt, neriskējot ar esošo kodolu.

Datubāzes modernizācija: no „darbojas“ uz „uzturama“

Daudzas VCL lietojumprogrammas ir cieši sapītas ar datubāzu vēsturi: Paradox mantojums, Firebird, vecākas SQL Server versijas vai hibrīdas formas. Datubāzes migrācija ir veiksmīga, ja to uztver kā datu un darbības projektu, nevis vienkāršu shēmas kopēšanu.

Ko IT jānoskaidro pirms migrācijas

  • Backup/Restore un RPO/RTO: cik ātri jāatgriežas tiešsaistē, cik lielu datu zudumu var pieļaut?
  • Uzturēšanas logs un dīkstāves stratēģija: Big-Bang, paralēlais darbības režīms vai pakāpeniska pāreja.
  • Rakstzīmju kopas un collation iestatījumi: svarīgi Unicode un kārtošanas/ meklēšanas loģikai.
  • Transakciju izolācija un bloķēšana: būtiski pie lielas paralelitātes un batch darbu slodzēm.
  • Atskaites: tiešai piekļuvei datubāzei no trešo pušu rīkiem (BI, Excel, ETL) jābūt pielāgotai.

Daudziem uzņēmumiem PostgreSQL ir iespēja, jo tā kā platforma ir labi pārvaldāma un piedāvā skaidrus rīkus backup, monitoring un piekļuves tiesību pārvaldībai. Izšķiroši tomēr ir tas, ka lietojumprogramma skaidri abstrahē SQL un tipu atšķirības — pretējā gadījumā katrs vaicājums kļūst par īpašu gadījumu. Tieši šeit atmaksājas konsolidēts datu piekļuves slānis (piem., FireDAC).

Drošība un piekļuves tiesības: modernizācija bez jaunas uzbrukuma virsmas

Legacy darbvirsmas lietojumprogrammas bieži tika projektētas laikā, kad “im LAN” automātiski nozīmēja “uzticams”. Mūsdienās tas reti ir pieņemami: segmentācija, Zero-Trust pieejas, attālināts darbs un audita prasības palielina spiedienu. Tāpēc modernizācijai jāņem vērā drošība, neparalizējot darbību.

Konkrēti pasākumi, kurus var pakāpeniski ieviest:

  • Centrāls autentifikācijas mehānisms: skaidra identitātes (pieteikšanās) un lomu (atļauju) atdalīšana.
  • Transporta šifrēšana: uzturēt TLS aktuālu, plānot sertifikātu pārvaldību.
  • Secrets apstrāde: nepārlikt paroles INI failos; tā vietā izmantot aizsargātas krātuves vai centrāli pārvaldītus Secrets.
  • Audit-Trail: protokolēt funkcionālās izmaiņas (kurš/kas/kad), ne tikai tehniskos logus.
  • Ievades validācija: īpaši jaunām API — stingri un centralizēti.

Svarīgi lēmumu pieņēmējiem: drošība nav kaut kas „extra”, ko pielīmēt beigās. Ja tiek veidotas API, servisi vai portāli, drošības arhitektūrai jau no sākuma jābūt daļai no mērķa arhitektūras.

Darbība un administrēšana: kas modernizācijas rezultātā ievērojami uzlabojas

Vislielākais ieguvums pakāpeniskai modernizācijai bieži ir jomās, kas agrāk prasību specifikācijā gandrīz nebija iekļautas: uzraudzība, kļūmju diagnostika, rollout, noturība ārkārtas situācijās. Īpaši VCL lietojumprogrammām, kas gadiem ilgi organiski augušas, neliels darbības uzlabojumu pakotne var būtiski samazināt atbalsta slogu — bez tā, ka gala lietotājs uzreiz redzētu jaunu UI.

Kontrolsaraksts „operacionālām“ komponentēm

  • Konfigurācijas standarts: centrāli dokumentēts, vides specifisks (Dev/Test/Prod), izsekojami noklusējuma iestatījumi.
  • Strukturēti logi: notikumi ar korelāciju (piem., procesa ID), skaidri log līmeņi, nav sensitīvu datu nešifrētā veidā.
  • Monitoring: health-checks servisiem, savienojuma statuss ar datu bāzi, uzdevumu izpildes laiki, rindu garumi.
  • Installer/Updater: iespējama silent install, rollback stratēģija, kārtīgas piekļuves tiesības.
  • Kļūmju diagnostika: reproducējama crash-informācija, skaidri atbalsta dati (versija, moduļu stāvoklis, konfigurācija).

Administratoriem īpaši nozīmīgi: ja fona loģika no darbvirsmas tiek pārvietota uz Windows- vai Linux-servisiem, izpildes laiki, RESTartēšanas uzvedība un resursu patēriņš kļūst vieglāk pārvaldāmi. Tajā pašā laikā samazinās risks, ka „ein offener Client“ bloķē batch procesu.

Testēšanas un migrācijas stratēģija: paralēlais darbs, nevis apstāšanās

Pakāpeniska modernizācija balstās uz regresijas testiem. Tas nozīmē ne tikai vienību testus (kuri legacy risinājumos bieži trūkst), bet galvenokārt funkcionālus end-to-end scenārijus: tipiskos procesus, kritiskos izņēmumus, lielapjoma datus, drukas darbus, importus/eksportus. Uzņēmumiem ir būtiski, lai šie testi būtu plānojami un atkārtojami.

Pragmatiski pieejas veidi, ja nav testu bāzes

  • Golden Master: definētām ievadēm tiek fiksētas izvades/atskaites/datu stāvokļi un salīdzinātas ar jaunajiem stāvokļiem.
  • Testa datu komplekts: anonimizētas datubāzes vai sintētiski dati ar reprezentatīviem īpašiem gadījumiem.
  • Pakāpeniski saskarnes testi: API līgumi un importēšanas formāti kā pārbaudāma specifikācija.

Migrācijās (datubāze, Unicode, 64 bitu) atmaksājas paralēlais darbības režīms, kur tas ir iespējams: jaunas komponentes sākotnēji darbojas blakus esošajam risinājumam, nodrošina rezultātus vai atskaites, neveicot esošā tūlītēju izslēgšanu. Tas rada uzticamus salīdzinājumus, un pāreja kļūst par kontrolētu lēmumu, nevis lēcienu nezināmajā.

Tipiskās klupšanas iespējas – und wie man sie vermeidet

Daudzas modernizācijas neizdodas nevis tehnisku iemeslu dēļ, bet gan nepareizas secības vai trūkstošu vadlīniju dēļ. Trīs modeļi parādās īpaši bieži:

  • UI vispirms: Jauns frontends bez skaidri noteiktiem domēna loģikas un datu piekļuves slāņiem tikai pārvieto problēmas un padara turpmākos soļus dārgākus.
  • „Tikai draiveru nomaiņa“: Bei BDE-Ablösung oder datubāzes pārejā bez transakciju un SQL pārskatīšanas rodas grūti atklājamas funkcionālas kļūdas.
  • Integrācija bez Security: Ātri papildināta API bez lomu modeļa, audita un rate limits kļūst par pastāvīgu uzbrukuma virsmu.

Pretdarbība ir etapu plāns ar skaidriem kvalitātes kritērijiem: katrai fāzei jābūt izvietojamai, jānodrošina monitoring un jāiztur definētie funkcionālie testi. Tad modernizācija kļūst par sērijveida uzlabojumu procesu, nevis par pastāvīgu projektu.

Kopsavilkums: Modernisierung ist ein Programm – kein Ereignis

Vecās VCL lietojumprogrammas bieži ir izaudzējušo procesu mugurkauls. Tās aizstājot, tiek aizvietots ne tikai kods, bet arī ekspluatācijas zināšanas. Tos pakāpeniski modernizējot, ir iespējams savienot stabilitāti un turpmāko attīstību: konsolidēt datu piekļuvi (tostarp BDE-Ablösung), plānot Unicode/64 bitu pāreju, sakārtot API un servisus un ievērojami atvieglot ekspluatāciju ar logēšanu, monitoringu un reproducējamiem izlaidumiem.

Izšķirošais punkts ir arhitektūra kā vadlīnija: domēna loģika un datu piekļuve tiek nodalītas tā, lai jaunās prasības (portāls, saskarnes, atskaites, jaunā datubāze) var tikt ieviestas kontrolēti. Tā rodas digitāls uzņēmuma risinājums, kas ne tikai darbojas, bet arī saglabā uzturēšanas uzticamību pie atjauninājumiem, drošības prasībām un integrācijas spiediena.

Ja vēlaties izveidot uzticamu modernizācijas ceļu savai VCL-/Delphi esošajai lietojumprogrammai, ļaujiet mums strukturēt sākotnējo situāciju, riskus un etapus tehniskā sākotnējā sarunā:

Funkcionālajā vidē svarīga loma ir arī Delphi Modernisierung un Vcl Legacy Anwendung, ja integrācijas, datu plūsmas un turpmākā attīstība jāsaskaņo tīri.

Apspriest projektu vai modernizācijas ieceri ar Net-Base.

Nākamais solis

Ja no tēmas rodas reāls projekts, arhitektūra, esošais stāvoklis un ekspluatācija būtu jāizskata kopā jau agri.

Mēs atbalstām ne tikai atsevišķu jautājumu risināšanā, bet arī tad, kad no avota koda fragmentiem, mantojuma sistēmu jautājumiem vai portāla idejām jāizveido stabils uzņēmuma līmeņa projekts.

  • Esošais stāvoklis, mērķa stāvoklis un tehniskie riski tiek kopīgi vērtēti.
  • REST, datu piekļuve, portāli un izvēršana netiek atlikti kā vēlākas sekas.
  • Jūs savlaicīgi redzat, kurš ceļš ir ekonomiski un darbības ziņā dzīvotspējīgs.

Kopīgot ierakstu

Kopīgot šo ierakstu tieši

LinkedIn, X, XING, Facebook, WhatsApp un e-pasts ir uzreiz pieejami. Instagramam saiti un īsu tekstu sagatavosim nekavējoties.

E-pasts

Instagram atveras jaunā cilnē. Saite un īss teksts tiek iepriekš nokopēti starpliktuvē.