Platform "1C: Enterprise" - yini ngaphansi hood?

Sawubona Habr!
Kulesi sihloko sizoqala indaba mayelana nokuthi isebenza kanjani ngaphakathi isiteji "1C:Enterprise 8" nokuthi ibuphi ubuchwepheshe obusetshenziswayo ekuthuthukisweni kwayo.

Platform "1C: Enterprise" - yini ngaphansi hood?

Kungani sicabanga ukuthi lokhu kuyathakazelisa? Okokuqala, ngoba iplatifomu ye-1C:Enterprise 8 iyisicelo esikhulu (imigqa yekhodi engaphezu kwezigidi eziyi-10) ku-C++ (iklayenti, iseva, njll.), i-JavaScript (iklayenti lewebhu), futhi, kamuva nje, Futhi. Java. Amaphrojekthi amakhulu angathakazelisa okungenani ngenxa yesilinganiso sawo, ngoba izinkinga ezingabonakali kusisekelo sekhodi encane zivela ngokugcwele kumaphrojekthi anjalo. Okwesibili, i-“1C:Enterprise” iwumkhiqizo ophindaphindekayo, “ofakwe ebhokisini,” futhi zimbalwa kakhulu izindatshana mayelana nentuthuko enjalo ku-Habré. Kuyajabulisa futhi ukwazi ukuthi impilo injani kwamanye amaqembu nezinkampani.

Ngakho ake siqale. Kulesi sihloko sizonikeza ukubuka kabanzi kobunye ubuchwepheshe obusetshenziswa endaweni yesikhulumi futhi sichaze isimo sezwe, ngaphandle kokungena ngokujulile ekusetshenzisweni. Ngempela, ezicini eziningi, indaba enemininingwane ingadinga isihloko esihlukile, kanti kwezinye, incwadi ephelele!
Okokuqala, kufanelekile ukunquma ngezinto eziyisisekelo - ukuthi iyini inkundla ye-1C:Enterprise nokuthi iqukethe ziphi izingxenye. Impendulo yalo mbuzo ayilula kangako, ngoba igama elithi “Inkundla” (ngokufushane, sizoyibiza kanjalo) isho indlela yokuthuthukisa izinhlelo zebhizinisi, indawo yesikhathi sokusebenza, namathuluzi okuphatha. Izingxenye ezilandelayo zingahlukaniswa cishe:

  • iqoqo leseva
  • Iklayenti “elincane” elikwazi ukuxhuma kuseva nge-http kanye nephrothokholi yayo kanambambili
  • iklayenti lokusebenza esakhiweni esinezigaba ezimbili esine-database etholakala ku-hard drive noma ifolda yenethiwekhi
  • iklayenti lewebhu
  • amathuluzi okuphatha iseva yohlelo lokusebenza
  • indawo yokuthuthukisa (eyaziwa ngokuthi Isihleli)
  • imvelo yesikhathi sokusebenza ye-iOS, i-Android ne-Windows Phone (inkundla yeselula engu-1C)

Zonke lezi zingxenye, ngaphandle kweklayenti lewebhu, zibhalwe ngo-C++. Ukwengeza, kukhona okusanda kumenyezelwa Isihleli sesizukulwane esisha, ebhalwe nge-Java.

Izinhlelo zokusebenza zomdabu

I-C++03 isetshenziselwa ukuthuthukisa izinhlelo zokusebenza zomdabu. Ku-Windows, i-Microsoft Visual C++ 12 (iphrofayela ehambisana ne-Windows XP) isetshenziswa njenge-compiler, futhi ku-Linux ne-Android - gcc 4.8, ye-iOS - clang 5.0. Umtapo wolwazi ojwayelekile osetshenziswayo uyafana kuwo wonke amasistimu wokusebenza nabahlanganisi - i-STLPort. Lesi sixazululo sehlisa amathuba okuba namaphutha aqondene nokuqaliswa kwe-STL. Okwamanje sihlela ukuthuthela ekusebenziseni kwe-STL ehanjiswe nge-CLAng, njengoba i-STLPort iyekisiwe futhi ayihambisani nemodi enikwe amandla ye-gcc C++11.
Isisekelo sekhodi yeseva sivamile ngo-99%, eyeklayenti - 95%. Ngaphezu kwalokho, ngisho nenkundla yeselula isebenzisa ikhodi efanayo ye-C++ “njengenkulu”, nakuba iphesenti lokuhlanganisa lapho liphansi ngandlela thile.
Njengabasebenzisi abaningi be-C++, asisho ukuthi sisebenzisa u-100% wamakhono olimi namalabhulali alo. Ngakho-ke, asisebenzisi i-Boost, futhi esinye sezici zolimi ukusakaza kohlobo oluguqukayo. Ngesikhathi esifanayo, sisebenzisa ngokugcwele:

  • I-STL (ikakhulukazi izintambo, iziqukathi nama-algorithms)
  • amafa amaningi, kuhl. ifa lokuqaliswa okuningi
  • amaphethini
  • ngaphandle
  • izikhombisi ezihlakaniphile (ukuqaliswa ngokwezifiso)

Ngokusebenzisa ifa lezokuxhumana (amakilasi angabonakali ngokuphelele), imodeli yengxenye iyenzeka, okuzoxoxwa ngayo ngezansi.

Izingxenye

Ukuze kuqinisekiswe i-modularity, konke ukusebenza kuhlukaniswe izingxenye, okuyimitapo yolwazi eguquguqukayo (*.dll ye-Windows, *.so ye-Linux). Kunezingxenye ezingaphezu kwekhulu namashumi amahlanu sezizonke; Nazi izincazelo zezinye zazo:

i-backend
Iqukethe injini yemethadatha yesikhulumi

accnt
Izinto ezisetshenziswa abathuthukisi bohlelo lokusebenza ukwakha amarekhodi okubalwa kwezimali (amashadi ama-akhawunti namarejista okubalwa kwezimali)

bsl
Injini yokusayinda yolimi eshumekiwe

nuke
Ukuqaliswa ngokwezifiso kwesabi sememori

dbeng8
Injini yedatha yefayela. Injini yedatha yeseva yefayela elula esekelwe ku-ISAM, ehlanganisa nephrosesa ye-SQL elula

wbase
Iqukethe amakilasi ayisisekelo nemisebenzi yokusebenzisa isixhumi esibonakalayo somsebenzisi weWindows - amakilasi ewindi, ukufinyelela kwe-GDI, njll.

Ukuhlukanisa izingxenye eziningi kuyasiza ngokubuka okuningana:

  • Ukwehlukana kuthuthukisa idizayini engcono, ikakhulukazi ukuhlukaniswa kwekhodi okungcono
  • Kusuka kusethi yezingxenye ungakwazi ukuhlanganisa kalula izinketho zokulethwa okuhlukile:
    • Isibonelo, ukufakwa kweklayenti elincanyana kuzoqukatha i-wbase, kodwa ngeke kube ne-backend
    • kodwa kuseva ye-wbase, ngokuphambene nalokho, ngeke kube
    • zombili izinketho zizoqukatha i-nuke ne-bsl

Zonke izingxenye ezidingekayo kule nketho yokuqalisa ziyalayishwa uma uhlelo luqala. Lokhu, ikakhulukazi, kuyadingeka ekubhaliseni amakilasi e-SCOM, okuzoxoxwa ngakho ngezansi.

ISCOM

Ngokubola ezingeni eliphansi, kusetshenziswa uhlelo lwe-SCOM, umtapo wezincwadi ofana ngemibono ne-ATL. Kulabo abangazange basebenze ne-ATL, sibhala kafushane amakhono nezici eziyinhloko.
Okwekilasi le-SCOM eliklanywe ngokukhethekile:

  • Inikeza izindlela zasembonini ezikuvumela ukuthi udale ikilasi ukusuka kwenye ingxenye wazi igama layo kuphela (ngaphandle kokuveza ukusetshenziswa)
  • Inikeza ingqalasizinda yesikhombi esihlakaniphile esibala ireferensi. Isikhathi sokuphila sekilasi le-SCOM asidingi ukugadwa mathupha
  • Ikuvumela ukuthi uthole ukuthi ingabe into isebenzisa isixhumi esibonakalayo esithile futhi iguqule ngokuzenzakalelayo isikhombi entweni sibe isikhombi esixhumi esibonakalayo.
  • Dala into yesevisi etholakala njalo ngokusebenzisa indlela ye-get_service, njll.

Isibonelo, ungachaza ikilasi lokufunda i-JSON (isibonelo, i-JSONStreamReader) engxenyeni ethi json.dll.
Amakilasi nezimo kungadalwa kwezinye izingxenye; adinga ukubhaliswa emshinini we-SCOM:

SCOM_CLASS_ENTRY(JSONStreamReader)

Le macro izochaza ikilasi elikhethekile lokuqopha elimile, umakhi walo ozobizwa lapho ingxenye ilayishwa enkumbulweni.
Ngemva kwalokhu, ungakha isibonelo sakho kwenye ingxenye:

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

Ukweseka izinsiza, i-SCOM inikeza ingqalasizinda eyengeziwe, eyinkimbinkimbi. Okubalulekile kuyo umqondo wenqubo ye-SCOM, esebenza njengesiqukathi sokusebenza kwezinsizakalo (okungukuthi, idlala indima Yendawo Yesevisi), futhi iqukethe ukubophezela ezinsizeni zasendaweni. Inqubo ye-SCOM iboshelwe kuchungechunge lwe-OS. Ngenxa yalokhu, ngaphakathi kohlelo lokusebenza ungathola izinsizakalo ezinjengalezi:

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

Ngaphezu kwalokho, ngokushintsha izinqubo ezinengqondo (SCOM) eziboshelwe ochungechungeni, ungathola izinhlelo zokusebenza ezizimele ngokubuka kwendawo yolwazi, ezisebenza ngaphakathi kochungechunge olufanayo. Lena yindlela iklayenti lethu elizacile elisebenza ngayo nesizindalwazi sefayela - ngaphakathi kwenqubo ye-OS eyodwa kunezinqubo ezimbili ze-SCOM, eyodwa ehlotshaniswa neklayenti, kanti eyesibili neseva. Le ndlela yokwenza isivumela ukuthi sihlanganise ukubhalwa kwekhodi ezosebenza kokubili kusizindalwazi sefayela lendawo kanye nenguqulo “yangempela” yeseva yeklayenti. Intengo yokufana okunjalo iphezulu, kodwa umkhuba ubonisa ukuthi kuwufanele.

Ngokusekelwe kumodeli yengxenye ye-SCOM, kokubili ingqondo yebhizinisi nengxenye yesixhumi esibonakalayo ye-1C: Ibhizinisi kuyasetshenziswa.

Isixhumi esibonakalayo somsebenzisi

Ngendlela, mayelana ne-interfaces. Asizisebenzisi izilawuli ezijwayelekile ze-Windows; izilawuli zethu zisetshenziswa ngokuqondile ku-Windows API. Ngenguqulo ye-Linux, kwenziwe isendlalelo esisebenza ngelabhulali ye-wxWidgets.
Ilabhulali yezilawuli ayincikile kwezinye izingxenye ze-1C:Enterprise futhi isetshenziswa yithi kwezinye izinsiza ezincane ezimbalwa zangaphakathi.

Phakathi neminyaka yokuthuthukiswa kwe-1C:Ibhizinisi, ukubukeka kwezilawuli kushintshile, kodwa ushintsho olukhulu ezimisweni lwenzeka kanye kuphela, ngo-2009, ngokukhululwa kwenguqulo 8.2 kanye nokufika "kwamafomu aphethwe". Ngokungeziwe ekushintsheni ukubukeka, isimiso sokwakheka kwefomu sishintshe ngokuyisisekelo - kwaba khona ukwenqatshwa kokuma kwe-pixel-by-pixel kwezinto ngokuvuna ukugeleza-isakhiwo sezakhi. Ngaphezu kwalokho, kumodeli entsha, izilawuli azisebenzi ngokuqondile nezinto zesizinda, kodwa ngama-DTO akhethekile (Izinto Zokudluliswa Kwedatha).
Lezi zinguquko zenze kwaba nokwenzeka ukwakha iklayenti lewebhu elithi 1C:Enterprise eliphindaphinda ingqondo ye-C++ yezilawuli ze-JavaScript. Sizama ukugcina ukulingana okusebenzayo phakathi kwamaklayenti amancane namawebhu. Ezimweni lapho lokhu kungenzeki khona, isibonelo ngenxa yemikhawulo ye-JavaScript API etholakalayo (isibonelo, amandla okusebenza ngamafayela anomkhawulo kakhulu), sivamise ukwenza umsebenzi odingekayo sisebenzisa izandiso zesiphequluli ezibhalwe ku-C++. Okwamanje sisekela i-Internet Explorer ne-Microsoft Edge (Windows), Google Chrome (Windows), Firefox (Windows ne-Linux) kanye ne-Safari (MacOS).

Ukwengeza, ubuchwepheshe bamafomu aphethwe busetshenziselwa ukwakha i-interface yezinhlelo zokusebenza zeselula kuplathifomu ye-1C. Kumadivayisi eselula, ukunikezwa kwezilawuli kusetshenziswa ubuchwepheshe besistimu yokusebenza, kodwa ngomqondo wesakhiwo sefomu kanye nokusabela kokusebenzelana, ikhodi efanayo isetshenziswa njengakungxenyekazi “enkulu” 1C:Enterprise.

Platform "1C: Enterprise" - yini ngaphansi hood?
1C interface ku-Linux OS

Platform "1C: Enterprise" - yini ngaphansi hood?
1C interface kudivayisi ephathekayo

1C interface kwamanye amapulatifomu Platform "1C: Enterprise" - yini ngaphansi hood?
1C interface ku-Windows OS

Platform "1C: Enterprise" - yini ngaphansi hood?
Isixhumi esibonakalayo 1C - iklayenti lewebhu

Vula umthombo

Nakuba singasebenzisi amalabhulali ajwayelekile konjiniyela be-C++ abangaphansi kwe-Windows (MFC, izilawuli ezivela ku-WinAPI), asizibhali zonke izingxenye ngokwethu. Umtapo wolwazi sewuvele ushiwo wxWidgets, futhi sisebenzisa:

Uhlu luyaqhubeka.
Ukwengeza, sisebenzisa inguqulo elungiswe kakhulu I-Google Test и I-Google Mock lapho uthuthukisa ukuhlolwa kwamayunithi.
Imitapo yolwazi ibidinga ukulungiswa ukuze ihambisane nemodeli yenhlangano yengxenye ye-SCOM.
Ukuvama kwe-1C kwenza inkundla isivivinyo samandla esihle kakhulu semitapo yolwazi esetshenziswa kuyo. Abasebenzisi abahlukahlukene nezimo zembula ngokushesha amaphutha nasezindaweni zekhodi ezingavamile ukusetshenziswa. Siyazilungisa ngokwethu futhi sizame ukuzibuyisela kubabhali bemitapo yolwazi. Okuhlangenwe nakho kokuxhumana kuvela kuhluke kakhulu.
Abathuthukisi ukoma и i-libetpan phendula ngokushesha ezicelweni zokudonsa, kodwa isichibi, isibonelo, ku I-OpenSSL Asizange sakwazi ukuyibuyisela.

isiphetho

Esihlokweni sithinte izici ezimbalwa ezibalulekile zokuthuthukiswa kwe-1C: Ipulatifomu yebhizinisi. Esigabeni esilinganiselwe se-athikili, sithinte izici ezithile kuphela ezithokozisayo, ngokombono wethu,.
Incazelo evamile yezinqubo zeplathifomu ezihlukahlukene ingatholakala lapha.
Yiziphi izihloko ongazithakasela ezihlokweni zesikhathi esizayo?

Isetshenziswa kanjani inkundla yeselula ye-1C?
Incazelo yesakhiwo sangaphakathi seklayenti lewebhu?
Noma mhlawumbe unentshisekelo kunqubo yokukhetha izici zokukhishwa okusha, ukuthuthukisa nokuhlola?

Bhala kumazwana!

Source: www.habr.com

Engeza amazwana