Mabapi le moreki oa tepo ea 1C

E 'ngoe ea likarolo tse ntle tsa 1C: Theknoloji ea Khoebo ke hore tharollo ea kopo, e ntlafalitsoeng ka theknoloji ea mefuta e laoloang, e ka hlahisoa ka bobeli ho moreki e mosesane (ea phethisoang) bakeng sa Windows, Linux, MacOS X, hape e le moreki oa marang-rang bakeng sa libatli tse 5 - Chrome, Internet Explorer, Firefox, Safari, Edge, le tsena tsohle ntle le ho fetola khoutu ea mohloli oa kopo. Ho feta moo, ts'ebeliso ea kantle ho moreki e tšesaane le ho sebatli e sebetsa mme e shebahala e batla e ts'oana.
Fumana liphapang tse 10 (litšoantšo tse 2 tlas'a sehiloeng):

Fesetere e nyane ea bareki ho Linux:

Mabapi le moreki oa tepo ea 1C

Fesetere e tšoanang ho sebatli sa webo (ho sebatli sa Chrome):

Mabapi le moreki oa tepo ea 1C

Hobaneng re entse moreki oa webo? Ka mantsoe a mang, nako e re behetse mosebetsi o joalo. Ho sebetsa ka Marang-rang esale e le ntho e hlokahalang bakeng sa likopo tsa khoebo. Taba ea pele, re ekelitse bokhoni ba ho sebetsa ka Marang-rang bakeng sa bareki ba rona ba mosesaane (ba bang ba bahlolisani ba rona, ka tsela, ba ile ba emisa ho sena; ba bang, ho fapana le hoo, ba ile ba lahla moreki ea mosesaane mme ba ipehela ho kenya ts'ebetsong moreki oa webo). Re nkile qeto ea ho fa basebelisi ba rona monyetla oa ho khetha khetho ea bareki e ba loketseng hantle.

Mabapi le moreki oa tepo ea 1C

Ho eketsa bokhoni ba marang-rang ho mofani ea tšesaane e ne e le morero o moholo o nang le phetoho e feletseng ea meralo ea bareki-server. Ho theha moreki oa marang-rang ke projeke e ncha ka ho felletseng, ho tloha qalong.

Mokhoa oa bothata

Kahoo, litlhoko tsa projeke: moreki oa webo o tlameha ho etsa se ts'oanang le moreki ea mosesane, e leng:

  1. Hlahisa sebopeho sa mosebedisi
  2. Kenya khoutu ea moreki e ngotsoeng ka puo ea 1C

Sehokelo sa mosebelisi ho 1C se hlalosoa ka mohlophisi oa pono, empa ka phatlalatso, ntle le tlhophiso ea likarolo tsa pixel-by-pixel; Ho sebelisoa mefuta e ka bang leshome le metso e meraro ea li-interface - likonopo, libaka tsa ho kenya (mongolo, linomoro, letsatsi/nako), manane, litafole, li-graph, jj.

Khoutu ea bareki ka puo ea 1C e ka ba le mehala ea seva, ho sebetsa ka lisebelisoa tsa lehae (lifaele, joalo-joalo), khatiso, le tse ling tse ngata.

Ka bobeli moreki ea mosesane (ha a sebetsa ka tepo) le moreki oa tepo ba sebelisa sete e tšoanang ea lits'ebeletso tsa webo ho buisana le seva sa ts'ebeliso ea 1C. Ts'ebetsong ea bareki, ehlile, e fapane - moreki ea tšesaane o ngotsoe ho C ++, moreki oa webo o ngotsoe ka JavaScript.

Pale ea histori

Morero oa bareki ba marang-rang o qalile ka 2006, ka sehlopha sa (ka karolelano) batho ba 5. Mehatong e itseng ea morero, bahlahisi ba ne ba kenyelelitsoe ho kenya ts'ebetsong ts'ebetso e itseng (tokomane ea spreadsheet, litšoantšo, joalo-joalo); e le molao, bana e ne e le baetsi ba tšoanang ba entseng ts'ebetso ena ho moreki e mosesaane. Tseo. bahlahisi ba ngotse bocha likarolo tsa JavaScript tseo ba neng ba li entse pele ho C++.

Ho tloha qalong, re hanne mohopolo oa phetoho efe kapa efe ea othomathiki (esita le e sa fellang) ea khoutu ea C++ e tšesaane ea bareki ho JavaScript ka lebaka la liphapang tse matla tsa menahano lipakeng tsa lipuo tsena tse peli; moreki oa webo o ngotsoe ka JavaScript ho tloha qalong.

Liphetolelong tsa pele tsa projeke, moreki oa webo o ile a fetolela khoutu ea bareki ka puo e hahelletsoeng ka har'a 1C ka kotloloho ho JavaScript. Moreki o mosesaane o sebetsa ka tsela e fapaneng - khoutu ka puo e hahelletsoeng ka har'a 1C e hlophisitsoe ka bytecode, ebe bytecode ena e hlalosoa ho moreki. Ka mor'a moo, mofani oa marang-rang o ile a qala ho etsa se tšoanang - pele, a fana ka phaello ea ts'ebetso, 'me ea bobeli, e ile ea etsa hore ho khonehe ho kopanya meralo ea bareki ba tšesaane le ba marang-rang.

Mofuta oa pele oa 1C: Sethala sa Khoebo se nang le tšehetso ea bareki ba webo se ile sa lokolloa ka 2009. Ka nako eo moreki oa Marang-rang o ne a tšehetsa libatli tse peli - Internet Explorer le Firefox. Merero ea mantlha e ne e kenyelletsa ts'ehetso bakeng sa Opera, empa ka lebaka la mathata a ke keng a hlōloa ka nako eo ka ts'ebetso ea ho koala lits'ebetso ho Opera (ho ne ho sa khonehe ho latela ka bonnete ba 2% hore kopo e ntse e koaloa, mme ka nako eo ho etsa ts'ebetso ea ho khaola ho tloha ho Opera. seva ea kopo ea 100C) ho tsoa mererong ena e ile ea tlameha ho tloheloa.

Sebopeho sa morero

Ka kakaretso, sethala sa 1C:Enterprise se na le merero e 4 e ngotsoeng ka JavaScript:

  1. WebTools - lilaebrari tse arolelanoang tse sebelisoang ke merero e meng (re boetse re kenyelletsa Laeborari ea ho Koala ea Google).
  2. Karolo ea taolo FormattedDocument (e kentsoeng ho JavaScript ho moreki e mosesane le moreki oa webo)
  3. Karolo ea taolo Mohlophisi (e kentsoeng ho JavaScript ho moreki e mosesane le moreki oa webo)
  4. Moreki oa Marang-rang

Sebopeho sa morero o mong le o mong se tšoana le sebopeho sa merero ea Java (kapa merero ea .NET - ho sa tsotellehe hore na ke efe e haufi); Re na le libaka tsa mabitso, 'me sebaka ka seng sa mabitso se ka har'a foldara e arohaneng. Ka har'a foldara ho na le lifaele le lihlopha tsa sebaka sa mabitso. Ho na le lifaele tse ka bang 1000 morerong oa bareki ba webo.

Ka sebopeho, moreki oa webo o arotsoe haholo ka litsamaiso tse latelang:

  • Sehokelo sa ts'ebeliso ea bareki se laoloang
    • Sehokelo se akaretsang sa ts'ebeliso (menu ea sistimi, liphanele)
    • Khokahano ea liforomo tse laoloang, ho kenyeletsoa, ​​har'a tse ling, li-control tse ka bang 30 (likonopo, mefuta e fapaneng ea likarolo tsa ho kenya - mongolo, linomoro, letsatsi/nako, joalo-joalo, litafole, manane, kerafo, jj.)

  • Moetso oa ntho o fumanehang ho bahlahisi ho moreki (mefuta e fetang 400 ka kakaretso: mofuta oa sebopeho se laoloang, litlhophiso tsa sebopeho sa data, setaele se nang le maemo, jj.)
  • Mofetoleli oa puo ea 1C e hahelletsoeng
  • Likatoloso tsa sebatli (tse sebelisoang bakeng sa ts'ebetso e sa sebetseng ho JavaScript)
    • Ho sebetsa le cryptography
    • Ho sebetsana le lifaele
    • Theknoloji ea likarolo tsa kantle, e li lumellang hore li sebelisoe ho bareki ba tšesaane le ba webo

Likarolo tsa Nts'etsopele

Ho kenya tshebetsong tsohle tse ka hodimo ho JavaScript ha ho bonolo. Mohlomong moreki oa marang-rang oa 1C ke e 'ngoe ea likopo tse kholo ka ho fetesisa tsa bareki tse ngotsoeng ho JavaScript - mela e ka bang 450.000. Re sebelisa ka mafolofolo mokhoa o shebaneng le ntho e itseng ho khoutu ea bareki ba webo, e nolofatsang ho sebetsa le projeke e kholo joalo.

Ho fokotsa boholo ba khoutu ea bareki, re ile ra qala ka ho sebelisa obfuscator ea rona, 'me ho qala ka sethala sa 8.3.6 (Mphalane 2014) ra qala ho se sebelisa. Google Closure Compiler. Phello ea tšebeliso ea linomoro - boholo ba moralo oa sebatli sa webo ka mor'a ho hlaka:

  • Obfuscator ea hae - 1556 kb
  • Google Closure Compiler - 1073 kb

Ho sebelisa Google Closure Compiler ho re thusitse ho ntlafatsa ts'ebetso ea moreki oa marang-rang ka 30% ha e bapisoa le obfuscator ea rona. Ho phaella moo, palo ea memori e sebelisoang ke kopo e fokotsehile ka 15-25% (ho itšetlehile ka sebapali).

Google Closure Compiler e sebetsa hantle haholo ka khoutu e shebaneng le ntho, ka hona, katleho ea eona bakeng sa moreki oa marang-rang e phahame ka hohle kamoo ho ka khonehang. Closure Compiler e re etsetsa dintho tse mmalwa tse molemo:

  • Ho hlahloba mofuta o tsitsitseng sethaleng sa kaho ea projeke (e netefatsa hore re koahela khoutu ka litlatsetso tsa JSDoc). Sephetho ke ho thaepa ka mokhoa o tsitsitseng, e haufi haholo le boemo ba ho ngola ka C++. Sena se thusa ho fumana liphesente tse ngata haholo tsa liphoso mothating oa ho bokella merero.
  • Ho fokotsa boholo ba khoutu ka ho hlaka
  • Lintlafatso tse 'maloa tsa khoutu e sebelisitsoeng, mohlala, joalo ka:
    • li-substitutes tsa tšebetso tse inline. Ho letsetsa ts'ebetso ho JavaScript ke ts'ebetso e theko e boima, 'me mekhoa e menyenyane e sebelisoang khafetsa e potlakisa khoutu haholo.
    • Ho bala li-constants ka nako ea ho bokella. Haeba polelo e itšetlehile ka ntho e tsitsitseng, boleng ba sebele ba kamehla bo tla nkeloa sebaka ho eona

Re sebelisa WebStorm joalo ka tikoloho ea ntlafatso ea bareki ba webo.

Bakeng sa tlhahlobo ea khoutu re sebelisa soundQube, moo re kopanyang static code analyzers. Re sebelisa li-analyzer, re lekola ho senyeha ha boleng ba khoutu ea mohloli oa JavaScript mme re leka ho e thibela.

Mabapi le moreki oa tepo ea 1C

Ke mathata afe a entseng/re a rarollang?

Nakong ea ts'ebetsong ea morero, re ile ra kopana le mathata a mangata a thahasellisang ao re neng re tlameha ho a rarolla.

Fapanyetsana data le seva le lipakeng tsa lifensetere

Ho na le maemo moo obfuscation ea khoutu ea mohloli e ka sitisang ts'ebetso ea sistimi. Khoutu e kantle ho khoutu e ka sebetsoang ea sebatli sa webo, ka lebaka la ho hlaka, e kanna ea ba le mabitso a tšebetso le paramethara a fapaneng le ao khoutu ea rona e sebetsang e lebelletseng ho ona. Khoutu ea kantle bakeng sa rona ke:

  • Khoutu e tsoang ho seva ka mokhoa oa meaho ea data
  • Khoutu bakeng sa fensetere e 'ngoe ea ts'ebeliso

Ho qoba ho hlaka ha o sebelisana le seva, re sebelisa tag ea @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;
}

Le ho qoba ho ferekanngoa ha ho sebelisana le lifensetere tse ling, re sebelisa seo ho thoeng ke li-interfaces (li-interfaces tseo mekhoa eohle e romeloang ho tsona).

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

Re sebelisitse Virtual DOM pele e fetoha e tloaelehileng)

Joalo ka bahlahisi bohle ba sebetsanang le li-Web UI tse rarahaneng, re ile ra elelloa kapele hore DOM ha e tšoanelehe ho sebetsa ka li-interfaces tse matla tsa basebelisi. Hoo e ka bang hang-hang, ho ile ha kenngoa analogue ea Virtual DOM ho ntlafatsa mosebetsi le UI. Nakong ea ts'ebetso ea ketsahalo, liphetoho tsohle tsa DOM li bolokoa mohopolong, 'me feela ha mesebetsi eohle e phethiloe, liphetoho tse bokelletsoeng li sebelisoa sefateng sa DOM.

Ho ntlafatsa sebatli sa webo

Ho etsa hore sebatli sa rona sa marang-rang se sebetse ka potlako, re leka ho sebelisa bokhoni bo tloaelehileng ba sebatli (CSS, joalo-joalo) ka botlalo. Kahoo, phanele ea taelo ea foromo (e fumanehang hoo e batlang e le mofuta o mong le o mong oa kopo) e etsoa feela ka lisebelisoa tsa sebatli, ho sebelisoa sebopeho se matla se thehiloeng ho CSS.

Mabapi le moreki oa tepo ea 1C

Teko

Bakeng sa tlhahlobo ea ts'ebetso le ts'ebetso, re sebelisa sesebelisoa sa thepa (se ngotsoeng ho Java le C++), hammoho le liteko tse ngata tse hahiloeng holim'a Selenium.

Sesebelisoa sa rona se na le bokahohle - se u lumella ho leka hoo e batlang e le lenaneo leha e le lefe le nang le lifensetere, ka hona le loketse bakeng sa ho hlahloba ka bobeli moreki e mosesaane le moreki oa marang-rang. Sesebelisoa se tlaleha liketso tsa mosebelisi ea hlahisitseng tharollo ea kopo ea 1C ho faele ea script. Ka nako e ts'oanang, litšoantšo tsa sebaka sa ts'ebetso sa skrineng - litekanyetso - lia rekotoa. Ha u beha leihlo liphetolelo tse ncha tsa sebatli sa webo, mangolo a bapaloa ntle le ho kenya letsoho ha basebelisi. Maemong ao screenshot e sa lumellaneng le referense mohatong ofe kapa ofe, tlhahlobo e nkuoa e hlolehile, ka mor'a moo setsebi sa boleng se etsa lipatlisiso ho fumana hore na sena ke phoso kapa phetoho e reriloeng boitšoarong ba sistimi. Tabeng ea boitšoaro bo reriloeng, litekanyetso li nkeloa sebaka ke tse ncha.

Sesebelisoa se boetse se lekanya ts'ebetso ea ts'ebeliso ka ho nepahala ho fihla ho li-milliseconds tse 25. Maemong a mang, re kenya likarolo tsa mongolo (mohlala, ho pheta-pheta taelo ka makhetlo a 'maloa) ho hlahloba ho senyeha ha nako ea ts'ebetso ka nako. Liphetho tsa litekanyo tsohle li tlalehiloe ho log bakeng sa tlhahlobo.

Mabapi le moreki oa tepo ea 1C
Sesebelisoa sa rona sa tlhahlobo le ts'ebeliso tlas'a teko

Sesebelisoa sa rona le Selenium lia tlatsana; mohlala, haeba konopo e 'ngoe ho e' ngoe ea li-skrini e fetotse sebaka sa eona, Selenium e ka 'na ea se ke ea latela sena, empa sesebelisoa sa rona se tla hlokomela, hobane e etsa papiso ea pixel-by-pixel ea skrini le maemo. Sesebelisoa se boetse se khona ho lekola mathata ka ho kenya letsoho ho tsoa ho keyboard kapa toeba, kaha sena ke sona hantle seo se se hlahisang.

Liteko tsa lisebelisoa ka bobeli (tsa rona le Selenium) li tsamaisa maemo a tloaelehileng a mosebetsi ho tsoa ho tharollo ea kopo ea rona. Liteko li hlahisoa ka bo eona kamora ho aha letsatsi le letsatsi 1C: sethala sa Khoebo. Haeba lingoliloeng li tsamaea butle (ha ho bapisoa le moaho o fetileng), rea etsa lipatlisiso le ho rarolla sesosa sa ho theoha butle. Mokhoa oa rona o bonolo - moaho o mocha ha oa lokela ho sebetsa butle ho feta o fetileng.

Bahlahisi ba sebelisa lisebelisoa tse fapaneng ho batlisisa liketsahalo tse fokolang; e sebedisoang haholo Khatiso ea Dynatrace AJAX khamphani ea tlhahiso DynaTrace. Li-log tsa ts'ebetso ea ts'ebetso e nang le bothata lihahong tse fetileng le tse ncha lia ngoloa, ebe li-log li hlahlojoa. Ka nako e ts'oanang, nako ea ts'ebetso ea ts'ebetso e le 'ngoe (ka li-milliseconds) e kanna ea se be ntho ea bohlokoa - lits'ebetso tsa ts'ebeletso joalo ka pokello ea lithōle li qalisoa nako le nako ho sebatli, li ka kopana le nako ea ts'ebetso le ho sotha setšoantšo. Mekhahlelo e amehang haholoanyane tabeng ena e tla ba palo ea litaelo tsa JavaScript tse phethiloeng, palo ea ts'ebetso ea athomo ho DOM, joalo-joalo. Haeba palo ea litaelo / ts'ebetso ho script e tšoanang e eketsehile phetolelong e ncha, hoo e batlang e le kamehla ho bolela ho theoha ha ts'ebetso e lokelang ho lokisoa.

Hape, e 'ngoe ea mabaka a ho theoha ha ts'ebetso e ka' na ea e-ba hore Google Closure Compiler ka lebaka le itseng e ne e sa khone ho etsa phetoho e ka hare ea ts'ebetso (mohlala, hobane mosebetsi o pheta-pheta kapa oa sebele). Tabeng ena, re leka ho lokisa boemo ka ho ngola khoutu ea mohloli bocha.

Lisebelisoa tsa sebatli

Ha tharollo ea ts'ebeliso e hloka tšebetso e sieo ho JavaScript, re sebelisa likeketso tsa sebatli:

  • bakeng sa ho sebetsa le lifaele
  • bakeng sa ho sebetsa le cryptography
  • sebetsa le likarolo tse kantle

Likatoloso tsa rona li na le likarolo tse peli. Karolo ea pele ke seo ho thoeng ke katoloso ea sebatli (hangata li-extensions tsa Chrome le Firefox tse ngotsoeng ho JavaScript), tse sebelisanang le karolo ea bobeli - katoloso ea binary e sebelisang ts'ebetso eo re e hlokang. Ho lokela ho boleloa hore re ngola liphetolelo tse 3 tsa lisebelisoa tsa binary - bakeng sa Windows, Linux le MacOS. Katoloso ea binary e fanoa e le karolo ea sethala sa 1C:Enterprise mme e fumaneha ho seva sa kopo sa 1C. Lekhetlo la pele ha e bitsoa ho tsoa ho sebatli sa webo, e jarolleloa ho komporo ea bareki ebe e kenngoa ho sebatli.

Ha re sebetsa Safari, li-extensions tsa rona li sebelisa NPAPI; ha li sebetsa ho Internet Explorer, li sebelisa theknoloji ea ActiveX. Microsoft Edge ha e e-so tšehetse likeketso, kahoo moreki oa sebaka sa marang-rang ho eona o sebetsa ka lithibelo.

Ntlafatso e eketsehileng

E 'ngoe ea mesebetsi ea sehlopha sa ntlafatso ea bareki ba webo ke nts'etsopele ea ts'ebetso. Ts'ebetso ea sebatli sa webo e lokela ho ts'oana le ts'ebetso ea moreki e mosesane; lits'ebetso tsohle tse ncha li kengoa ts'ebetsong ka nako e le 'ngoe ho bareki ba basesaane le ba webo.

Mesebetsi e meng e kenyelletsa ho ntlafatsa meralo ea meralo, ho etsa refactoring, ho ntlafatsa ts'ebetso le ts'epahalo. Mohlala, e 'ngoe ea litataiso ke ho sisinyeha ho ea pele ho mofuta oa mosebetsi o sa ts'oaneng. Tse ling tsa ts'ebetso ea sebatli sa marang-rang hajoale li hahiloe holim'a mohlala oa synchronous oa ho sebelisana le seva. Moetso oa asynchronous o se o ntse o sebetsa haholoanyane ho libatli (eseng feela ho libatli), mme sena se re qobella ho fetola sebatli sa marang-rang ka ho nkela mehala e lumellanang le e sa lumellaneng (le ho fetola khoutu ka nepo). Phetoho ea butle-butle ho ea ho mohlala oa asynchronous e hlalosoa ke tlhokahalo ea ho tšehetsa litharollo tse lokolotsoeng le ho ikamahanya ha tsona butle-butle.

Source: www.habr.com

Eketsa ka tlhaloso