Nipa onibara wẹẹbu 1C

Ọkan ninu awọn ẹya ti o wuyi ti 1C: Imọ-ẹrọ Idawọlẹ ni pe ojutu ohun elo, ti o dagbasoke ni lilo imọ-ẹrọ fọọmu iṣakoso, le ṣe ifilọlẹ mejeeji ni alabara tinrin (executable) fun Windows, Linux, MacOS X, ati bi alabara wẹẹbu fun awọn aṣawakiri 5 - Chrome, Internet Explorer, Firefox, Safari, Edge, ati gbogbo eyi laisi iyipada koodu orisun ohun elo. Pẹlupẹlu, ita ohun elo ni alabara tinrin ati ninu awọn iṣẹ aṣawakiri ati pe o fẹrẹ jẹ aami kanna.
Wa awọn iyatọ 10 (awọn aworan 2 labẹ gige):

Ferese alabara tinrin lori Linux:

Nipa onibara wẹẹbu 1C

Ferese kanna ni alabara wẹẹbu (ni ẹrọ aṣawakiri Chrome):

Nipa onibara wẹẹbu 1C

Kini idi ti a ṣe alabara wẹẹbu kan? Lati fi si ni itumo pathetically, akoko ti ṣeto iru iṣẹ-ṣiṣe kan fun wa. Ṣiṣẹ lori Intanẹẹti ti jẹ pataki ṣaaju fun awọn ohun elo iṣowo. Ni akọkọ, a ṣafikun agbara lati ṣiṣẹ nipasẹ Intanẹẹti fun alabara tinrin wa (diẹ ninu awọn oludije wa, nipasẹ ọna, duro sibẹ; awọn miiran, ni ilodi si, kọ alabara tinrin silẹ ati ni opin ara wọn si imuse alabara wẹẹbu kan). A pinnu lati fun awọn olumulo wa ni aye lati yan aṣayan alabara ti o baamu wọn dara julọ.

Nipa onibara wẹẹbu 1C

Ṣafikun awọn agbara orisun wẹẹbu si alabara tinrin jẹ iṣẹ akanṣe nla kan pẹlu iyipada pipe ni faaji olupin-olupin. Ṣiṣẹda alabara wẹẹbu jẹ iṣẹ akanṣe tuntun patapata, ti o bẹrẹ lati ibere.

Igbekalẹ iṣoro naa

Nitorinaa, awọn ibeere iṣẹ akanṣe: alabara wẹẹbu gbọdọ ṣe kanna bii alabara tinrin, eyun:

  1. Ṣe afihan wiwo olumulo
  2. Ṣiṣẹ koodu onibara ti a kọ ni ede 1C

Ni wiwo olumulo ni 1C jẹ apejuwe ninu olootu wiwo, ṣugbọn ni ikede, laisi eto piksẹli-pixel ti awọn eroja; Nipa awọn oriṣi mejila mẹta ti awọn eroja wiwo ni a lo - awọn bọtini, awọn aaye titẹ sii (ọrọ, nomba, ọjọ/akoko), awọn atokọ, awọn tabili, awọn aworan, ati bẹbẹ lọ.

Koodu alabara ni ede 1C le ni awọn ipe olupin ninu, ṣiṣẹ pẹlu awọn orisun agbegbe (awọn faili, ati bẹbẹ lọ), titẹ sita, ati pupọ diẹ sii.

Mejeeji alabara tinrin (nigbati o ba n ṣiṣẹ nipasẹ wẹẹbu) ati alabara wẹẹbu lo ṣeto awọn iṣẹ wẹẹbu kanna lati ṣe ibaraẹnisọrọ pẹlu olupin ohun elo 1C. Awọn imuṣẹ alabara, dajudaju, yatọ - alabara tinrin ti kọ ni C ++, alabara wẹẹbu ti kọ ni JavaScript.

A bit ti itan

Ise agbese onibara wẹẹbu bẹrẹ ni 2006, pẹlu ẹgbẹ kan ti (ni apapọ) eniyan 5. Ni awọn ipele kan ti iṣẹ akanṣe naa, awọn olupilẹṣẹ kopa lati ṣe iṣẹ ṣiṣe kan pato (iwe iwe kaakiri, awọn aworan atọka, ati bẹbẹ lọ); bi ofin, awọn wọnyi ni awọn olupilẹṣẹ kanna ti o ṣe iṣẹ yii ni alabara tinrin. Awon. Awọn olupilẹṣẹ tun kọ awọn paati ni JavaScript ti wọn ti ṣẹda tẹlẹ ni C ++.

Lati ibere pepe, a kọ imọran eyikeyi aifọwọyi (paapaa apa kan) iyipada ti C ++ koodu alabara tinrin sinu alabara wẹẹbu JavaScript nitori awọn iyatọ oye ti o lagbara laarin awọn ede meji; onibara wẹẹbu ti kọ ni JavaScript lati ibere.

Ni awọn aṣetunṣe akọkọ ti iṣẹ akanṣe naa, alabara wẹẹbu yi koodu alabara pada si ede 1C ti a ṣe sinu taara si JavaScript. Onibara tinrin ṣe oriṣiriṣi - koodu ti o wa ninu ede 1C ti a ṣe sinu rẹ jẹ akopọ sinu bytecode, ati lẹhinna tumọ bytecode yii lori alabara. Lẹhinna, alabara wẹẹbu bẹrẹ lati ṣe kanna - ni akọkọ, o fun ere iṣẹ kan, ati ni ẹẹkeji, o jẹ ki o ṣee ṣe lati ṣọkan faaji ti awọn tinrin ati awọn alabara wẹẹbu.

Ẹya akọkọ ti 1C: Syeed Idawọlẹ pẹlu atilẹyin alabara wẹẹbu jẹ idasilẹ ni ọdun 2009. Onibara wẹẹbu ni akoko yẹn ṣe atilẹyin awọn aṣawakiri 2 - Internet Explorer ati Firefox. Awọn ero atilẹba pẹlu atilẹyin fun Opera, ṣugbọn nitori awọn iṣoro ti ko ṣee ṣe ni akoko yẹn pẹlu awọn oluṣakoso pipade ohun elo ni Opera (ko ṣee ṣe lati tọpinpin pẹlu idaniloju 100% pe ohun elo naa ti wa ni pipade, ati ni akoko yẹn gbe ilana gige kuro lati ọdọ. olupin ohun elo 1C) lati awọn ero wọnyi ni lati kọ silẹ.

Ilana ise agbese

Ni apapọ, 1C: Syeed Idawọlẹ ni awọn iṣẹ akanṣe mẹrin ti a kọ ni JavaScript:

  1. WebTools – awọn ile-ikawe pinpin ti awọn iṣẹ akanṣe miiran lo (a tun pẹlu Google Tilekun Library).
  2. Iṣakoso ano Iwe kika (ti a ṣe ni JavaScript ni alabara tinrin ati alabara wẹẹbu)
  3. Iṣakoso ano Eto iṣeto (ti a ṣe ni JavaScript ni alabara tinrin ati alabara wẹẹbu)
  4. Onibara wẹẹbu

Eto ti iṣẹ akanṣe kọọkan dabi eto ti awọn iṣẹ akanṣe Java (tabi awọn iṣẹ akanṣe NET - eyikeyi ti o sunmọ); A ni awọn aaye orukọ, ati aaye orukọ kọọkan wa ninu folda lọtọ. Ninu folda awọn faili ati awọn kilasi orukọ aaye wa. Awọn faili bii 1000 wa ninu iṣẹ alabara wẹẹbu.

Ni igbekalẹ, alabara wẹẹbu ti pin lọpọlọpọ si awọn eto abẹlẹ wọnyi:

  • Ni wiwo ohun elo onibara ti iṣakoso
    • Ni wiwo ohun elo gbogbogbo (awọn akojọ aṣayan eto, awọn panẹli)
    • Ni wiwo awọn fọọmu iṣakoso, pẹlu, laarin awọn ohun miiran, nipa awọn idari 30 (awọn bọtini, awọn oriṣi awọn aaye titẹ sii - ọrọ, nomba, ọjọ/akoko, ati bẹbẹ lọ, awọn tabili, awọn atokọ, awọn aworan, ati bẹbẹ lọ)

  • Awoṣe Nkan ti o wa fun awọn olupilẹṣẹ lori alabara (ju awọn oriṣi 400 lọ lapapọ: awoṣe ohun wiwo ti iṣakoso, awọn eto ipilẹ data, iselo ipo, ati bẹbẹ lọ)
  • Onitumọ ti ede 1C ti a ṣe sinu
  • Awọn amugbooro ẹrọ aṣawakiri (ti a lo fun iṣẹ ṣiṣe ti ko ni atilẹyin ni JavaScript)
    • Nṣiṣẹ pẹlu cryptography
    • Ṣiṣẹ pẹlu awọn faili
    • Imọ-ẹrọ ti awọn paati ita, gbigba wọn laaye lati lo ninu mejeeji tinrin ati awọn alabara wẹẹbu

Awọn ẹya ara ẹrọ idagbasoke

Ṣiṣe gbogbo awọn ti o wa loke ni JavaScript ko rọrun. Boya alabara wẹẹbu 1C jẹ ọkan ninu awọn ohun elo ẹgbẹ alabara ti o tobi julọ ti a kọ sinu JavaScript - nipa awọn laini 450.000. A lo ipa ọna ti o da lori ohun ni koodu alabara wẹẹbu, eyiti o rọrun lati ṣiṣẹ pẹlu iru iṣẹ akanṣe nla kan.

Lati dinku iwọn koodu alabara, a kọkọ lo obfuscator tiwa, ati bẹrẹ pẹlu ẹya Syeed 8.3.6 (Oṣu Kẹwa 2014) a bẹrẹ lati lo Olupilẹṣẹ pipade Google. Ipa ti lilo ninu awọn nọmba – iwọn ilana ilana alabara wẹẹbu lẹhin obfuscation:

  • obfuscator ti ara – 1556 kb
  • Olupilẹṣẹ pipade Google - 1073 kb

Lilo Google Closure Compiler ṣe iranlọwọ fun wa lati mu iṣẹ alabara wẹẹbu pọ si nipasẹ 30% ni akawe si obfuscator tiwa. Ni afikun, iye iranti ti o jẹ nipasẹ ohun elo ti dinku nipasẹ 15-25% (da lori ẹrọ aṣawakiri).

Olupilẹṣẹ Closure Google ṣiṣẹ daradara pupọ pẹlu koodu ti o da lori ohun, nitorinaa ṣiṣe rẹ fun alabara wẹẹbu ga bi o ti ṣee ṣe. Compiler Closure ṣe awọn ohun rere diẹ fun wa:

  • Ṣiṣayẹwo iru aimi ni ipele kikọ iṣẹ akanṣe (idaniloju pe a bo koodu pẹlu awọn asọye JSDoc). Abajade jẹ titẹ aimi, sunmọ ni ipele si titẹ ni C++. Eyi ṣe iranlọwọ lati yẹ ipin ti o tobi pupọ ti awọn aṣiṣe ni ipele akopọ iṣẹ akanṣe.
  • Idinku iwọn koodu nipasẹ obfuscation
  • Nọmba awọn iṣapeye ti koodu ti a ṣe, fun apẹẹrẹ, gẹgẹbi:
    • opopo iṣẹ substitutions. Pipe iṣẹ kan ni JavaScript jẹ iṣẹ ṣiṣe ti o gbowolori, ati awọn aropo inline ti awọn ọna kekere ti a lo nigbagbogbo ni iyara pupọ koodu naa.
    • Kika awọn iduro ni akoko akopọ. Ti ikosile ba da lori igbagbogbo, iye gangan ti ibakan naa yoo rọpo sinu rẹ

A lo WebStorm gẹgẹbi agbegbe idagbasoke alabara wẹẹbu wa.

Fun itupalẹ koodu ti a lo ohunQube, nibiti a ti ṣepọ awọn atunnkanka koodu aimi. Lilo awọn atunnkanka, a ṣe atẹle ibajẹ ti didara koodu orisun JavaScript ati gbiyanju lati ṣe idiwọ rẹ.

Nipa onibara wẹẹbu 1C

Awọn iṣoro wo ni / ṣe a yanju?

Nigba imuse ti ise agbese na, a pade nọmba kan ti awon isoro ti a ni lati yanju.

Ṣe paṣipaarọ data pẹlu olupin ati laarin awọn window

Awọn ipo wa nibiti obfuscation ti koodu orisun le dabaru pẹlu iṣẹ ṣiṣe ti eto naa. Koodu ita si koodu imuṣiṣẹ ti alabara wẹẹbu, nitori aibikita, le ni iṣẹ ati awọn orukọ paramita ti o yatọ si awọn ti koodu imuṣiṣẹ wa n reti. Koodu ita fun wa ni:

  • Koodu nbo lati olupin ni irisi awọn ẹya data
  • Koodu fun window ohun elo miiran

Lati yago fun idamu nigba ibaraenisepo pẹlu olupin, a lo tag @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;
}

Ati lati yago fun obfuscation nigba ibaraenisepo pẹlu miiran windows, a lo ohun ti a npe ni okeere atọkun (awọn atọkun ninu eyi ti gbogbo awọn ọna ti wa ni okeere).

/**
 * Экспортируемый интерфейс контрола 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 (){}

A lo foju DOM ṣaaju ki o to di ojulowo)

Bii gbogbo awọn olupilẹṣẹ ti n ba awọn UI Wẹẹbu ti o nipọn, a rii ni iyara pe DOM ko dara ni ibamu si ṣiṣẹ pẹlu awọn atọkun olumulo ti o ni agbara. Fere lẹsẹkẹsẹ, afọwọṣe ti Virtual DOM ti ni imuse lati mu iṣẹ pọ si pẹlu UI. Lakoko sisẹ iṣẹlẹ, gbogbo awọn iyipada DOM ti wa ni ipamọ ni iranti ati, nikan nigbati gbogbo awọn iṣẹ ba ti pari, awọn iyipada ti a kojọpọ ni a lo si igi DOM.

Imudara onibara wẹẹbu

Lati jẹ ki alabara wẹẹbu wa ṣiṣẹ ni iyara, a gbiyanju lati lo awọn agbara aṣawakiri boṣewa (CSS, bbl) si iwọn. Nitorinaa, nronu aṣẹ fọọmu (ti o wa lori fere gbogbo fọọmu ti ohun elo) ni a ṣe ni iyasọtọ nipa lilo awọn irinṣẹ ẹrọ aṣawakiri, ni lilo ipilẹ agbara ti o da lori CSS.

Nipa onibara wẹẹbu 1C

Igbeyewo

Fun iṣẹ ṣiṣe ati idanwo iṣẹ, a lo ohun elo ohun-ini kan (ti a kọ sinu Java ati C ++), bakanna bi akojọpọ awọn idanwo ti a ṣe lori oke selenium.

Ọpa wa ni gbogbo agbaye - o fun ọ laaye lati ṣe idanwo fere eyikeyi eto window, ati nitorinaa o dara fun idanwo mejeeji alabara tinrin ati alabara wẹẹbu kan. Ọpa naa ṣe igbasilẹ awọn iṣe ti olumulo ti o ṣe ifilọlẹ ojutu ohun elo 1C sinu faili iwe afọwọkọ kan. Ni akoko kanna, awọn aworan ti agbegbe iṣẹ ti iboju-awọn ajohunše-ti gbasilẹ. Nigbati o ba n ṣe abojuto awọn ẹya tuntun ti alabara wẹẹbu, awọn iwe afọwọkọ ti dun laisi ikopa olumulo. Ni awọn ọran nibiti sikirinifoto ko baamu ọkan itọkasi ni eyikeyi igbesẹ, idanwo naa ni a gba pe o kuna, lẹhin eyi alamọja didara kan ṣe iwadii lati pinnu boya eyi jẹ aṣiṣe tabi iyipada ti a gbero ninu ihuwasi ti eto naa. Ni ọran ihuwasi ti a gbero, awọn iṣedede ti rọpo laifọwọyi pẹlu awọn tuntun.

Ọpa naa tun ṣe iwọn iṣẹ ṣiṣe ohun elo pẹlu deede to 25 milliseconds. Ni awọn igba miiran, a lupu awọn apakan ti iwe afọwọkọ (fun apẹẹrẹ, atunwi titẹ aṣẹ ni igba pupọ) lati ṣe itupalẹ ibajẹ ti akoko ipaniyan lori akoko. Awọn abajade ti gbogbo awọn wiwọn ni a gbasilẹ sinu akọọlẹ kan fun itupalẹ.

Nipa onibara wẹẹbu 1C
Ohun elo idanwo ati ohun elo wa labẹ idanwo

Ọpa wa ati Selenium ṣe iranlowo fun ara wọn; fun apẹẹrẹ, ti bọtini kan lori ọkan ninu awọn iboju ba ti yi ipo rẹ pada, Selenium le ma ṣe atẹle eyi, ṣugbọn ọpa wa yoo ṣe akiyesi, nitori mu ki a piksẹli-nipasẹ-piksẹli lafiwe ti sikirinifoto pẹlu bošewa. Ọpa naa tun ni anfani lati tọpinpin awọn iṣoro pẹlu titẹ sii sisẹ lati keyboard tabi Asin, nitori eyi ni deede ohun ti o tun ṣe.

Awọn idanwo lori awọn irinṣẹ mejeeji (tiwa ati Selenium) ṣiṣe awọn oju iṣẹlẹ iṣẹ aṣoju lati awọn ojutu ohun elo wa. Awọn idanwo ni a ṣe ifilọlẹ laifọwọyi lẹhin kikọ ojoojumọ ti 1C: Syeed Idawọlẹ. Ti awọn iwe afọwọkọ ba lọra (ti a ṣe afiwe si kọ tẹlẹ), a ṣe iwadii ati yanju idi ti idinku. Apejuwe wa rọrun - kikọ tuntun ko yẹ ki o ṣiṣẹ losokepupo ju ti iṣaaju lọ.

Awọn olupilẹṣẹ lo awọn irinṣẹ oriṣiriṣi lati ṣe iwadii awọn iṣẹlẹ idinku; o kun lo Dynatrace AJAX Edition ile-iṣẹ iṣelọpọ DynaTrace. Awọn akọọlẹ ti ipaniyan ti iṣiṣẹ iṣoro lori išaaju ati awọn ipilẹ tuntun ti wa ni igbasilẹ, lẹhinna awọn akọọlẹ ti wa ni atupale. Ni akoko kanna, akoko ipaniyan ti awọn iṣẹ ẹyọkan (ni milliseconds) le ma jẹ ipin ipinnu - awọn ilana iṣẹ bii ikojọpọ idoti ti wa ni ifilọlẹ lorekore ninu ẹrọ aṣawakiri, wọn le ni lqkan pẹlu akoko ipaniyan ti awọn iṣẹ ati yi aworan naa pada. Awọn paramita ti o yẹ diẹ sii ninu ọran yii yoo jẹ nọmba awọn ilana JavaScript ti a ṣe, nọmba awọn iṣẹ atomiki lori DOM, ati bẹbẹ lọ. Ti nọmba awọn itọnisọna / awọn iṣẹ ṣiṣe ti o wa ninu iwe afọwọkọ kanna ti pọ si ni ẹya tuntun, eyi fẹrẹ nigbagbogbo tumọ si idinku ninu iṣẹ ti o nilo lati ṣe atunṣe.

Paapaa, ọkan ninu awọn idi fun idinku ninu iṣẹ le jẹ pe Google Closure Compiler fun idi kan ko lagbara lati ṣe aropo laini iṣẹ naa (fun apẹẹrẹ, nitori iṣẹ naa jẹ atunṣe tabi foju). Ni idi eyi, a gbiyanju lati ṣatunṣe ipo naa nipa atunkọ koodu orisun.

Awọn amugbooro aṣawakiri

Nigbati ojutu ohun elo kan nilo iṣẹ ṣiṣe ti ko si ni JavaScript, a lo awọn amugbooro ẹrọ aṣawakiri:

  • fun ṣiṣẹ pẹlu awọn faili
  • fun ṣiṣẹ pẹlu cryptography
  • ṣiṣẹ pẹlu ita irinše

Awọn amugbooro wa ni awọn ẹya meji. Apa akọkọ jẹ ohun ti a pe ni itẹsiwaju aṣawakiri (nigbagbogbo awọn amugbooro fun Chrome ati Firefox ti a kọ ni JavaScript), eyiti o ṣe ajọṣepọ pẹlu apakan keji - itẹsiwaju alakomeji ti o ṣe iṣẹ ṣiṣe ti a nilo. O yẹ ki o mẹnuba pe a kọ awọn ẹya 3 ti awọn amugbooro alakomeji - fun Windows, Linux ati MacOS. Ifaagun alakomeji ti pese gẹgẹbi apakan ti 1C: Syeed Idawọlẹ ati pe o wa lori olupin ohun elo 1C. Nigbati a ba pe fun igba akọkọ lati ọdọ alabara wẹẹbu kan, o ti ṣe igbasilẹ si kọnputa alabara ati fi sori ẹrọ ni ẹrọ aṣawakiri.

Nigbati o nṣiṣẹ ni Safari, awọn amugbooro wa lo NPAPI; nigba ti nṣiṣẹ ni Internet Explorer, wọn lo imọ-ẹrọ ActiveX. Microsoft Edge ko sibẹsibẹ ṣe atilẹyin awọn amugbooro, nitorinaa alabara wẹẹbu ninu rẹ ṣiṣẹ pẹlu awọn ihamọ.

Siwaju idagbasoke

Ọkan ninu awọn iṣẹ ṣiṣe fun ẹgbẹ idagbasoke alabara wẹẹbu ni ilọsiwaju siwaju ti iṣẹ ṣiṣe. Iṣẹ ṣiṣe ti alabara wẹẹbu yẹ ki o jẹ aami si iṣẹ ṣiṣe ti alabara tinrin; gbogbo iṣẹ ṣiṣe tuntun ni imuse ni nigbakannaa ni awọn tinrin ati awọn alabara wẹẹbu.

Awọn iṣẹ-ṣiṣe miiran pẹlu idagbasoke faaji, atunṣe, imudara iṣẹ ṣiṣe ati igbẹkẹle. Fun apẹẹrẹ, ọkan ninu awọn itọnisọna jẹ gbigbe siwaju si ọna awoṣe iṣẹ asynchronous. Diẹ ninu awọn iṣẹ ṣiṣe ti alabara wẹẹbu ti wa ni itumọ lọwọlọwọ lori awoṣe amuṣiṣẹpọ ti ibaraenisepo pẹlu olupin naa. Awoṣe asynchronous ti di diẹ sii ni ibamu ni awọn aṣawakiri (ati kii ṣe ni awọn aṣawakiri nikan), ati pe eyi fi agbara mu wa lati yipada alabara wẹẹbu nipa rirọpo awọn ipe amuṣiṣẹpọ pẹlu awọn asynchronous (ati atunṣe koodu ni ibamu). Iyipada mimu si awoṣe asynchronous jẹ alaye nipasẹ iwulo lati ṣe atilẹyin awọn ojutu ti a tu silẹ ati imudọgba mimu wọn.

orisun: www.habr.com

Fi ọrọìwòye kun