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:
Kwaloo festile kumxhasi wewebhu (kwisikhangeli seChrome):
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.
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:
- Bonisa ujongano lomsebenzisi
- 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:
- Izixhobo zeWeb - amathala eencwadi ekwabelwana ngawo asetyenziswa zezinye iiprojekthi (sikwabandakanya
Ukuvalwa kweThala leencwadi likaGoogle ). - Isiqalelo solawulo
Uxwebhu olufomathiweyo (isetyenziswe kwiJavaScript kubo bobabini umxhasi obhityileyo kunye nomxhasi wewebhu) - Isiqalelo solawulo
Umcwangcisi (isetyenziswe kwiJavaScript kubo bobabini umxhasi obhityileyo kunye nomxhasi wewebhu) - 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.
- 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
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.
Ukuvavanywa
Uvavanyo olusebenzayo kunye nokusebenza, sisebenzisa isixhobo sobunini (esibhalwe kwiJava kunye neC ++), kunye neqela leemvavanyo ezakhiwe phezulu
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.
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
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:
- ukusebenza ngeefayile
- ukusebenza ngecryptography
- sebenza kunye
amalungu angaphandle
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.
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