Sawubona Habr!
Kulesi sihloko sizoqala indaba mayelana nokuthi isebenza kanjani ngaphakathi
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.
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
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 (
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.
1C interface ku-Linux OS
1C interface kudivayisi ephathekayo
1C interface kwamanye amapulatifomu
1C interface ku-Windows OS
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
ukoma ukusebenza nge-HTTP ne-FTP.I-OpenSSL ukusebenza nge-cryptography kanye nokusungula ukuxhumana kwe-TLSlibxml2 kanye ne-libxslt yokuhlaziya i-XMLi-libetpan ukusebenza ngemithetho yemeyili (POP3, SMTP, IMAP)ukulingisa ukudlulisa imiyalezo ye-imeyilisqlite okokugcina amalogi omsebenzisiI-ICU okwenziwa ngamazwe ngamazwe
Uhlu luyaqhubeka.
Ukwengeza, sisebenzisa inguqulo elungiswe kakhulu
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
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
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