Iqonga "1C: Ishishini" - yintoni ephantsi kwe-hood?

Hayi Habr!
Kweli nqaku siza kuqala ibali malunga nendlela esebenza ngayo ngaphakathi iqonga "1C:Ishishini 8" kwaye zeziphi iiteknoloji ezisetyenziswayo ekuphuhliseni kwayo.

Iqonga "1C: Ishishini" - yintoni ephantsi kwe-hood?

Kutheni sicinga ukuba oku kubangel’ umdla? Okokuqala, kuba iqonga le-1C:Enterprise 8 likhulu (ngaphezu kwezigidi ezili-10 zemigca yekhowudi) isicelo kwi-C++ (umxhasi, umncedisi, njl. njl.), iJavaScript (umxhasi wewebhu), kwaye, kutshanje, Kwaye. Java. Iiprojekthi ezinkulu zinokuba nomdla ubuncinci ngenxa yobungakanani bazo, kuba imiba engabonakaliyo kwisiseko esincinci sekhowudi ivela ngamandla apheleleyo kwiiprojekthi ezinjalo. Okwesibini, "1C:Ishishini" yimveliso ephindaphindwayo, "ebhokisini", kwaye kukho amanqaku ambalwa malunga nophuhliso olunjalo kwiHabrΓ©. Kuhlala kunomdla ukwazi ukuba ubomi bunjani kwamanye amaqela kunye neenkampani.

Ngoko masiqalise. Kweli nqaku siza kunika isishwankathelo sobuchwephesha obusetyenziswa kwiqonga kwaye sichaze imbonakalo yomhlaba, ngaphandle kokuntywila nzulu ekuphunyezweni. Enyanisweni, kwiinkqubo ezininzi, ibali elineenkcukacha liza kufuna inqaku elahlukileyo, kwaye kwabanye, incwadi epheleleyo!
Ukuqala, kufanelekile ukwenza isigqibo kwizinto ezisisiseko - ukuba yintoni i-1C: iqonga leShishini kwaye liqulathe ntoni na. Impendulo yalo mbuzo ayilula kakhulu, kuba igama elithi "I-Platform" (ngokufutshane, siya kuyibiza ngolo hlobo) ibhekisela kwindlela yokuphuhlisa izicelo zoshishino, indawo yokusebenza, kunye nezixhobo zokulawula. La malungu alandelayo anokwahlulwa ngokuthe ngqo:

  • iqela lomncedisi
  • Umxhasi "obhityileyo" okwaziyo ukuqhagamshela kumncedisi nge-http kunye neprotocol yayo yokubini
  • umxhasi wokusebenza kulwakhiwo olunemigangatho emibini enesiseko sedatha ebekwe kwi-hard drive okanye ifolda yenethiwekhi
  • umxhasi wewebhu
  • izixhobo zolawulo lweseva yesicelo
  • indawo yophuhliso (eyaziwa ngokuba yi Configurator)
  • indawo yokusebenza ye-iOS, i-Android kunye ne-Windows Phone (iqonga eliphathwayo 1C)

Zonke ezi ndawo, ngaphandle komxhasi wewebhu, zibhalwe kwi-C ++. Ukongeza, kukho intengiso yakutshanje Umququzeleli wesizukulwana esitsha, ebhalwe kwiJava.

Iiapps zomthonyama

C++03 isetyenziselwa ukuphuhlisa izicelo zemveli. KwiWindows, iMicrosoft Visual C++ 12 (iprofayili ehambelana neWindows XP) isetyenziswa njengomqokeleli, kunye neLinux kunye ne-Android - gcc 4.8, ye-iOS - clang 5.0. Ilayibrari eqhelekileyo esetyenziswayo iyafana kuzo zonke iinkqubo zokusebenza kunye nabaqulunqi - STLPort. Esi sisombululo sinciphisa ukubakho kweempazamo ezithile zokuphunyezwa kwe-STL. Ngoku siceba ukufudukela kumiliselo lwe-STL oluthunyelwe nge-CLAng, njengoko i-STLPort iyekisiwe kwaye ayihambelani nemowudi enikwe amandla ye-Gcc C++11.
Isiseko sekhowudi yomncedisi yi-99% eqhelekileyo, umxhasi - 95%. Ngaphezu koko, kwaneqonga eliphathwayo lisebenzisa ikhowudi ye-C ++ efanayo njengeyona "enkulu", nangona ipesenti yomanyano isezantsi kancinci.
Njengabasebenzisi abaninzi be-C++, asibangi ukuba sisebenzisa i-100% yezakhono zolwimi kunye namathala eencwadi. Ke, ngokwenyani asisebenzisi i-Boost, kwaye enye yeempawu zolwimi luhlobo lokuphosa oluguqukayo. Ngexesha elifanayo, sisebenzisa ngokusebenzayo:

  • I-STL (ngokukodwa imitya, izikhongozeli kunye ne-algorithms)
  • ilifa ezininzi, kubandakanywa. ilifa ukuphunyezwa ezininzi
  • iipateni
  • ngaphandle
  • izikhombisi ezihlakaniphile (uphumezo ngokwezifiso)

Ngokusebenzisa ilifa ezininzi zojongano (iiklasi ezingabonakaliyo ngokupheleleyo), imodeli yecandelo iyenzeka, eya kuxoxwa ngezantsi.

Izixhobo

Ukuqinisekisa ukumodareyitha, yonke imisebenzi yahlulahlulwe yangamacandelo, angamathala eencwadi aguqukayo (*.dll yeWindows, *.so yeLinux). Kukho ngaphezu kwekhulu elinamashumi amahlanu amacandelo ewonke; Nazi iinkcazo zezinye zazo:

backend
Iqulethe injini yedatha yeqonga

accnt
Izinto ezisetyenziswa ngabaphuhlisi besicelo ukwakha iirekhodi zokubala (iitshathi zee-akhawunti kunye neerejista zokubala)

bsl
Injini yokwenziwa kolwimi elungisiweyo

nuke
Ukuphunyezwa ngokwesiko kwesabelo sememori

dbeng8
Injini yedatha yefayile. I-injini yedatha yeseva yefayile elula esekelwe kwi-ISAM, equka iprosesa ye-SQL elula

wbase
Iqulethe iiklasi ezisisiseko kunye nemisebenzi yokuphumeza ujongano lomsebenzisi weWindows - iiklasi zefestile, ukufikelela kwe-GDI, njl.

Ukwahlula kumacandelo amaninzi kuluncedo ukusuka kwiimbono ezininzi:

  • Ukwahlula kukhuthaza uyilo olungcono, ngakumbi ukwahlukana kwekhowudi engcono
  • Ukusuka kwiseti yamacandelo ungadibanisa ngokuguquguqukayo iinketho zonikezelo ezahlukeneyo:
    • Umzekelo, ufakelo lomxhasi obhityileyo luya kuba ne-wbase, kodwa aluyi kuba ne-backend
    • kodwa kwi-wbase server, ngokuchaseneyo, ayiyi kuba
    • zombini iinketho ngokuqinisekileyo ziya kuqulatha i-nuke kunye ne-bsl

Onke amacandelo afunekayo kolu khetho lophehlelelo alayishwa xa inkqubo iqala. Oku, ngokukodwa, kuyimfuneko ekubhaliseni iiklasi ze-SCOM, ekuya kuxoxwa ngazo apha ngezantsi.

I-SCOM

Ukubola kwinqanaba eliphantsi, inkqubo ye-SCOM isetyenziswa, ilayibrari efana ne-ideology kwi-ATL. Kwabo bangakhange basebenze ne-ATL, sidwelisa ngokufutshane ezona zakhono ziphambili kunye neempawu.
Kwiklasi ye-SCOM eyilwe ngokukodwa:

  • Ibonelela ngeendlela zasefektri ezikuvumela ukuba wenze iklasi ukusuka kwelinye icandelo ukwazi igama layo kuphela (ngaphandle kokuchaza ukuphunyezwa)
  • Ibonelela ngesiseko esibalayo sokubala sesalatha esihlakaniphile. Ubomi beklasi ye-SCOM ayifuni kubekwa esweni ngesandla
  • Ikuvumela ukuba ufumanise ukuba ingaba into iphumeza ujongano oluthile kwaye iguqule ngokuzenzekelayo isalathi sento kwisalathisi kujongano.
  • Yenza into yenkonzo ehlala ifikeleleka nge-get_service method, njl.

Umzekelo, ungachaza iklasi yokufunda i-JSON (umzekelo, i-JSONStreamReader) kwicandelo le-json.dll.
Iiklasi kunye nemizekelo inokudalwa kwamanye amacandelo; kufuneka babhaliswe kumatshini we-SCOM:

SCOM_CLASS_ENTRY(JSONStreamReader)

Le macro iya kuchaza iklasi ekhethekileyo ye-static rekhoda, umakhi wayo oya kubizwa xa icandelo lilayishwe kwimemori.
Emva koku, unokwenza umzekelo wayo kwelinye icandelo:

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

Ukuxhasa iinkonzo, iSCOM ibonelela ngezibonelelo ezongezelelweyo, ezintsonkothileyo. Okungundoqo kuyo yingqikelelo yenkqubo ye-SCOM, esebenza njengesikhongozeli sokuqhuba iinkonzo (o.k.t., idlala indima yeSibonelelo seNkonzo), kwaye ikwaqulathe ukubophelela kwezibonelelo zengingqi. Inkqubo ye-SCOM ibotshelelwe kumsonto we-OS. Enkosi koku, ngaphakathi kwesicelo ungafumana iinkonzo ezinje:

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

Ngaphezu koko, ngokutshintshela ingqiqo (SCOM) iinkqubo ezibotshelelwe kumsonto, unokufumana izicelo ezizimeleyo ngokwembono yendawo yolwazi, esebenza ngaphakathi komsonto ofanayo. Yile ndlela umxhasi wethu obhityileyo osebenza ngayo kunye nedatha yefayile - ngaphakathi kwenkqubo enye ye-OS kukho iinkqubo ezimbini ze-SCOM, enye inxulumene nomxhasi, kwaye okwesibini kunye nomncedisi. Le ndlela ivumela ukuba sidibanise ukubhalwa kwekhowudi eya kusebenza zombini kwifayile yefayile yendawo kunye nakwi "real" client-server version. Ixabiso lokufana okunjalo liphezulu, kodwa ukuziqhelanisa kubonisa ukuba kufanelekile.

Ngokusekwe kwimodeli yecandelo le-SCOM, zombini ingqiqo yeshishini kunye nenxalenye yojongano lwe-1C: Ishishini liyaphunyezwa.

Indawo yomsebenzisi

Ngendlela, malunga ne-interfaces. Asisebenzisi ulawulo oluqhelekileyo lweWindows; ulawulo lwethu luphunyezwa ngokuthe ngqo kwiWindows API. Kuguqulelo lweLinux, umaleko wenziwe osebenza ngelayibrari yewxWidgets.
Ithala leencwadi lolawulo alixhomekekanga kwezinye iindawo ze-1C:Ishishini kwaye lisetyenziswa sithi kwezinye izinto ezininzi ezincinci zangaphakathi.

Kwiminyaka yophuhliso lwe-1C: Ishishini, ukubonakala kokulawula kutshintshile, kodwa utshintsho olunzulu lwemigaqo lwenzeke kanye kuphela, ngo-2009, ngokukhululwa kwenguqulo 8.2 kunye nokufika "kweefom ezilawulwayo". Ukongeza ekutshintsheni inkangeleko, umthetho-siseko woyilo lwefom utshintshile ngokusisiseko - bekukho ukukhatywa kwe-pixel-by-pixel yokubekwa kwezinto ngokuthanda ukuhamba-ukucwangciswa kwezinto. Ukongeza, kwimodeli entsha, ulawulo alusebenzi ngokuthe ngqo kunye nezinto zesizinda, kodwa ngee-DTO ezikhethekileyo (Izinto zokuGqithisela iDatha).
Olu tshintsho lwenza ukuba kube lula ukwenza i-1C: Umxhasi wewebhu weShishini ophindaphinda i-C++ yolawulo lweJavaScript. Sizama ukugcina ukulingana okusebenzayo phakathi kwabathengi abancinci kunye newebhu. Kwiimeko apho oku kungenakwenzeka, umzekelo ngenxa yokulinganiselwa kweJavaScript API ekhoyo (umzekelo, ukukwazi ukusebenza kunye neefayile kuncinci kakhulu), sihlala siphumeza umsebenzi oyimfuneko usebenzisa izandiso zesiphequluli ezibhalwe kwiC ++. Ngoku sixhasa i-Internet Explorer kunye neMicrosoft Edge (Windows), Google Chrome (Windows), Firefox (Windows kunye neLinux) kunye neSafari (MacOS).

Ukongeza, itekhnoloji yeefom ezilawulwayo isetyenziselwa ukwenza ujongano lwezicelo eziphathwayo kwiqonga le-1C. Kwizixhobo eziphathwayo, unikezelo lolawulo luphunyezwa kusetyenziswa ubuchwephesha bomthonyama kwisixokelelwano sokusebenza, kodwa kwimilo yoyilo lwefom kunye nempendulo ye-interface, ikhowudi efanayo isetyenziswa njenge "enkulu" 1C: Iqonga leShishini.

Iqonga "1C: Ishishini" - yintoni ephantsi kwe-hood?
1C ujongano kwi Linux OS

Iqonga "1C: Ishishini" - yintoni ephantsi kwe-hood?
Ujongano lwe-1C kwisixhobo esiphathwayo

1C ujongano kwamanye amaqonga Iqonga "1C: Ishishini" - yintoni ephantsi kwe-hood?
1C ujongano kwiWindows OS

Iqonga "1C: Ishishini" - yintoni ephantsi kwe-hood?
Ujongano 1C - umxhasi wewebhu

Vula Umnikezi

Nangona singasebenzisi amathala eencwadi asemgangathweni kubaphuhlisi beC ++ phantsi kweWindows (MFC, izilawuli ezivela kwiWinAPI), asizibhali zonke iinxalenye ngokwethu. Ithala leencwadi sele likhankanyiwe wxWidgets, kwaye sikwasebenzisa:

  • cURL ukusebenza ngeHTTP kunye neFTP.
  • OpenSSL ukusebenza ngecryptography kunye nokuseka imidibaniso ye-TLS
  • libxml2 kunye ne libxslt yokwahlulahlula kwe-XML
  • libetpan ukusebenza ngemigaqo yemeyile (POP3, SMTP, IMAP)
  • ukulinganisa ukucazulula imiyalezo ye-imeyile
  • sqllite yokugcina iilog zabasebenzisi
  • ICU ukwenzela ukwenziwa kwamazwe ngamazwe

Uluhlu luyaqhubeka.
Ukongeza, sisebenzisa inguqulelo eguqulwe kakhulu Uvavanyo lukaGoogle ΠΈ I-Google Mock xa kusenziwa uvavanyo lweeyunithi.
Amathala eencwadi afuna uhlengahlengiso ukuze ahambelane nemodeli yecandelo le-SCOM.
Ukuxhaphaka kwe-1C kwenza iqonga libe luvavanyo olubalaseleyo lwamandla kumathala eencwadi asetyenziswa kuwo. Abasebenzisi abahlukeneyo kunye neemeko zityhila ngokukhawuleza iimpazamo nakwiindawo ezinqabileyo zekhowudi. Siyazilungisa ngokwethu kwaye sizame ukuzibuyisela kubabhali bethala leencwadi. Amava onxibelelwano ajika ahluke kakhulu.
Abaphuhlisi cURL ΠΈ libetpan phendula ngokukhawuleza kwizicelo zokutsalwa, kodwa isiziba, umzekelo, kwi OpenSSL Asizange sikwazi ukuyibuyisela.

isiphelo

Kwinqaku esiye sachukumisa iinkalo ezininzi eziphambili zophuhliso lwe-1C: iqonga loShishino. Kumda olinganiselweyo wenqaku, sichukumise kuphela imiba ethile enomdla, ngokoluvo lwethu, imiba.
Inkcazo ngokubanzi yeendlela ezahlukeneyo zeqonga inokufumaneka apha.
Yiyiphi imixholo onokuba nomdla kuyo kumanqaku exesha elizayo?

Iphunyezwa njani iqonga eliphathwayo le-1C?
Inkcazo yesakhiwo sangaphakathi somthengi wewebhu?
Okanye mhlawumbi unomdla kwinkqubo yokukhetha iimpawu zokukhutshwa okutsha, ukuphuhlisa nokuvavanya?

Bhala kwizimvo!

umthombo: www.habr.com

Yongeza izimvo