Platform "1C: Enterprise" - chii chiri pasi pehodhi?

Hei Habr!
Munyaya ino tichatanga nyaya pamusoro pekuti inoshanda sei mukati chikuva "1C:Enterprise 8" uye ndeapi matekinoroji anoshandiswa mukukura kwayo.

Platform "1C: Enterprise" - chii chiri pasi pehodhi?

Nei tichifunga kuti izvi zvinonakidza? Chekutanga, nekuti iyo 1C:Enterprise 8 chikuva yakakura (inopfuura mamirioni gumi mitsetse yekodhi) application muC++ (mutengi, server, nezvimwewo), JavaScript (web mutengi), uye, nguva pfupi yadarika, Uye. Java. Mapurojekiti akakura anogona kunakidza zvishoma nekuda kwehukuru hwawo, nekuti nyaya dzisingaonekwe mudiki kodhi base inomuka musimba rakazara mumapurojekiti akadaro. Chechipiri, "1C:Enterprise" inodzokororwa, "boxed" chigadzirwa, uye kune zvishoma zvinyorwa zvine chekuita nebudiriro yakadai paHabrΓ©. Zvinogara zvichinakidza kuziva kuti hupenyu huri sei mune zvimwe zvikwata nemakambani.

Saka ngatitangei. Muchinyorwa chino tichapa mhedziso yemamwe matekinoroji anoshandiswa papuratifomu uye kuburitsa mamiriro, pasina kunyura zvakadzama mukuita. Zvamazvirokwazvo, nokuda kwemitoo yakawanda, nhau ine udzame ingada chinyorwa chakaparadzana, uye nokuda kwavamwe, bhuku rose!
Kutanga, zvakakodzera kusarudza pazvinhu zvakakosha - kuti 1C:Enterprise chikuva chii uye kuti ine zvikamu zvipi. Mhinduro kumubvunzo uyu haisi nyore, nekuti izwi rekuti "Platform" (kupfupika, ticharidaidza saizvozvo) rinoreva nzira yekugadzira bhizinesi maapplication, nharaunda yekumhanya, uye maturusi ekutonga. Zvinotevera zvikamu zvinogona kunyatsosiyaniswa:

  • server cluster
  • "mutete" mutengi anokwanisa kubatanidza kune sevha kuburikidza ne http uye yayo binary protocol
  • mutengi wekushanda mune maviri-tier architecture ane dhatabhesi iri pane hard drive kana network folda
  • web client
  • application server management maturusi
  • budiriro nharaunda (inozivikanwa seConfigurator)
  • Runtime nharaunda yeIOS, Android uye Windows Foni (mobile platform 1C)

Zvose izvi zvikamu, kunze kwemutengi wewebhu, zvakanyorwa muC ++. Pamusoro pazvo, kune ichangobva kuziviswa New generation configurator, yakanyorwa muJava.

Native apps

C++03 inoshandiswa kugadzira zvikumbiro zvemuno. YeWindows, Microsoft Visual C++ 12 (profile inoenderana neWindows XP) inoshandiswa semubatanidzwa, uye yeLinux ne Android - gcc 4.8, yeIOS - clang 5.0. Iyo raibhurari yakajairwa inoshandiswa yakafanana kune ese anoshanda masisitimu uye compilers - STLPort. Iyi mhinduro inoderedza mukana weSTL kuita-chaiwo zvikanganiso. Parizvino tiri kuronga kutamira kuSTL kuita iyo ngarava neClang, sezvo STLPort yakamiswa uye haienderane negcc's C++11 inogoneswa modhi.
Iyo server's code base ndeye 99% yakajairika, yemutengi - 95%. Zvakare, kunyangwe iyo nharembozha inoshandisa iyo yakafanana C ++ kodhi se "hombe" imwe, kunyangwe iyo muzana yekubatana ikoko yakati pasi.
Kufanana nevazhinji vashandisi veC++, hatizviti tinoshandisa zana rezvinogona zvemutauro nemaraibhurari awo. Saka, isu hatisi kushandisa Boost, uye imwe yemitauro yemutauro ndeye simba remhando yekukanda. Panguva imwecheteyo, isu tinoshandisa nekushingaira:

  • STL (kunyanya tambo, midziyo uye algorithms)
  • nhaka yakawanda, kusanganisira. akawanda kuita nhaka
  • matemplate
  • kunze
  • smart pointer (tsika kuita)

Nekushandisa akawanda nhaka yemainterfaces (akazara abstract makirasi), yechikamu modhi inogoneka, iyo ichakurukurwa pazasi.

Components

Kuti tive nechokwadi che modularity, kushanda kwese kwakakamurwa kuita zvikamu, zvinova maraibhurari anochinja (*.dll yeWindows, *.so yeLinux). Kune zvinopfuura zana nemakumi mashanu zvikamu zvakazara; heino tsananguro yezvimwe zvacho:

backend
Iine injini yepuratifomu metadata

accnt
Zvinhu zvinoshandiswa nevanogadzira maapplication kuvaka marekodhi eakaunzi (machati emaakaundi uye marejista eakaunzi)

bsl
Embedded mutauro execution injini

nuke
Tsika yekuitwa kwememory allocator

dbeng8
Faira database injini. Iyo yakapusa faira server database injini yakavakirwa paISAM, iyo inosanganisirawo iri nyore SQL processor

wbase
Iine makirasi ekutanga uye mabasa ekushandisa iyo Windows mushandisi interface - makirasi ehwindo, GDI kuwana, nezvimwe.

Kupatsanura muzvikamu zvakawanda kunobatsira kubva kune akati wandei maonero:

  • Kuparadzana kunosimudzira dhizaini iri nani, kunyanya iri nani kodhi yekuzviparadzanisa nevamwe
  • Kubva pane seti yezvikamu iwe unogona flexible kuunganidza dzakasiyana sarudzo dzekutumira:
    • Semuenzaniso, kuisirwa kwemutengi mutete kuchava newbase, asi hakuzove nebackend
    • asi pane wbase server, pane zvinopesana, hazvizove
    • zvese sarudzo zvichave zvine nuke uye bsl

Zvese zvikamu zvinodiwa pakuita sarudzo iyi zvinotakurwa kana chirongwa chatanga. Izvi, kunyanya, zvakakosha pakunyoresa maSCOM makirasi, ayo achakurukurwa pazasi.

SCOM

Pakuora padanho rezasi, iyo SCOM system inoshandiswa, raibhurari yakafanana mune ideology kune ATL. Kune avo vasina kushanda neATL, isu tinonyora muchidimbu kugona kukuru uye maficha.
Yekirasi yakagadzirirwa SCOM kirasi:

  • Inopa nzira dzefekitori dzinokutendera kuti ugadzire kirasi kubva kune chimwe chikamu uchiziva chete zita rayo (pasina kuburitsa mashandisiro)
  • Inopa referensi-kuverenga smart pointer zvivakwa. SCOM kirasi yeupenyu haidi kutariswa nemaoko
  • Inokutendera iwe kuti uone kana chinhu chinoshandisa chaiyo interface uye chingoshandura chinongedzo kune icho chinhu kune chinongedzo kune chinongedzo.
  • Gadzira chinhu chesevhisi chinogara chichiwanikwa kuburikidza nekuwana_service nzira, nezvimwe.

Semuenzaniso, unogona kutsanangura kirasi yekuverenga JSON (semuenzaniso, JSONStreamReader) muchikamu chejson.dll.
Makirasi uye zviitiko zvinogona kugadzirwa kubva kune zvimwe zvikamu; ivo vanofanirwa kunyoreswa mumushini weSCOM:

SCOM_CLASS_ENTRY(JSONStreamReader)

Iyi macro inotsanangura yakakosha static rekodhi kirasi, mugadziri wayo achadaidzwa kana chikamu chacho chaiswa mundangariro.
Mushure meizvi, iwe unogona kugadzira muenzaniso wayo mune chimwe chikamu:

IJSONStreamReaderPtr jsonReader = create_instance<IJSONStreamReader>(SCOM_CLSIDOF(JSONStreamReader));

Kuti utsigire masevhisi, SCOM inopa imwezve, yakaomesesa zvivakwa. Pakati payo ipfungwa yeSCOM process, iyo inoshanda semudziyo wekumhanyisa masevhisi (kureva, inotamba basa reSevhisi Locator), uye zvakare ine inosungira kune zvemuno zviwanikwa. Maitiro eSCOM akasungirirwa kune OS thread. Nekuda kweizvi, mukati meiyo application unogona kugamuchira masevhisi akadai:

SCOM_Process* process = core::current_process();
if (process)
         return get_service<IMyService>(process);

Uyezve, nekuchinja zvine musoro (SCOM) maitiro akasungirirwa kune shinda, unogona kuwana zvikumbiro zvakasununguka kubva pakuona kwenzvimbo yeruzivo, ichimhanya mukati metambo imwe chete. Aya ndiwo mashandiro anoita mutengi wedu mutete ane dhatabhesi refaira - mukati meimwe OS maitiro mune maviri SCOM maitiro, imwe yakabatana nemutengi, uye yechipiri neserver. Iyi nzira inotibvumira kuti tibatanidze kunyorwa kwekodhi iyo inoshanda zvese pane yenzvimbo faira dhatabhesi uye mu "chaiyo" mutengi-server vhezheni. Mutengo wekufanana kwakadaro uri pamusoro, asi maitiro anoratidza kuti zvakakosha.

Zvichienderana neiyo SCOM chikamu modhi, ese ari maviri bhizinesi logic uye interface chikamu che1C: Bhizinesi rinoitwa.

Mushandisi interface

Nenzira, nezve interfaces. Isu hatishandise zvakajairwa Windows zvidzoreso; zvidzoreso zvedu zvinoiswa zvakananga paWindows API. Kune iyo Linux vhezheni, dhizaini yakagadzirwa inoshanda kuburikidza ne wxWidgets raibhurari.
Raibhurari yezvinodzora haina kutsamira pane zvimwe zvikamu zve1C: Bhizinesi uye inoshandiswa nesu mune akati wandei madiki emukati zvinoshandiswa.

Mumakore ekuvandudzwa kwe1C: Bhizinesi, kutaridzika kwekutonga kwakashanduka, asi shanduko yakakomba yemisimboti yakaitika kamwe chete, muna 2009, nekuburitswa kweiyo vhezheni 8.2 uye nekuuya kwe "akagadziriswa mafomu". Pamusoro pekuchinja chitarisiko, musimboti wechimiro chechimiro wakachinja zvakanyanya - pakanga paine kurambwa kwepixel-ne-pixel kumira kwezvinhu mukuda kwekuyerera-kurongeka kwezvinhu. Uye zvakare, mune iyo nyowani modhi, zvidzoreso hazvishande zvakananga nezvinhu zvedomasi, asi zvine maDTO akakosha (Data Transfer Objects).
Shanduko idzi dzakaita kuti zvikwanise kugadzira 1C:Enterprise web client inodzokorora iyo C++ logic yeJavaScript controls. Isu tinoedza kuchengetedza kushanda kwakaenzana pakati pevatete uye webhu vatengi. Muzviitiko izvo zvisingagoneke, semuenzaniso nekuda kwekugumira kweJavaScript API iripo (semuenzaniso, kugona kushanda nemafaira kuri kushoma), isu tinowanzo kuita basa rinodiwa tichishandisa browser yekuwedzera yakanyorwa muC ++. Isu parizvino tinotsigira Internet Explorer neMicrosoft Edge (Windows), Google Chrome (Windows), Firefox (Windows neLinux) uye Safari (MacOS).

Pamusoro pezvo, tekinoroji yemafomu anogadziriswa inoshandiswa kugadzira chinongedzo chemafoni ekushandisa papuratifomu ye1C. Pane nharembozha, kupihwa kwezvinodzora kunoitwa pachishandiswa matekinoroji anowanikwa kune anoshanda sisitimu, asi kune iyo fomu yekumisikidza logic uye interface mhinduro, iyo kodhi imwechete inoshandiswa semu "hombe" 1C:Enterprise platform.

Platform "1C: Enterprise" - chii chiri pasi pehodhi?
1C interface paLinux OS

Platform "1C: Enterprise" - chii chiri pasi pehodhi?
1C interface pane nharembozha

1C interface pane mamwe mapuratifomu Platform "1C: Enterprise" - chii chiri pasi pehodhi?
1C interface paWindows OS

Platform "1C: Enterprise" - chii chiri pasi pehodhi?
Interface 1C - mutengi wewebhu

Open mabviro

Kunyangwe isu tisingashandisi akajairwa maraibhurari eC ++ vanogadzira pasi peWindows (MFC, zvinodzora kubva kuWinAPI), isu hatinyore zvese zvikamu isu pachedu. Raibhurari yakatotaurwa wxWidgets, uye isu tinoshandisawo:

  • cURL yekushanda neHTTP neFTP.
  • OpenSSL yekushanda necryptography uye kumisikidza TLS yekubatanidza
  • libxml2 uye libxslt ye XML parsing
  • libetpan yekushanda nemaprotocol etsamba (POP3, SMTP, IMAP)
  • mimetic kuongorora mameseji eemail
  • sqllite yekuchengetedza matanda evashandisi
  • ICU kuitira internationalization

Ndaza inoenderera mberi.
Uyezve, tinoshandisa shanduro yakagadziridzwa zvakanyanya Google Test ΠΈ Google Mock pakugadzira bvunzo dzeyuniti.
Maraibhurari aida kuchinjirwa kuti aenderane nechikamu cheSCOM chikamu chesangano modhi.
Kuwanda kwe1C kunoita kuti chikuva chiyedzo chakanakisa chesimba kumaraibhurari anoshandiswa mairi. Yakasiyana-siyana yevashandisi uye zviitiko zvinokurumidza kuratidza zvikanganiso munzvimbo dzisingawanzo shandiswa dzekodhi. Tinozvigadzirisa pachedu uye tinoedza kuzvidzorera kuvanyori veraibhurari. Chiitiko chekudyidzana chinoshanduka kuva chakasiyana kwazvo.
Developers cURL ΠΈ libetpan pindura nekukurumidza kudhonza-zvikumbiro, asi chigamba, semuenzaniso, mukati OpenSSL Hatina kumbokwanisa kuzvidzorera.

mhedziso

Muchinyorwa icho takabata pane akati wandei maficha ekuvandudzwa kwe1C: Enterprise platform. Muchikamu chakaganhurirwa chechinyorwa, takabata chete zvimwe zvinofadza, mumaonero edu, zvinhu.
Tsanangudzo yakajairika yemaitiro akasiyana epuratifomu anogona kuwanikwa pano.
Inyaya dzipi dzaungafarira munyaya dzinotevera?

Iyo 1C mobile platform inoshandiswa sei?
Tsanangudzo yemukati memutengi wewebhu?
Kana kuti pamwe unofarira maitiro ekusarudza maficha ezvitsva zvinoburitswa, kusimudzira uye kuyedza?

Nyora mumashoko!

Source: www.habr.com

Voeg