Esinye sezici ezinhle ze-1C:Ubuchwepheshe bebhizinisi ukuthi isixazululo sohlelo lokusebenza, esithuthukiswe kusetshenziswa ubuchwepheshe bamafomu aphethwe, singethulwa kokubili kuklayenti elincane (elisebenzisekayo) le-Windows, Linux, MacOS X, futhi njengeklayenti lewebhu leziphequluli ezi-5 - I-Chrome, Internet Explorer, Firefox, Safari, Edge, nakho konke lokhu ngaphandle kokushintsha ikhodi yomthombo wohlelo lokusebenza. Ngaphezu kwalokho, ngaphandle uhlelo lokusebenza kuklayenti elincanyana nasesipheqululini lisebenza futhi libukeka licishe lifane.
Thola umehluko we-10 (izithombe ezi-2 ngaphansi kokusikwa):
Iwindi leklayenti elincane ku-Linux:
Iwindi elifanayo kuklayenti lewebhu (kusiphequluli se-Chrome):
Kungani senze iklayenti lewebhu? Ukukubeka ngendlela edabukisayo, isikhathi sisibekele umsebenzi onjalo. Ukusebenza nge-inthanethi sekuyisikhathi eside kuyisidingo sezicelo zebhizinisi. Okokuqala, sengeze amandla okusebenzela iklayenti lethu elincanyana nge-inthanethi (abanye esincintisana nabo, ngendlela, bayeka kulokhu; abanye, ngokuphambene nalokho, bashiye iklayenti elincanyana futhi bazenzela kuphela ukusebenzisa iklayenti lewebhu). Sinqume ukunikeza abasebenzisi bethu ithuba lokukhetha inketho yeklayenti ebafanele kakhulu.
Ukwengeza amakhono asekelwe kuwebhu kuklayenti elincanyana kwakuyiphrojekthi enkulu enoshintsho oluphelele ekwakhiweni kweseva yeklayenti. Ukudala iklayenti lewebhu iphrojekthi entsha ngokuphelele, eqala ekuqaleni.
Ukwakheka kwenkinga
Ngakho-ke, izidingo zephrojekthi: iklayenti lewebhu kufanele lenze okufanayo neklayenti elincanyana, okungukuthi:
- Bonisa isixhumi esibonakalayo somsebenzisi
- Sebenzisa ikhodi yeklayenti ebhalwe ngolimi lwe-1C
I-interface yomsebenzisi ku-1C ichazwa kumhleli obonakalayo, kodwa ngokumemezela, ngaphandle kokuhlelwa kwe-pixel-by-pixel yezinto; Kusetshenziswa izinhlobo ezingaba ngamashumi amathathu zezakhi zokusebenzelana - izinkinobho, izinkambu zokufaka (umbhalo, izinombolo, idethi/isikhathi), izinhlu, amathebula, amagrafu, njll.
Ikhodi yeklayenti ngolimi lwe-1C ingaqukatha izingcingo zeseva, ukusebenza ngezinsiza zendawo (amafayela, njll.), ukuphrinta, nokunye okuningi.
Kokubili iklayenti elincanyana (uma lisebenza ngewebhu) kanye neklayenti lewebhu lisebenzisa isethi efanayo yezinsizakalo zewebhu ukuxhumana neseva yohlelo lokusebenza lwe-1C. Ukuqaliswa kweklayenti, yiqiniso, kuhlukile - iklayenti elincanyana libhalwe ku-C++, iklayenti lewebhu libhalwe ku-JavaScript.
Umlando omncane
Iphrojekthi yeklayenti lewebhu yaqala ngo-2006, neqembu (ngokwesilinganiso) labantu aba-5. Ezigabeni ezithile zephrojekthi, abathuthukisi bahilelekile ekusebenziseni umsebenzi othile (idokhumenti yesipredishithi, imidwebo, njll.); njengomthetho, laba kwakungabathuthukisi abafanayo abenze lokhu kusebenza kuklayenti elincanyana. Labo. onjiniyela baphinde babhala izingxenye ku-JavaScript ababezidale ngaphambilini ku-C++.
Kusukela ekuqaleni, sinqabe umqondo wanoma yikuphi ukuguqulwa okuzenzakalelayo (ngisho okuyingxenye) kwekhodi yeklayenti elincanyana engu-C++ ibe iklayenti lewebhu le-JavaScript ngenxa yomehluko oqinile womqondo phakathi kwalezi zilimi ezimbili; iklayenti lewebhu labhalwa nge-JavaScript kusukela ekuqaleni.
Eziphindaphindweni zokuqala zephrojekthi, iklayenti lewebhu liguqule ikhodi yeklayenti ngolimi olwakhelwe ngaphakathi lwe-1C yaba yi-JavaScript. Iklayenti elincanyana lenza ngendlela ehlukile - ikhodi ngolimi olwakhelwe ngaphakathi lwe-1C ihlanganiswa ibe yi-bytecode, bese le bytecode itolikwa kuklayenti. Kamuva, iklayenti lewebhu laqala ukwenza okufanayo - okokuqala, linikeze inzuzo yokusebenza, futhi okwesibili, lenze kube nokwenzeka ukuhlanganisa ukwakheka kwamaklayenti amancane nawebhu.
Inguqulo yokuqala ye-1C:Inkundla yebhizinisi enokwesekwa kwamakhasimende ewebhu yakhululwa ngo-2009. Iklayenti lewebhu ngaleso sikhathi lalisekela iziphequluli ezi-2 - i-Internet Explorer neFirefox. Izinhlelo zangempela zazihlanganisa ukusekelwa kwe-Opera, kodwa ngenxa yezinkinga ezingenakunqotshwa ngaleso sikhathi ngezibambi zokuvala izinhlelo zokusebenza ku-Opera (akuzange kwenzeke ukulandelela ngokuqiniseka okungu-100% ukuthi isicelo siyavalwa, futhi ngaleso sikhathi kwenziwe inqubo yokunqamula ku-Opera. 1C iseva yesicelo) evela kulezi zinhlelo kwadingeka iyekwe.
Isakhiwo sephrojekthi
Sekukonke, inkundla ye-1C:Enterprise inamaphrojekthi angu-4 abhalwe nge-JavaScript:
- I-WebTools - imitapo yolwazi eyabiwe esetshenziswa amanye amaphrojekthi (sifaka futhi
Ilabhulali Yokuvalwa kwe-Google ). - Isici sokulawula
I-FormattedDocument (yenziwe ku-JavaScript kukho kokubili iklayenti elincanyana kanye neklayenti lewebhu) - Isici sokulawula
Isihleli (yenziwe ku-JavaScript kukho kokubili iklayenti elincanyana kanye neklayenti lewebhu) - Iklayenti lewebhu
Isakhiwo sephrojekthi ngayinye sifana nesakhiwo samaphrojekthi we-Java (noma amaphrojekthi we-NET - noma yikuphi okuseduze); Sinezikhala zamagama, futhi indawo yamagama ngayinye ikufolda ehlukile. Ngaphakathi kwefolda kunamafayela namakilasi e-namespace. Kunamafayela angaba ngu-1000 kuphrojekthi yeklayenti lewebhu.
Ngokwesakhiwo, iklayenti lewebhu lihlukaniswe kakhulu laba amasistimu angaphansi alandelayo:
- Isixhumi esibonakalayo sohlelo lokusebenza lweklayenti
- Isixhumi esibonakalayo esijwayelekile sohlelo lokusebenza (amamenyu wesistimu, amaphaneli)
- I-interface yamafomu aphethwe, okuhlanganisa, phakathi kwezinye izinto, izilawuli ezingaba ngu-30 (izinkinobho, izinhlobo ezihlukahlukene zezinkambu zokufaka - umbhalo, izinombolo, idethi/isikhathi, njll., amathebula, izinhlu, amagrafu, njll.)
- Imodeli yento etholakala konjiniyela kuklayenti (izinhlobo ezingaphezu kuka-400 sezizonke: imodeli yento yesixhumi esibonakalayo esiphethwe, izilungiselelo zesakhiwo sedatha, isitayela esinemibandela, njll.)
- Umtoliki wolimi olwakhelwe ngaphakathi lwe-1C
- Izandiso zesiphequluli (ezisetshenziselwa ukusebenza azisekelwe ku-JavaScript)
- Ukusebenza nge-cryptography
- Ukusebenza ngamafayela
- Ubuchwepheshe bezingxenye zangaphandle, ezivumela ukuthi zisetshenziswe kokubili amaklayenti amancane nawebhu
Izici Zokuthuthukiswa
Ukusebenzisa konke okungenhla ku-JavaScript akulula. Mhlawumbe iklayenti lewebhu ye-1C ingenye yezinhlelo zokusebenza ezinkulu eziseceleni zeklayenti ezibhalwe ku-JavaScript - cishe imigqa engu-450.000. Sisebenzisa indlela egxile entweni kukhodi yeklayenti lewebhu, eyenza kube lula ukusebenza ngephrojekthi enkulu kangaka.
Ukunciphisa usayizi wekhodi yeklayenti, siqale sasebenzisa i-obfuscator yethu, futhi siqala ngenguqulo yesikhulumi 8.3.6 (Okthoba 2014) saqala ukuyisebenzisa.
- I-obfuscator siqu - 1556 kb
- I-Google Closure Compiler β 1073 kb
Ukusebenzisa i-Google Closure Compiler kwasisiza ukuba sithuthukise ukusebenza kweklayenti lewebhu ngo-30% uma kuqhathaniswa ne-obfuscator yethu. Ngaphezu kwalokho, inani lememori elisetshenziswe uhlelo lokusebenza lehle ngo-15-25% (kuye ngokuthi isiphequluli).
I-Google Closure Compiler isebenza kahle kakhulu ngekhodi egxile entweni, ngakho ukusebenza kwayo kahle kweklayenti lewebhu kuphezulu ngangokunokwenzeka. I-Closure Compiler isenzela izinto ezimbalwa ezinhle:
- Ukuhlola uhlobo olungaguquki esigabeni sokwakha iphrojekthi (kuqinisekisa ukuthi sifaka ikhodi ngezichasiselo ze-JSDoc). Umphumela uwukuthayipha okumile, kusondele kakhulu ezingeni lokuthayipha ku-C++. Lokhu kusiza ukubamba iphesenti elikhulu impela lamaphutha esigabeni sokuhlanganiswa kwephrojekthi.
- Ukunciphisa usayizi wekhodi ngokusebenzisa i-obfuscation
- Inani lokulungiselelwa kwekhodi ekhishiwe, isibonelo, njenge:
- ukushintshwa komsebenzi okusemgqeni. Ukushayela umsebenzi ku-JavaScript kuwumsebenzi obiza kakhulu, futhi ukushintshwa okusemgqeni kwezindlela ezincane ezisetshenziswa njalo kuyisheshisa kakhulu ikhodi.
- Ukubala okungaguquki ngesikhathi sokuhlanganisa. Uma isisho sincike kokungaguquki, inani langempela lokungaguquki lizothathelwa indawo kulo
Sisebenzisa i-WebStorm njengendawo yokuthuthukisa iklayenti lethu lewebhu.
Ukuhlaziya ikhodi sisebenzisa
Yiziphi izinkinga esinazo/esizixazululayo?
Ngesikhathi sokuqaliswa kwephrojekthi, sihlangabezane nenani lezinkinga ezithakazelisayo okufanele sizixazulule.
Shintshanisa idatha neseva naphakathi kwamawindi
Kunezimo lapho ukufiphala kwekhodi yomthombo kungaphazamisa ukusebenza kwesistimu. Ikhodi engaphandle kwekhodi esebenzisekayo yeklayenti lewebhu, ngenxa ye-obfuscation, ingase ibe namagama okusebenza kanye nepharamitha ahlukile kulawo amakhodi ethu asebenzisekayo alindeleke. Ikhodi yethu yangaphandle ithi:
- Ikhodi evela kuseva ngendlela yezakhiwo zedatha
- Ikhodi yelinye iwindi lohlelo lokusebenza
Ukugwema ukungaqondakali lapho usebenzisana neseva, sisebenzisa umaka we-@expose:
/**
* @constructor
* @extends {Base.SrvObject}
*/
Srv.Core.GenericException = function ()
{
/**
* @type {string}
* @expose
*/
this.descr;
/**
* @type {Srv.Core.GenericException}
* @expose
*/
this.inner;
/**
* @type {string}
* @expose
*/
this.clsid;
/**
* @type {boolean}
* @expose
*/
this.encoded;
}
Futhi ukuze sigweme ukufiphala lapho sisebenzisana namanye amawindi, sisebenzisa lokho okubizwa ngokuthi yi-interfaces ethunyelwa ngaphandle (izixhumi ezibonakalayo lapho zonke izindlela zithunyelwa khona).
/**
* ΠΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Π° DropDownWindow
*
* @interface
* @struct
*/
WebUI.IDropDownWindowExp = function(){}
/**
* ΠΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅Ρ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° 1 Π²ΠΏΠ΅ΡΠ΅Π΄ ΠΈΠ»ΠΈ Π½Π°Π·Π°Π΄
*
* @param {boolean} isForward
* @param {boolean} checkOnly
* @return {boolean}
* @expose
*/
WebUI.IDropDownWindowExp.prototype.moveMarker = function (isForward, checkOnly){}
/**
* ΠΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅Ρ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ Π² Π½Π°ΡΠ°Π»ΠΎ ΠΈΠ»ΠΈ ΠΊΠΎΠ½Π΅Ρ
*
* @param {boolean} isFirst
* @param {boolean} checkOnly
* @return {boolean}
* @expose
*/
WebUI.IDropDownWindowExp.prototype.moveMarkerTo = function (isFirst, checkOnly){}
/**
* @return {boolean}
* @expose
*/
WebUI.IDropDownWindowExp.prototype.selectValue = function (){}
Sasebenzisa i-Virtual DOM ngaphambi kokuthi ibe yinjwayelo)
Njengabo bonke onjiniyela abasebenzelana nama-Web UI ayinkimbinkimbi, sisheshe sabona ukuthi i-DOM ayikufanelanga kahle ukusebenza nezixhumi ezibonakalayo zabasebenzisi. Cishe ngokushesha, i-analogue ye-Virtual DOM yasetshenziswa ukuze kuthuthukiswe umsebenzi nge-UI. Ngesikhathi sokucubungula umcimbi, zonke izinguquko ze-DOM zigcinwa enkumbulweni futhi, kuphela lapho yonke imisebenzi isiqediwe, izinguquko eziqoqiwe zisetshenziswa esihlahleni se-DOM.
Ukulungiselela iklayenti lewebhu
Ukwenza iklayenti lethu lewebhu lisebenze ngokushesha, sizama ukusebenzisa amandla esiphequluli ajwayelekile (i-CSS, njll.) kakhulu. Ngakho, iphaneli yomyalo wefomu (etholakala cishe kuzo zonke izinhlobo zohlelo lokusebenza) inikezwa ngokukhethekile kusetshenziswa amathuluzi esiphequluli, kusetshenziswa ukwakheka okuguquguqukayo okusekelwe ku-CSS.
Ukuhlola
Ukuhlola ukusebenza nokusebenza, sisebenzisa ithuluzi lobunikazi (elibhalwe nge-Java ne-C++), kanye nohlu lokuhlola olwakhelwe phezulu
Ithuluzi lethu lisebenza emhlabeni wonke - likuvumela ukuthi uhlole cishe noma yiluphi uhlelo olufakwe ifasitela, ngakho-ke lifanele ukuhlola kokubili iklayenti elincanyana kanye neklayenti lewebhu. Ithuluzi lirekhoda izenzo zomsebenzisi owethule isisombululo sohlelo lokusebenza lwe-1C kufayela lombhalo. Ngasikhathi sinye, izithombe zendawo yokusebenza yesikrini - izindinganiso - ziyarekhodwa. Lapho uqapha izinguqulo ezintsha zeklayenti lewebhu, imibhalo idlalwa ngaphandle kokubamba iqhaza komsebenzisi. Ezimeni lapho isithombe-skrini singafani nesethenjwa kunoma yisiphi isinyathelo, ukuhlola kuthathwa njengehlulekile, ngemva kwalokho uchwepheshe wekhwalithi enze uphenyo ukuze anqume ukuthi leli iphutha noma ushintsho oluhleliwe ekuziphatheni kwesistimu. Esimeni sokuziphatha okuhleliwe, amazinga ashintshwa ngokuzenzakalelayo afakwe amasha.
Ithuluzi futhi likala ukusebenza kohlelo lokusebenza ngokunemba okungafika kuma-millisecond angama-25. Kwezinye izimo, sihlanganisa izingxenye zeskripthi (isibonelo, ukuphinda ukufakwa kwe-oda izikhathi ezimbalwa) ukuze sihlaziye ukucekelwa phansi kwesikhathi sokwenza ngokuhamba kwesikhathi. Imiphumela yazo zonke izilinganiso irekhodwa kulogi ukuze ihlaziywe.
Ithuluzi lethu lokuhlola kanye nesicelo esingaphansi kokuhlolwa
Ithuluzi lethu kanye neSelenium kuyaphelelisana; isibonelo, uma inkinobho ethile kwesinye sezikrini ishintshe indawo yayo, i-Selenium ingase ingakulandeleli lokhu, kodwa ithuluzi lethu lizoqaphela, ngoba yenza ukuqhathanisa kwe-pixel-by-pixel kwesithombe-skrini nejwayelekile. Ithuluzi liyakwazi futhi ukulandelela izinkinga ngokucubungula okokufaka okuvela kukhibhodi noma kumagundane, njengoba kuyilokho kanye elikhiqizayo.
Ukuhlolwa kwawo womabili amathuluzi (ethu ne-Selenium) kusebenzisa izimo zokusebenza ezijwayelekile kusuka kuzixazululo zethu zohlelo lokusebenza. Ukuhlolwa kwethulwa ngokuzenzakalelayo ngemva kokwakhiwa kwansuku zonke kweplathifomu ye-1C:Enterprise. Uma imibhalo ihamba kancane (uma kuqhathaniswa nokwakhiwa kwangaphambilini), siyaphenya futhi sixazulule imbangela yokwehla kokwehla. Umbandela wethu ulula - isakhiwo esisha akufanele sisebenze kancane kunangaphambili.
Onjiniyela basebenzisa amathuluzi ahlukene ukuze baphenye izigameko zokwehla komnotho; esetshenziswa kakhulu
Futhi, esinye sezizathu zokwehla kokusebenza kungase kube ukuthi I-Google Closure Compiler ngesizathu esithile ayikwazanga ukwenza ukumiselela okusemgqeni komsebenzi (isibonelo, ngenxa yokuthi umsebenzi uyaphindaphinda noma ungokoqobo). Kulokhu, sizama ukulungisa isimo ngokubhala kabusha ikhodi yomthombo.
Izandiso zesiphequluli
Uma isisombululo sohlelo lokusebenza sidinga ukusebenza okungatholakali ku-JavaScript, sisebenzisa izandiso zesiphequluli:
- ukusebenza ngamafayela
- ukusebenza nge-cryptography
- sebenza nge
izingxenye zangaphandle
Izandiso zethu zinezingxenye ezimbili. Ingxenye yokuqala yilokho okubizwa ngokuthi isandiso sesiphequluli (imvamisa izandiso ze-Chrome neFirefox ezibhalwe ku-JavaScript), ezisebenzisana nengxenye yesibili - isandiso kanambambili esisebenzisa ukusebenza esikudingayo. Kufanele kushiwo ukuthi sibhala izinguqulo ezi-3 zezandiso kanambambili - zeWindows, Linux kanye neMacOS. Isandiso kanambambili sihlinzekwa njengengxenye yeplathifomu ye-1C:Enterprise futhi sitholakala kuseva yohlelo lokusebenza lwe-1C. Isikhathi sokuqala sibizwa ngeklayenti lewebhu, silandwa kukhompyutha yeklayenti futhi sifakwe esipheqululini.
Uma isebenza ku-Safari, izandiso zethu zisebenzisa i-NPAPI; uma zisebenza ku-Internet Explorer, zisebenzisa ubuchwepheshe be-ActiveX.
Ukuthuthuka okuqhubekayo
Omunye wemisebenzi yethimba lokuthuthukisa amaklayenti ewebhu ukuthuthukiswa okuqhubekayo kokusebenza. Ukusebenza kweklayenti lewebhu kufanele kufane nokusebenza kweklayenti elincanyana; konke ukusebenza okusha kusetshenziswa ngesikhathi esisodwa kuwo womabili amaklayenti amancane nawewebhu.
Eminye imisebenzi ihlanganisa ukuthuthukisa i-architecture, ukulungisa kabusha, ukuthuthukisa ukusebenza nokuthembeka. Isibonelo, enye yezikhombisi-ndlela ukunyakaza okuqhubekayo kumodeli yomsebenzi ongavumelanisi. Okunye ukusebenza kweklayenti lewebhu okwamanje kwakhelwe phezu kwemodeli yokuvumelanisa yokusebenzisana neseva. Imodeli ye-asynchronous manje isiba usizo kakhulu kuziphequluli (hhayi ezipheqululini kuphela), futhi lokhu kusiphoqa ukuthi siguqule iklayenti lewebhu ngokushintsha izingcingo ezivumelanisiwe ngama-asynchronous (kanye nokufaka kabusha ikhodi ngokufanele). Ukushintsha kancane kancane kumodeli ye-asynchronous kuchazwa isidingo sokusekela izixazululo ezikhishiwe kanye nokuzivumelanisa kwazo kancane kancane.
Source: www.habr.com