Malunga nomxhasi wewebhu we-1C

Enye yeempawu ezintle ze-1C: Itekhnoloji yeShishini kukuba isisombululo sesicelo, esiphuhliswe kusetyenziswa itekhnoloji yeefom ezilawulwayo, sinokusungulwa zombini kumxhasi obhityileyo (osebenzayo) weWindows, Linux, MacOS X, kwaye njengomthengi wewebhu kwiziphequluli ezi-5 - Chrome, Internet Explorer, Firefox, Safari, Edge, nayo yonke le nto ngaphandle kokutshintsha ikhowudi yomthombo wesicelo. Ngaphezu koko, ngaphandle isicelo kumxhasi obhityileyo kunye nakwibrawuza isebenza kwaye ijongeka iphantse ifane.
Fumana iiyantlukwano ezili-10 (imifanekiso emi-2 phantsi komsiki):

Ifestile yomxhasi omncinci kwiLinux:

Malunga nomxhasi wewebhu we-1C

Kwaloo festile kumxhasi wewebhu (kwisikhangeli seChrome):

Malunga nomxhasi wewebhu we-1C

Kutheni senze umxhasi wewebhu? Ukuyibeka ngendlela elusizi, ixesha lisibekele umsebenzi onjalo. Ukusebenza kwi-Intanethi kudala kuyeyona nto ifunekayo kwizicelo zeshishini. Okokuqala, songeze amandla okusebenza nge-Intanethi kumxhasi wethu obhityileyo (abanye abakhuphisana nabo, ngendlela, bamisa apho; abanye, ngokuchaseneyo, bamshiyile umxhasi obhityileyo kwaye bazilinganisela ekuphumezeni umxhasi wewebhu). Sigqibe ekubeni sinike abasebenzisi bethu ithuba lokukhetha ukhetho lomthengi olubafaneleyo.

Malunga nomxhasi wewebhu we-1C

Ukongeza ubuchule obusekwe kwiwebhu kumxhasi obhityileyo yayiyiprojekthi enkulu enotshintsho olupheleleyo kulwakhiwo lwe-server-server. Ukudala umxhasi wewebhu yiprojekthi entsha ngokupheleleyo, eqala ukusuka ekuqaleni.

Џџ Ρ•Πƒ Β° Β°

Ke, iimfuno zeprojekthi: umxhasi wewebhu kufuneka enze okufanayo nomxhasi obhityileyo, oko kukuthi:

  1. Bonisa ujongano lomsebenzisi
  2. Yenza ikhowudi yomxhasi ebhalwe ngolwimi lwe-1C

I-interface yomsebenzisi kwi-1C ichazwe kumhleli obonakalayo, kodwa ngokuvakalisa, ngaphandle kwe-pixel-by-pixel ilungiselelo lezinto; Malunga neshumi elinesibini leentlobo ze-interface yezinto ezisetyenzisiweyo - amaqhosha, imimandla yokufaka (umbhalo, amanani, umhla / ixesha), uluhlu, iitheyibhile, iigrafu, njl.

Ikhowudi yomthengi ngolwimi lwe-1C inokuquka iifowuni zeseva, ukusebenza kunye nezixhobo zendawo (iifayile, njl.), Ukuprinta, kunye nokunye okuninzi.

Bobabini umxhasi obhityileyo (xa usebenza ngewebhu) kunye nomxhasi wewebhu basebenzisa iseti efanayo yeenkonzo zewebhu ukunxibelelana nomncedisi wesicelo we-1C. Ukuphunyezwa komthengi, ngokuqinisekileyo, kuyahluka - umxhasi omncinci ubhalwe kwiC ++, umthengi wewebhu ubhalwe kwiJavaScript.

Inxalenye ethile yembali

Iprojekthi yomxhasi wewebhu yaqala ngo-2006, kunye neqela (ngokomndilili) abantu be-5. Kwizigaba ezithile zeprojekthi, abaphuhlisi babandakanyeka ukuphumeza umsebenzi othile (uxwebhu lwespreadsheet, imizobo, njl.); njengomthetho, aba ngabaphuhlisi abafanayo abenze lo msebenzi kumxhasi obhityileyo. Ezo. abaphuhlisi baphinde babhala amacandelo kwiJavaScript abathe bawenza ngaphambili kwi-C++.

Kwasekuqaleni, siye sayikhaba imbono yayo nayiphi na inguqulelo ezenzekelayo (nokuba yinxalenye) yekhowudi yomxhasi obhityileyo we-C++ kumxhasi wewebhu weJavaScript ngenxa yomahluko omkhulu wengqikelelo phakathi kweelwimi ezimbini; umxhasi wewebhu ubhalwe kwiJavaScript ukusuka ekuqaleni.

Ekuphindaphindweni kokuqala kweprojekthi, umxhasi wewebhu uguqule ikhowudi yomxhasi kulwimi olwakhelwe ngaphakathi lwe-1C ngqo kwiJavaScript. Umxhasi obhityileyo wenza ngokwahlukileyo - ikhowudi kulwimi olwakhelwe ngaphakathi lwe-1C ihlanganiswe kwi-bytecode, kwaye le bytecode itolikwa kumxhasi. Emva koko, umxhasi wewebhu waqala ukwenza okufanayo - okokuqala, wanika inzuzo yokusebenza, kwaye okwesibini, kwenze ukuba kube lula ukudibanisa i-architecture yabaxumi kunye nabaxumi bewebhu.

Inguqulelo yokuqala ye-1C: Iqonga leShishini kunye nenkxaso yomxhasi wewebhu yakhululwa kwi-2009. Umxhasi wewebhu ngelo xesha wayexhasa izikhangeli ezi-2-Internet Explorer kunye neFirefox. Izicwangciso zantlandlolo zibandakanya inkxaso ye-Opera, kodwa ngenxa yeengxaki ezingenakugqithiswa ngelo xesha kunye nabaphangi abavala isicelo kwi-Opera (kwakungenakwenzeka ukulandelela nge-100% ngokuqinisekileyo ukuba isicelo sivala, kwaye ngaloo mzuzu uqhuba inkqubo yokuqhawula iseva yesicelo se-1C) kwezi zicwangciso kwafuneka ziyekwe.

Ubume beprojekthi

Lilonke, i-1C:Iqonga leShishini lineeprojekthi ezi-4 ezibhalwe kwiJavaScript:

  1. Izixhobo zeWeb - amathala eencwadi ekwabelwana ngawo asetyenziswa zezinye iiprojekthi (sikwabandakanya Ukuvalwa kweThala leencwadi likaGoogle).
  2. Isiqalelo solawulo Uxwebhu olufomathiweyo (isetyenziswe kwiJavaScript kubo bobabini umxhasi obhityileyo kunye nomxhasi wewebhu)
  3. Isiqalelo solawulo Umcwangcisi (isetyenziswe kwiJavaScript kubo bobabini umxhasi obhityileyo kunye nomxhasi wewebhu)
  4. Umxhasi wewebhu

Ubume beprojekthi nganye bufana nesakhiwo seeprojekthi zeJava (okanye iiprojekthi zeNET - nayiphi na ikufutshane); Sinezithuba zamagama, kwaye isithuba samagama ngasinye sikwifolda eyahlukileyo. Ngaphakathi kwesiqulathi seefayili kukho iifayile kunye neeklasi zesithuba samagama. Kukho malunga neefayile ze-1000 kwiprojekthi yomthengi wewebhu.

Ngokwesakhiwo, umxhasi wewebhu wahlulwe kakhulu kwezi subsystems zilandelayo:

  • Ujongano lwesicelo somthengi olawulwayo
    • Ujongano lwesicelo ngokubanzi (iimenyu zenkqubo, iiphaneli)
    • Ukudibana kweefom ezilawulwayo, kubandakanywa, phakathi kwezinye izinto, malunga nama-30 olawulo (amaqhosha, iindidi ezahlukeneyo zemimandla yegalelo - umbhalo, amanani, umhla / ixesha, njl., iitheyibhile, izintlu, iigrafu, njl. njl.)

  • Imodeli yento ekhoyo kubaphuhlisi kumxhasi (ngaphezu kweentlobo ezingama-400 zizonke: imodeli yento yojongano olulawulwayo, useto loyilo lwedatha, isimbo esinemiqathango, njl.njl.)
  • Itoliki yolwimi olwakhelwe ngaphakathi lwe-1C
  • Izandiso zebhrawuza (ezisetyenziselwa ukusebenza azixhaswanga kwiJavaScript)
    • Ukusebenza nge-cryptography
    • Ukusebenza ngeefayile
    • Itekhnoloji yamacandelo angaphandle, evumela ukuba isetyenziswe kubo bobabini abathengi abancinci kunye newebhu

Iimpawu zoPhuhliso

Ukuphumeza konke oku ngasentla kwiJavaScript akulula. Mhlawumbi umxhasi wewebhu we-1C ngomnye wezicelo ezinkulu zecala lomxhasi ezibhalwe kwiJavaScript - malunga nemigca engama-450.000. Sisebenzisa ngokusebenzayo indlela ejolise kwinto kwikhowudi yomxhasi wewebhu, eyenza lula ukusebenza ngeprojekthi enkulu.

Ukunciphisa ubungakanani bekhowudi yomxhasi, saqala sasebenzisa i-obfuscator yethu, kwaye siqala nge-platform version 8.3.6 (Oktobha 2014) saqala ukuyisebenzisa. Google Ukuvalwa Compiler. Isiphumo sokusetyenziswa kwamanani-ubungakanani besakhelo somxhasi wewebhu emva kwe-obfuscation:

  • I-obfuscator eyakho – 1556 kb
  • I-Google Closure Compiler - 1073 kb

Ukusebenzisa i-Google Closure Compiler yasinceda ukuba siphucule ukusebenza komthengi wewebhu nge-30% xa kuthelekiswa ne-obfuscator yethu. Ukongeza, inani lememori elisetyenziswe sisicelo liye lancipha ngo-15-25% (kuxhomekeke kwisikhangeli).

I-Google Closure Compiler isebenza kakuhle kakhulu ngekhowudi ejoliswe kwinto, ngoko ke ukusebenza kwayo kumthengi wewebhu kuphezulu kangangoko kunokwenzeka. Ukuvala Compiler usenzela izinto ezilungileyo ezimbalwa:

  • Ukujonga uhlobo oluzinzileyo kwinqanaba lokwakha iprojekthi (iqinisekisa ukuba sigubungela ikhowudi ngeenkcazo zeJSDoc). Isiphumo kukuchwetheza okumileyo, kufutshane kakhulu kwinqanaba lokuchwetheza kwi-C++. Oku kunceda ukubamba ipesenti enkulu ngokwaneleyo yeempazamo kwinqanaba loqulunqo lweprojekthi.
  • Ukunciphisa ubungakanani bekhowudi ngokusebenzisa i-obfuscation
  • Inani lolungiselelo lwekhowudi eyenziweyo, umzekelo, njenge:
    • ukutshintshwa kwemisebenzi engaphakathi. Ukufowunela umsebenzi kwiJavaScript lumsebenzi onexabiso elithe kratya, kwaye uguqulelo olungaphakathi lweendlela ezincinci ezisetyenziswa rhoqo zikhawulezisa ikhowudi.
    • Ukubala ukuqina ngexesha lokuqokelela. Ukuba inkcazo ixhomekeke kwisigxina, elona xabiso loqobo lokuguquguquka liza kufakwa endaweni yalo

Sisebenzisa iWebStorm njengendawo yethu yophuhliso lwabathengi.

Uhlalutyo lwekhowudi sisebenzisa I-SonarQube, apho sidibanisa i-static code analyzers. Ukusebenzisa abahlalutyi, sibeka esweni ukuthotywa komgangatho wekhowudi yomthombo weJavaScript kwaye sizame ukuyithintela.

Malunga nomxhasi wewebhu we-1C

Zeziphi iingxaki esinazo/sizisombululayo?

Ngexesha lokuphunyezwa kweprojekthi, siye sadibana neengxaki ezininzi ezinomdla ekwakufuneka sizisombulule.

Tshintshiselana ngedatha neseva naphakathi kweefestile

Kukho iimeko apho i-obfuscation yekhowudi yomthombo inokuphazamisa ukusebenza kwenkqubo. Ikhowudi yangaphandle kwikhowudi ephunyeziweyo yomxhasi wewebhu, ngenxa ye-obfuscation, inokuba nomsebenzi kunye namagama eparameter awahlukileyo kulawo alindelwe yikhowudi yethu ephunyeziweyo. Ikhowudi yethu yangaphandle yile:

  • Ikhowudi evela kumncedisi ngendlela yezakhiwo zedatha
  • Ikhowudi yenye ifestile yesicelo

Ukunqanda ukuphazamiseka xa usebenzisana nomncedisi, sisebenzisa i- @expose tag:

/**
 * @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;
}

Kwaye ukuphepha ukuphazamiseka xa usebenzisana nezinye iifestile, sisebenzisa into ebizwa ngokuba yi-interfaces (i-interfaces apho zonke iindlela zithunyelwa ngaphandle).

/**
 * ЭкспортируСмый интСрфСйс ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π° 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-DOM ebonakalayo ngaphambi kokuba ibe yinto eqhelekileyo)

Njengabo bonke abaphuhlisi abajongana nee-UI zeWebhu ezintsonkothileyo, sikhawuleze saqonda ukuba iDOM ayikufanelanga ukusebenza kunye nojongano oluguquguqukayo lwabasebenzisi. Phantse ngokukhawuleza, i-analogue ye-Virtual DOM yaphunyezwa ukwandisa umsebenzi nge-UI. Ngethuba lokucubungula umcimbi, zonke iinguqu ze-DOM zigcinwa kwimemori kwaye, kuphela xa yonke imisebenzi igqityiwe, utshintsho oluqokelelweyo lusetyenziswa kumthi we-DOM.

Ukuphucula umxhasi wewebhu

Ukwenza umxhasi wethu wewebhu asebenze ngokukhawuleza, sizama ukusebenzisa ubuchule obuqhelekileyo besiphequluli (i-CSS, njl.) ukuya phezulu. Ke, iphaneli yomyalelo wefom (ebekwe phantse kuzo zonke iifom zesicelo) inikezelwa kuphela kusetyenziswa izixhobo zebrawuza, kusetyenziswa uyilo oluguquguqukayo olusekwe kwiCSS.

Malunga nomxhasi wewebhu we-1C

Ukuvavanywa

Uvavanyo olusebenzayo kunye nokusebenza, sisebenzisa isixhobo sobunini (esibhalwe kwiJava kunye neC ++), kunye neqela leemvavanyo ezakhiwe phezulu Selenium.

Isixhobo sethu sikwindawo yonke - ikuvumela ukuba uvavanye phantse nayiphi na inkqubo enefestile, kwaye ke ifanelekile ukuvavanya umxhasi obhityileyo kunye nomxhasi wewebhu. Isixhobo sirekhoda izenzo zomsebenzisi oqalise isisombululo sesicelo se-1C kwifayile yeskripthi. Kwangelo xesha, imifanekiso yendawo yokusebenza yesikrini-imigangatho-iyarekhodwa. Xa ubeka iliso kwiinguqulelo ezintsha zomthengi wewebhu, izikripthi zidlalwa ngaphandle kokuthatha inxaxheba komsebenzisi. Kwiimeko apho umfanekiso weskrini awuhambelani nereferensi enye nakweliphi na inyathelo, uvavanyo luthathwa njengelihlulekile, emva koko ingcali yekhwalithi yenza uphando ukuze ibone ukuba le yimpazamo okanye utshintsho olucwangcisiweyo kwindlela yokuziphatha kwenkqubo. Kwimeko yokuziphatha okucwangcisiweyo, imigangatho iyatshintshwa ngokuzenzekelayo ngeminye emitsha.

Isixhobo sikwalinganisa ukusebenza kwesicelo ngokuchaneka ukuya kuthi ga kwi-25 milliseconds. Kwezinye iimeko, sijika iinxalenye zeskripthi (umzekelo, ukuphinda ukufakwa komyalelo izihlandlo ezininzi) ukuhlalutya ukuthotywa kwexesha lokwenziwa kwexesha. Iziphumo zayo yonke imilinganiselo zirekhodwa kwilogi ukuze kuhlalutywe.

Malunga nomxhasi wewebhu we-1C
Isixhobo sethu sokuvavanya kunye nesicelo phantsi kovavanyo

Isixhobo sethu kunye neSelenium ziyancedisana; umzekelo, ukuba iqhosha elithile kwesinye sezikrini litshintshile indawo yalo, iSelenium ayinakuyilandela le nto, kodwa isixhobo sethu siyakuqaphela, kuba yenza ipixel-nge-pixel uthelekiso lwekhusi kunye nomgangatho. Isixhobo sikwayakwazi ukulandelela iingxaki ngegalelo lokucubungula ukusuka kwibhodi yezitshixo okanye imouse, kuba yile nto kanye ivelisa ngayo.

Uvavanyo kuzo zombini izixhobo (zethu kunye neSelenium) ziqhuba iimeko eziqhelekileyo zomsebenzi kwizisombululo zethu zesicelo. Iimvavanyo ziqaliswa ngokuzenzekelayo emva kokwakhiwa kwemihla ngemihla kwe-1C: iqonga leShishini. Ukuba izikripthi zicotha (xa kuthelekiswa nolwakhiwo lwangaphambili), siyaphanda kwaye sisombulule unobangela wokucotha. Ikhrayitheriya yethu ilula-ulwakhiwo olutsha kufuneka lungasebenzi kancinci kunolo lwangaphambili.

Abaphuhlisi basebenzisa izixhobo ezahlukeneyo ukuphanda izehlo zokucotha; isetyenziswa ikakhulu Dynatrace AJAX Edition inkampani yokuvelisa DynaTrace. Iilogi zokwenziwa komsebenzi oyingxaki kwizakhiwo zangaphambili kunye nezitsha zirekhodwa, emva koko iilogi zihlalutywa. Ngexesha elifanayo, ixesha lokuphunyezwa kwemisebenzi eyodwa (kwi-milliseconds) ayinakuba yinto ecacileyo - iinkqubo zenkonzo ezifana nokuqokelela inkunkuma ziqaliswa ngamaxesha athile kwi-browser, zinokuthi zihambelane kunye nexesha lokwenziwa kwemisebenzi kunye nokuphazamisa umfanekiso. Iiparamitha ezifanelekileyo kulo mzekelo ziya kuba linani lemiyalelo yeJavaScript eyenziweyo, inani lemisebenzi yeathom kwiDOM, njl. Ukuba inani lemiyalelo / imisebenzi kwiskripthi esifanayo liye landa kwinguqu entsha, oku phantse kusoloko kuthetha ukuhla kwentsebenzo efuna ukulungiswa.

Kwakhona, esinye sezizathu zokuhla kwentsebenzo kukuba i-Google Closure Compiler ngenxa yesizathu esithile ayikwazanga ukwenza ukutshintshwa kwe-inline yomsebenzi (umzekelo, kuba umsebenzi uphindaphinda okanye unyanisekile). Kule meko, sizama ukulungisa imeko ngokubhala kwakhona ikhowudi yomthombo.

Izandiso zebhrawuza

Xa isisombululo sesicelo sifuna umsebenzi ongafumanekiyo kwiJavaScript, sisebenzisa izandiso zebrawuza:

Izandiso zethu ziquka iinxalenye ezimbini. Inxalenye yokuqala yinto ebizwa ngokuba yi-browser extension (ngokuqhelekileyo izandiso zeChrome kunye neFirefox ebhalwe kwiJavaScript), esebenzisana nenxalenye yesibini - isandiso sebhinari esiphumeza ukusebenza esikufunayo. Kufuneka kukhankanywe ukuba sibhala iinguqulelo ezi-3 zezandiso zebhinari - kwiWindows, Linux kunye neMacOS. Ukongezwa kokubini kunikezelwe njengenxalenye ye-1C:Iqonga leShishini kwaye ibekwe kwi-server yesicelo se-1C. Xa ubizwa okokuqala kumxhasi wewebhu, ikhutshelwa kwikhompyuter yomxhasi kwaye ifakwe kwisikhangeli.

Xa usebenza kwiSafari, izandiso zethu zisebenzisa iNPAPI; xa zisebenza kwi-Internet Explorer, zisebenzisa itekhnoloji ye-ActiveX. Microsoft Edge ayikaxhasi izongezo, ngoko umxhasi wewebhu kuyo usebenza ngezithintelo.

Uphuhliso olongezelelweyo

Omnye wemisebenzi yeqela lophuhliso lwabathengi bewebhu kuphuhliso olongezelelweyo lomsebenzi. Ukusebenza komxhasi wewebhu kufuneka kufane nokusebenza komxhasi obhityileyo; yonke imisebenzi emitsha iphunyezwa ngaxeshanye kubathengi ababhityileyo nakwiwebhu.

Eminye imisebenzi ibandakanya ukuphuhlisa uyilo, ukulungiswa kwakhona, ukuphucula ukusebenza kunye nokuthembeka. Umzekelo, enye yezalathiso yintshukumo eyongezelelweyo isiya kwimodeli yomsebenzi engahambelaniyo. Eminye yemisebenzi yomthengi wewebhu okwangoku yakhiwe kwimodeli ehambelanayo yokunxibelelana nomncedisi. Imodeli ye-asynchronous ngoku iya iba yinto efanelekileyo ngakumbi kwiziphequluli (kwaye kungekhona kuphela kwiziphequluli), kwaye oku kusinyanzela ukuba siguqule umxhasi wewebhu ngokutshintsha iifowuni ezihambelanayo kunye ne-asynchronous (kunye nokubuyisela ikhowudi ngokufanelekileyo). Ukutshintshwa ngokuthe ngcembe kwimodeli ye-asynchronous kuchazwa yimfuneko yokuxhasa izisombululo ezikhutshiweyo kunye nokulungelelaniswa kwazo ngokuthe ngcembe.

umthombo: www.habr.com

Yongeza izimvo