Mu dheidhinn an eadar-lìn cliant 1C

Is e aon de na feartan snog aig 1C:Teicneòlas iomairt gum faodar am fuasgladh tagraidh, a chaidh a leasachadh le bhith a’ cleachdadh teicneòlas foirmean stiùirichte, a chuir air bhog an dà chuid ann an teachdaiche tana (so-ghnìomhaichte) airson Windows, Linux, MacOS X, agus mar neach-dèiligidh lìn airson 5 brobhsairean - Chrome, Internet Explorer, Firefox, Safari, Edge, agus seo uile gun a bhith ag atharrachadh còd stòr an tagraidh. A bharrachd air an sin, air an taobh a-muigh tha an tagradh anns a ’chliant tana agus anns a’ bhrobhsair ag obair agus a ’coimhead cha mhòr co-ionann.
Lorg eadar-dhealachaidhean 10 (dealbhan 2 fon ghearradh):

Uinneag teachdaiche tana air Linux:

Mu dheidhinn an eadar-lìn cliant 1C

An aon uinneag anns a 'chleachdaiche lìn (ann am brabhsair Chrome):

Mu dheidhinn an eadar-lìn cliant 1C

Carson a rinn sinn neach-dèiligidh lìn? Gus a chuir rudeigin foighidneach, tha ùine air a leithid de ghnìomh a shuidheachadh dhuinn. Tha a bhith ag obair thairis air an eadar-lìn air a bhith riatanach o chionn fhada airson tagraidhean gnìomhachais. An toiseach, chuir sinn ris a’ chomas a bhith ag obair tron ​​​​eadar-lìn don neach-dèiligidh tana againn (stad cuid de na farpaisich againn, co-dhiù, an sin; thrèig cuid eile, air an làimh eile, an neach-dèiligidh tana agus chuir iad bacadh orra fhèin gu bhith a’ buileachadh teachdaiche lìn). Cho-dhùin sinn an cothrom a thoirt don luchd-cleachdaidh againn an roghainn teachdaiche as freagarraiche dhaibh a thaghadh.

Mu dheidhinn an eadar-lìn cliant 1C

B’ e pròiseact mòr a bh’ ann a bhith a’ cur comasan stèidhichte air an lìon ris a’ chleachdaiche tana le atharrachadh iomlan ann an ailtireachd frithealaiche teachdaiche. Tha cruthachadh teachdaiche lìn na phròiseact gu tur ùr, a’ tòiseachadh bhon fhìor thoiseach.

Aithris dhuilgheadas

Mar sin, riatanasan a’ phròiseict: feumaidh an neach-dèiligidh lìn an aon rud a dhèanamh ris an neach-dèiligidh tana, is iad sin:

  1. Taisbeanadh eadar-aghaidh cleachdaiche
  2. Luchdaich a-nuas an còd sgrìobhte ann an cànan 1C

Tha an eadar-aghaidh cleachdaiche ann an 1C air a mhìneachadh ann an deasaiche lèirsinneach, ach gu dearbhach, às aonais rèiteachadh piogsail-air-piogsail de eileamaidean; Thathas a’ cleachdadh timcheall air trì dusan seòrsa de eileamaidean eadar-aghaidh - putanan, raointean cuir a-steach (teacsa, àireamhach, ceann-latha/ùine), liostaichean, clàran, grafaichean, msaa.

Faodaidh còd teachdaiche sa chànan 1C gairmean frithealaiche a bhith ann, ag obair le goireasan ionadail (faidhlichean, msaa), clò-bhualadh, agus mòran a bharrachd.

Bidh an dà chuid an neach-dèiligidh tana (nuair a bhios iad ag obair tron ​​​​lìon) agus an neach-dèiligidh lìn a’ cleachdadh an aon sheata de sheirbheisean lìn gus conaltradh le frithealaiche tagraidh 1C. Tha buileachadh teachdaichean, gu dearbh, eadar-dhealaichte - tha an neach-dèiligidh tana sgrìobhte ann an C ++, tha an neach-dèiligidh lìn sgrìobhte ann an JavaScript.

Pàirt de dh'eachdraidh

Thòisich am pròiseact teachdaiche lìn ann an 2006, le sgioba de (gu cuibheasach) 5 neach. Aig ìrean sònraichte den phròiseact, bha luchd-leasachaidh an sàs ann a bhith a’ cur an gnìomh gnìomh sònraichte (sgrìobhainn spreadsheet, diagraman, msaa); mar riaghailt, b 'iad sin na h-aon luchd-leasachaidh a rinn an gnìomh seo anns a' chleachdaiche tana. An fheadhainn sin. luchd-leasachaidh ath-sgrìobhadh co-phàirtean ann an JavaScript a bha iad air a chruthachadh roimhe seo ann an C ++.

Bhon fhìor thoiseach, dhiùlt sinn am beachd air tionndadh fèin-ghluasadach (eadhon pàirt) de chòd teachdaiche tana C ++ gu teachdaiche lìn JavaScript air sgàth nan eadar-dhealachaidhean làidir bun-bheachdail eadar an dà chànan; chaidh an neach-dèiligidh lìn a sgrìobhadh ann an JavaScript bhon toiseach.

Anns a’ chiad tionndadh den phròiseact, thionndaidh an neach-dèiligidh lìn còd teachdaiche anns a’ chànan 1C togte gu dìreach gu JavaScript. Bidh an neach-dèiligidh tana ag obair ann an dòigh eadar-dhealaichte - tha an còd anns a ’chànan 1C togte air a chuir ri chèile ann am bytecode, agus an uairsin tha am bytecode seo air a mhìneachadh air an neach-dèiligidh. Às deidh sin, thòisich an neach-dèiligidh lìn air an aon rud a dhèanamh - an toiseach, thug e buannachd coileanaidh, agus san dàrna àite, thug e cothrom dha ailtireachd an luchd-dèiligidh tana agus lìn aonachadh.

Chaidh a’ chiad dreach den àrd-ùrlar 1C:Enterprise le taic teachdaiche lìn fhoillseachadh ann an 2009. Bha an neach-dèiligidh lìn aig an àm sin a’ toirt taic do bhrobhsair 2 - Internet Explorer agus Firefox. Bha na planaichean tùsail a’ toirt a-steach taic airson Opera, ach mar thoradh air duilgheadasan do-sheachanta aig an àm sin leis an tagradh a’ dùnadh luchd-làimhseachaidh ann an Opera (cha robh e comasach sùil a chumail le cinnt 100% gun robh an tagradh a’ dùnadh, agus aig an àm sin dèan am modh dì-cheangail bho dh'fheumadh an t-seirbheis tagraidh 1C) bho na planaichean sin a thrèigsinn.

Structar pròiseict

Gu h-iomlan, tha 1 pròiseactan sgrìobhte ann an JavaScript air an àrd-ùrlar 4C:Enterprise:

  1. WebTools - leabharlannan co-roinnte air an cleachdadh le pròiseactan eile (tha sinn cuideachd a’ toirt a-steach Leabharlann dùnadh Google).
  2. Eileamaid smachd Sgrìobhainn cruth (air a chuir an gnìomh ann an JavaScript an dà chuid an neach-dèiligidh tana agus an neach-dèiligidh lìn)
  3. Eileamaid smachd Clàr-ama (air a chuir an gnìomh ann an JavaScript an dà chuid an neach-dèiligidh tana agus an neach-dèiligidh lìn)
  4. Cliant lìn

Tha structar gach pròiseact coltach ri structar phròiseactan Java (no pròiseactan .NET - ge bith dè as fhaisge); Tha ainmean-àite againn, agus tha gach àrainn-ainm ann am pasgan air leth. Taobh a-staigh a 'phasgan tha faidhlichean agus clasaichean namespace. Tha timcheall air 1000 faidhle anns a’ phròiseact teachdaiche lìn.

Gu structarail, tha an neach-dèiligidh lìn air a roinn gu ìre mhòr anns na fo-shiostaman a leanas:

  • Eadar-aghaidh tagradh teachdaiche air a riaghladh
    • Eadar-aghaidh tagraidh coitcheann (clàran-bìdh siostam, pannalan)
    • Eadar-aghaidh de fhoirmean stiùirichte, a’ toirt a-steach, am measg rudan eile, timcheall air 30 smachd (putanan, diofar sheòrsaichean de raointean cuir a-steach - teacsa, àireamhach, ceann-latha / àm, msaa, clàran, liostaichean, grafaichean, msaa.)

  • Modail nì ri fhaighinn le luchd-leasachaidh air an neach-dèiligidh (còrr air 400 seòrsa gu h-iomlan: modal nì eadar-aghaidh air a riaghladh, suidheachadh cruth dàta, stoidhle cumhach, msaa.)
  • Eadar-theangair an cànan a chaidh a thogail ann an 1C
  • Leudachain brabhsair (air a chleachdadh airson comas-gnìomh nach eil taic ann an JavaScript)
    • Ag obair le cryptography
    • Obraich le faidhlichean
    • Teicneòlas de cho-phàirtean taobh a-muigh, a leigeas leotha an cleachdadh ann an teachdaichean tana agus lìn

Feartan leasachaidh

Chan eil e furasta a h-uile rud gu h-àrd a chuir an gnìomh ann an JavaScript. Is dòcha gur e an neach-dèiligidh lìn 1C aon de na tagraidhean taobh teachdaiche as motha a chaidh a sgrìobhadh ann an JavaScript - timcheall air loidhnichean 450.000. Bidh sinn gu gnìomhach a’ cleachdadh dòigh-obrach stèidhichte air cuspair anns a’ chòd teachdaiche lìn, a bhios a’ sìmpleachadh obrachadh le pròiseact cho mòr.

Gus meud a’ chòd teachdaiche a lughdachadh, chleachd sinn an obfuscator againn fhèin an-toiseach, agus a’ tòiseachadh le dreach àrd-ùrlar 8.3.6 (Dàmhair 2014) thòisich sinn a’ cleachdadh Google Close Compiler. Buaidh cleachdadh ann an àireamhan - meud frèam teachdaiche lìn às deidh obfuscation:

  • An inneal-fuadain agad fhèin - 1556 kb
  • Google Closure Compiler - 1073 kb

Le bhith a’ cleachdadh Google Closure Compiler chuidich sinn sinn le bhith ag adhartachadh coileanadh an neach-dèiligidh lìn le 30% an taca ris an inneal obfuscator againn fhèin. A bharrachd air an sin, tha an ìre de chuimhne a chaidh a chaitheamh leis an tagradh air a dhol sìos 15-25% (a rèir a ’bhrobhsair).

Bidh Google Closure Compiler ag obair glè mhath le còd a tha ag amas air nithean, agus mar sin tha an èifeachdas airson an neach-dèiligidh lìn cho àrd sa ghabhas. Bidh Closure Compiler a’ dèanamh beagan rudan math dhuinn:

  • Sgrùdadh seòrsa statach aig ìre togail a’ phròiseict (a’ dèanamh cinnteach gu bheil sinn a’ còmhdach a’ chòd le notaichean JSDoc). Is e an toradh clò-sgrìobhadh statach, gu math faisg air ìre airson a bhith a’ taipeadh ann an C ++. Tha seo a’ cuideachadh le bhith a’ glacadh àireamh meadhanach mòr de mhearachdan aig ìre cruinneachaidh a’ phròiseict.
  • Lùghdachadh meud còd tro obfuscation
  • Tha grunn optimizations den chòd a chaidh a chuir gu bàs, mar eisimpleir, leithid:
    • ionadan gnìomh in-loidhne. Is e obair gu math daor a th’ ann a bhith a’ gairm gnìomh ann an JavaScript, agus bidh ionadan in-loidhne de dhòighean beaga air an cleachdadh gu tric a’ luathachadh a’ chòd gu mòr.
    • A’ cunntadh àireamhan seasmhach aig àm cruinneachaidh. Ma tha abairt an urra ri seasmhach, thèid fìor luach na seasmhach a chuir na àite

Bidh sinn a’ cleachdadh WebStorm mar an àrainneachd leasachaidh teachdaiche lìn againn.

Airson mion-sgrùdadh còd bidh sinn a 'cleachdadh fuaimneach, far am bi sinn ag amalachadh sgrùdairean còd statach. A’ cleachdadh sgrùdairean, bidh sinn a’ cumail sùil air ìsleachadh càileachd còd stòr JavaScript agus a’ feuchainn ri casg a chuir air.

Mu dheidhinn an eadar-lìn cliant 1C

Dè na duilgheadasan a bha/a bheil sinn a’ fuasgladh?

Rè buileachadh a’ phròiseict, thachair sinn ri grunn dhuilgheadasan inntinneach a bha againn ri fhuasgladh.

Dèan iomlaid air dàta leis an fhrithealaiche agus eadar uinneagan

Tha suidheachaidhean ann far am faod obfuscation a’ chòd stòr bacadh a chuir air obrachadh an t-siostaim. Faodaidh ainmean gnìomh agus paramadair a bhith aig còd taobh a-muigh còd so-ghnìomhaichte an neach-cleachdaidh lìn, mar thoradh air obfuscation, a tha eadar-dhealaichte bhon fheadhainn ris a bheil an còd so-ghnìomhaichte againn an dùil. Is e an còd taobh a-muigh dhuinn:

  • Còd a 'tighinn bhon fhrithealaiche ann an riochd dàta structaran
  • Còd airson uinneag tagraidh eile

Gus dragh a sheachnadh nuair a bhios sinn ag eadar-obrachadh leis an fhrithealaiche, bidh sinn a’ cleachdadh an taga @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;
}

Agus gus dragh a sheachnadh nuair a bhios sinn ag eadar-obrachadh le uinneagan eile, bidh sinn a’ cleachdadh eadar-aghaidh ris an canar às-mhalairt (eadar-aghaidh anns a bheil a h-uile dòigh air an às-mhalairt).

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

Chleachd sinn Virtual DOM mus tàinig e gu bhith na phrìomh-shruth)

Coltach ris a h-uile neach-leasachaidh a tha a 'dèiligeadh ri UIan lìn iom-fhillte, thuig sinn gu luath gu bheil an DOM gu math freagarrach airson a bhith ag obair le eadar-aghaidh cleachdaiche fiùghantach. Cha mhòr sa bhad, chaidh analog de Virtual DOM a chuir an gnìomh gus an obair as fheàrr a dhèanamh leis an UI. Rè giullachd tachartais, bidh a h-uile atharrachadh DOM air a stòradh mar chuimhne agus, dìreach nuair a bhios a h-uile gnìomhachd deiseil, thèid na h-atharrachaidhean cruinnichte a chuir an sàs anns a ’chraobh DOM.

Ag àrdachadh an neach-dèiligidh lìn as fheàrr

Gus toirt air ar teachdaiche lìn obrachadh nas luaithe, bidh sinn a’ feuchainn ris na comasan brabhsair àbhaisteach (CSS, msaa) a chleachdadh chun na h-ìre as àirde. Mar sin, tha am pannal àithne foirm (suidhichte air cha mhòr a h-uile seòrsa den tagradh) air a thoirt seachad a-mhàin a’ cleachdadh innealan brobhsair, a’ cleachdadh cruth fiùghantach stèidhichte air CSS.

Mu dheidhinn an eadar-lìn cliant 1C

Deuchainn

Airson deuchainn gnìomh agus coileanaidh, bidh sinn a’ cleachdadh inneal seilbh (sgrìobhte ann an Java agus C ++), a bharrachd air sreath de dheuchainnean a chaidh a thogail a bharrachd air Selenium.

Tha an inneal againn uile-choitcheann - leigidh e leat deuchainn a dhèanamh air cha mhòr prògram uinneig sam bith, agus mar sin tha e freagarrach airson a bhith a’ dèanamh deuchainn air gach cuid teachdaiche tana agus teachdaiche lìn. Bidh an inneal a’ clàradh gnìomhan an neach-cleachdaidh a chuir am fuasgladh tagraidh 1C air bhog ann am faidhle sgriobt. Aig an aon àm, tha ìomhaighean de raon obrach an sgrion - inbhean - air an clàradh. Nuair a bhios tu a’ cumail sùil air dreachan ùra den neach-dèiligidh lìn, thathas a’ cluich sgriobtaichean às aonais com-pàirt luchd-cleachdaidh. Ann an cùisean far nach eil an dealbh-sgrìn a’ freagairt ris an fhear iomraidh aig ìre sam bith, thathas den bheachd gu bheil an deuchainn air fàiligeadh, às deidh sin bidh eòlaiche càileachd a’ dèanamh sgrùdadh gus faighinn a-mach an e mearachd a tha seo no atharrachadh dealbhaichte ann an giùlan an t-siostaim. Ma thachras giùlan dealbhaichte, thèid feadhainn ùra a chuir nan àite gu fèin-ghluasadach.

Bidh an inneal cuideachd a’ tomhas coileanadh tagraidh le cruinneas suas ri 25 milliseconds. Ann an cuid de shuidheachaidhean, bidh sinn a 'lùbadh pàirtean den sgriobt (mar eisimpleir, ag ath-aithris an òrdugh a-steach grunn thursan) gus sgrùdadh a dhèanamh air ìsleachadh ùine cur gu bàs thar ùine. Tha toraidhean gach tomhais air an clàradh ann an log airson mion-sgrùdadh.

Mu dheidhinn an eadar-lìn cliant 1C
An inneal deuchainn agus an tagradh againn fo dheuchainn

Bidh an inneal againn agus Selenium a’ cur ri chèile; mar eisimpleir, ma tha putan air choireigin air aon de na scrionaichean air a shuidheachadh atharrachadh, is dòcha nach lorg Selenium seo, ach mothaichidh an inneal againn, oir a’ dèanamh coimeas piogsail-air-piogsail den dealbh-sgrìn leis an ìre àbhaisteach. Bidh an inneal cuideachd comasach air lorg a chumail air duilgheadasan le bhith a’ giullachd cuir a-steach bhon mheur-chlàr no an luchag, leis gur e seo dìreach a bhios e ag ath-riochdachadh.

Bidh deuchainnean air an dà inneal (sinn agus Selenium) a’ ruith shuidheachaidhean obrach àbhaisteach bho na fuasglaidhean tagraidh againn. Thèid deuchainnean a chuir air bhog gu fèin-ghluasadach às deidh togail làitheil an àrd-ùrlar 1C:Enterprise. Ma tha sgriobtaichean nas slaodaiche (an taca ris an togail roimhe), bidh sinn a’ sgrùdadh agus a’ fuasgladh adhbhar a’ chrìonaidh. Tha an slat-tomhais againn sìmplidh - cha bu chòir don togalach ùr obrachadh nas slaodaiche na an tè roimhe.

Bidh luchd-leasachaidh a’ cleachdadh diofar innealan gus tachartasan slaodachaidh a sgrùdadh; air a chleachdadh sa mhòr-chuid Tionndadh AJAX Dynatrace companaidh riochdachaidh DynaTrace. Tha logaichean de choileanadh na h-obrach trioblaideach air na togalaichean roimhe agus na togalaichean ùra air an clàradh, agus an uairsin thèid na logaichean a sgrùdadh. Aig an aon àm, is dòcha nach bi ùine cur an gnìomh gnìomhachd singilte (ann am milliseconds) na fheart cinnteach - bidh pròiseasan seirbheis leithid cruinneachadh sgudail air an cur air bhog bho àm gu àm sa bhrobhsair, faodaidh iad a dhol thairis air ùine cur an gnìomh ghnìomhan agus an dealbh a thionndadh. Is e crìochan nas buntainniche sa chùis seo an àireamh de stiùiridhean JavaScript a chaidh a chuir gu bàs, an àireamh de ghnìomhachd atamach air an DOM, msaa. Ma tha an àireamh de stiùiridhean / obrachaidhean san aon sgriobt air a dhol suas ann an dreach ùr, tha seo cha mhòr an-còmhnaidh a’ ciallachadh tuiteam ann an coileanadh a dh’ fheumar a cheartachadh.

Cuideachd, is dòcha gur e aon de na h-adhbharan airson an lùghdachadh ann an coileanadh nach robh e comasach dha Google Closure Compiler airson adhbhar air choireigin ionadachadh in-loidhne den ghnìomh a dhèanamh (mar eisimpleir, leis gu bheil an gnìomh ath-chuairteach no brìgheil). Anns a 'chùis seo, bidh sinn a' feuchainn ris an t-suidheachadh a cheartachadh le bhith ag ath-sgrìobhadh a 'chòd stòr.

Leudachain brabhsair

Nuair a dh’ fheumas fuasgladh tagraidh comas-gnìomh nach eil ri fhaighinn ann an JavaScript, bidh sinn a’ cleachdadh leudachaidhean brabhsair:

  • airson a bhith ag obair le faidhlichean
  • airson a bhith ag obair le cryptography
  • obair le co-phàirtean a-muigh

Tha dà phàirt anns na leudachaidhean againn. Is e a’ chiad phàirt an rud ris an canar leudachadh brobhsair (mar as trice leudachain airson Chrome agus Firefox sgrìobhte ann an JavaScript), a bhios ag eadar-obrachadh leis an dàrna pàirt - leudachadh binary a chuireas an gnìomh a dh’ fheumas sinn. Bu chòir a thoirt fa-near gu bheil sinn a’ sgrìobhadh 3 dreachan de leudachadh binary - airson Windows, Linux agus MacOS. Tha an leudachadh binary air a thoirt seachad mar phàirt den àrd-ùrlar 1C:Enterprise agus tha e suidhichte air frithealaiche tagraidh 1C. Nuair a thèid a ghairm airson a’ chiad uair bho neach-dèiligidh lìn, thèid a luchdachadh sìos gu coimpiutair an neach-dèiligidh agus a chuir a-steach sa bhrobhsair.

Nuair a bhios iad a’ ruith ann an Safari, bidh na leudachain againn a’ cleachdadh NPAPI; nuair a bhios iad a’ ruith ann an Internet Explorer, bidh iad a’ cleachdadh teicneòlas ActiveX. Microsoft Edge chan eil e fhathast a’ toirt taic do leudachaidhean, agus mar sin bidh an neach-dèiligidh lìn ann ag obair le cuingeachaidhean.

Barrachd leasachaidh

Is e aon de na gnìomhan airson sgioba leasachaidh teachdaiche lìn tuilleadh leasachaidh air comas-gnìomh. Bu chòir gnìomhachd an neach-dèiligidh lìn a bhith co-ionann ri gnìomhachd an neach-dèiligidh tana; tha a h-uile gnìomh ùr air a chuir an gnìomh aig an aon àm anns an dà chuid teachdaichean tana agus lìn.

Tha gnìomhan eile a’ toirt a-steach leasachadh na h-ailtireachd, ath-fhactaraidh, leasachadh dèanadais agus earbsachd. Mar eisimpleir, is e aon de na stiùiridhean gluasad a bharrachd a dh’ ionnsaigh modal obrach asyncronach. Tha cuid de ghnìomhachd an neach-dèiligidh lìn an-dràsta stèidhichte air modal sioncronaich de eadar-obrachadh leis an fhrithealaiche. Tha am modail asyncronach a-nis a’ fàs nas buntainniche ann am brobhsairean (agus chan ann a-mhàin ann am brobhsairean), agus tha seo a’ toirt oirnn an teachdaiche lìn atharrachadh le bhith a’ cur an àite fiosan sioncronaich le feadhainn asyncronach (agus ag ath-nuadhachadh a’ chòd a rèir sin). Tha an gluasad mean air mhean gu modal asyncronach air a mhìneachadh leis an fheum air taic a thoirt do fhuasglaidhean a chaidh an leigeil ma sgaoil agus an atharrachadh mean air mhean.

Source: www.habr.com

Cuir beachd ann