Mayelana neklayenti lewebhu le-1C

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:

Mayelana neklayenti lewebhu le-1C

Iwindi elifanayo kuklayenti lewebhu (kusiphequluli se-Chrome):

Mayelana neklayenti lewebhu le-1C

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.

Mayelana neklayenti lewebhu le-1C

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:

  1. Bonisa isixhumi esibonakalayo somsebenzisi
  2. 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:

  1. I-WebTools - imitapo yolwazi eyabiwe esetshenziswa amanye amaphrojekthi (sifaka futhi Ilabhulali Yokuvalwa kwe-Google).
  2. Isici sokulawula I-FormattedDocument (yenziwe ku-JavaScript kukho kokubili iklayenti elincanyana kanye neklayenti lewebhu)
  3. Isici sokulawula Isihleli (yenziwe ku-JavaScript kukho kokubili iklayenti elincanyana kanye neklayenti lewebhu)
  4. 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-Google Closure Compiler. Umthelela wokusetshenziswa kwezinombolo - usayizi wohlaka lweklayenti lewebhu ngemuva kokufiphala:

  • 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 I-SonarQube, lapho sihlanganisa abahlaziyi bekhodi emile. Sisebenzisa abahlaziyi, siqapha ukucekelwa phansi kwekhwalithi yekhodi yomthombo we-JavaScript futhi sizame ukukunqanda.

Mayelana neklayenti lewebhu le-1C

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.

Mayelana neklayenti lewebhu le-1C

Ukuhlola

Ukuhlola ukusebenza nokusebenza, sisebenzisa ithuluzi lobunikazi (elibhalwe nge-Java ne-C++), kanye nohlu lokuhlola olwakhelwe phezulu selenium.

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.

Mayelana neklayenti lewebhu le-1C
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 I-Dynatrace AJAX Edition inkampani yokukhiqiza I-DynaTrace. Amalogi okwenziwa komsebenzi oyinkinga kokwakhiwe kwangaphambilini nokusha ayarekhodwa, bese amalogi ayahlaziywa. Ngasikhathi sinye, isikhathi sokwenziwa kokusebenza okukodwa (ngama-millisecond) kungenzeka singabi yisici esinqumayo - izinqubo zesevisi ezifana nokuqoqwa kukadoti ziqaliswa ngezikhathi ezithile esipheqululini, zingangena ngesikhathi sokwenziwa kwemisebenzi futhi zihlanekezele isithombe. Amapharamitha ahlobene kakhulu kuleli cala kuzoba inombolo yemiyalelo ye-JavaScript ekhishiwe, inani lemisebenzi ye-athomu ku-DOM, njll. Uma inani lemiyalelo/lemisebenzi kuskripthi esifanayo lenyuke enguqulweni entsha, lokhu cishe ngaso sonke isikhathi kusho ukwehla kokusebenza okudingeka kulungiswe.

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:

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. I-Microsoft Edge ayikazisekeli izandiso, ngakho-ke iklayenti lewebhu elikulo lisebenza nemikhawulo.

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

Engeza amazwana