Mar gheall ar an cliant gréasáin 1C saor in aisce,

Ceann de na gnéithe deasa de 1C:Teicneolaíocht Fiontraíochta ná gur féidir an réiteach feidhmchláir, a fhorbraítear ag baint úsáide as teicneolaíocht foirmeacha bainistithe, a sheoladh i gcliant tanaí (inrite) le haghaidh Windows, Linux, MacOS X, agus mar chliaint gréasáin ar feadh 5 bhrabhsálaí - Chrome, Internet Explorer, Firefox, Safari, Edge, agus seo go léir gan cód foinse an fheidhmchláir a athrú. Thairis sin, go seachtrach feidhmíonn an t-iarratas sa chliant tanaí agus sa bhrabhsálaí agus tá sé beagnach mar an gcéanna.
Faigh 10 gcinn de dhifríochtaí (2 phictiúr faoin gearrtha):

Fuinneog cliant tanaí ar Linux:

Mar gheall ar an cliant gréasáin 1C saor in aisce,

An fhuinneog chéanna sa chliant gréasáin (sa bhrabhsálaí Chrome):

Mar gheall ar an cliant gréasáin 1C saor in aisce,

Cén fáth a ndearnamar cliant gréasáin? Chun é a chur go foighneach, tá cúram dá leithéid leagtha síos ag an am dúinn. Is réamhriachtanas le fada an lá oibriú ar an Idirlíon le haghaidh feidhmeanna gnó. Ar dtús, chuireamar leis an gcumas oibriú tríd an Idirlíon dár gcliant tanaí (stad cuid dár n-iomaitheoirí, dála an scéil; thréig daoine eile, ar a mhalairt, an cliant tanaí agus chuir siad teorainn le cliant gréasáin a chur i bhfeidhm). Shocraigh muid an deis a thabhairt dár n-úsáideoirí an rogha cliant is fearr a oireann dóibh a roghnú.

Mar gheall ar an cliant gréasáin 1C saor in aisce,

Ba thionscadal mór é cumais ghréasán-bhunaithe a chur leis an gcliant tanaí agus tháinig athrú iomlán ar ailtireacht cliant-freastalaí. Is tionscadal iomlán nua é cliant gréasáin a chruthú, ag tosú ón tús.

An fhadhb a fhoirmiú

Mar sin, riachtanais an tionscadail: ní mór don chliant gréasáin an rud céanna a dhéanamh leis an gcliant tanaí, eadhon:

  1. Taispeáin comhéadan úsáideora
  2. Rith cód cliant scríofa i dteanga 1C

Déantar cur síos ar an gcomhéadan úsáideora i 1C in eagarthóir amhairc, ach go declaratively, gan socrú picteilín-ar-picteilín na n-eilimintí; Úsáidtear thart ar thrí dhosaen cineál eilimintí comhéadan - cnaipí, réimsí ionchuir (téacs, uimhriúil, dáta / am), liostaí, táblaí, graif, etc.

Is féidir le cód cliant sa teanga 1C go bhfuil glaonna freastalaí, ag obair le hacmhainní áitiúla (comhaid, etc), priontáil, agus i bhfad níos mó.

Úsáideann an cliant tanaí (nuair a bhíonn siad ag obair tríd an ngréasán) agus an cliant gréasáin an tsraith chéanna seirbhísí gréasáin chun cumarsáid a dhéanamh leis an bhfreastalaí feidhmchláir 1C. Tá feidhmiúcháin na gcliant, ar ndóigh, difriúil - tá an cliant tanaí scríofa i C ++, tá an cliant gréasáin scríofa i JavaScript.

A Stair beag

Thosaigh an tionscadal cliant gréasáin i 2006, le foireann de (ar an meán) 5 daoine. Ag céimeanna áirithe den tionscadal, bhí baint ag forbróirí le feidhmiúlacht shonrach a chur i bhfeidhm (doiciméad scarbhileog, léaráidí, etc.); mar riail, ba iad seo na forbróirí céanna a rinne an fheidhmiúlacht seo sa chliant tanaí. Iad siúd. d'athscríobh forbróirí comhpháirteanna i JavaScript a chruthaigh siad roimhe seo in C++.

Ón tús, dhiúltaigh muid an smaoineamh ar aon chomhshó uathoibríoch (fiú páirteach) de C++ cód cliant tanaí isteach i gcliant gréasáin JavaScript mar gheall ar na difríochtaí coincheapúla láidre idir an dá theanga; Scríobhadh an cliant gréasáin i JavaScript ón tús.

I gcéad atriallta an tionscadail, d'iompaigh an cliant gréasáin cód cliaint sa teanga 1C ionsuite go díreach isteach i JavaScript. Feidhmíonn an cliant tanaí go difriúil - déantar an cód sa teanga 1C ionsuite a thiomsú i bytecode, agus ansin déantar an bytecode seo a léirmhíniú ar an gcliant. Ina dhiaidh sin, thosaigh an cliant gréasáin ag déanamh an rud céanna - ar an gcéad dul síos, thug sé gnóthachan feidhmíochta, agus sa dara háit, rinne sé indéanta ailtireacht na gcliant tanaí agus gréasáin a aontú.

Eisíodh an chéad leagan den ardán 1C:Enterprise le tacaíocht cliant gréasáin in 2009. Thacaigh an cliant gréasáin ag an am sin le 2 bhrabhsálaí - Internet Explorer agus Firefox. Áiríodh leis na pleananna bunaidh tacaíocht do Opera, ach mar gheall ar fhadhbanna dosháraithe ag an am sin leis na láimhseálaithe dúnadh iarratais in Opera (níorbh fhéidir a rianú le cinnteacht 100% go raibh an t-iarratas ag dúnadh, agus ag an nóiméad sin déan an nós imeachta dínasctha ó b'éigean an freastalaí feidhmchlár 1C) ó na pleananna seo a thréigean.

Struchtúr an tionscadail

San iomlán, tá 1 thionscadal scríofa ag an ardán 4C:Fiontar i JavaScript:

  1. WebTools – leabharlanna comhroinnte a úsáideann tionscadail eile (áirímid freisin Leabharlann Dúnadh Google).
  2. Eilimint rialaithe Doiciméad Formáidithe (arna chur i bhfeidhm i JavaScript sa chliant tanaí agus sa chliant gréasáin araon)
  3. Eilimint rialaithe Sceidealóir (arna chur i bhfeidhm i JavaScript sa chliant tanaí agus sa chliant gréasáin araon)
  4. Cliant gréasáin

Tá struchtúr gach tionscadail cosúil le struchtúr na dtionscadal Java (nó tionscadail .NET - cibé acu is gaire); Tá spásanna ainmneacha againn, agus tá gach ainmspás i bhfillteán ar leith. Taobh istigh den fhillteán tá comhaid agus ranganna ainmspáis. Tá thart ar 1000 comhad sa tionscadal cliant gréasáin.

Go struchtúrach, tá an cliant gréasáin roinnte go mór sna fochórais seo a leanas:

  • Comhéadan feidhmchlár cliaint bainistithe
    • Comhéadan feidhmchláir ghinearálta (roghchláir chórais, painéil)
    • Comhéadan foirmeacha bainistithe, lena n-áirítear, i measc rudaí eile, thart ar 30 rialtán (cnaipí, cineálacha éagsúla réimsí ionchuir - téacs, uimhriúil, dáta/am, etc., táblaí, liostaí, graif, etc.)

  • Samhail oibiachta atá ar fáil d’fhorbróirí ar an gcliant (os cionn 400 cineál san iomlán: samhail réad comhéadan bainistithe, socruithe leagan amach sonraí, stíliú coinníollach, etc.)
  • Ateangaire an teanga ionsuite 1C
  • Eisínteachtaí brabhsálaí (a úsáidtear le haghaidh feidhmiúlacht nach dtacaítear léi i JavaScript)
    • Ag obair le cripteagrafaíocht
    • Ag obair le comhaid
    • Teicneolaíocht na gcomhpháirteanna seachtracha, rud a ligeann iad a úsáid i gcliant tanaí agus gréasáin araon

Gnéithe Forbartha

Níl sé éasca gach ceann díobh thuas a chur i bhfeidhm i JavaScript. B'fhéidir gurb é an cliant gréasáin 1C ceann de na hiarratais is mó ar thaobh an chliaint atá scríofa i JavaScript - thart ar 450.000 líne. Bainimid úsáid as cur chuige atá dírithe ar oibiachtaí go gníomhach sa chód cliant gréasáin, rud a shimplíonn oibriú le tionscadal chomh mór.

Chun méid an chóid cliant a íoslaghdú, d'úsáideamar ár obfuscator féin ar dtús, agus ag tosú le leagan ardán 8.3.6 (Deireadh Fómhair 2014) thosaigh muid ag úsáid Tiomsaitheoir Dúnadh Google. Tionchar úsáide in uimhreacha – méid an chreata cliant gréasáin tar éis obfuscation:

  • Obfuscator Féin - 1556 kb
  • Tiomsaitheoir Dúnadh Google - 1073 kb

Trí úsáid a bhaint as Google Closure Compiler chabhraigh sé linn feidhmíocht an chliaint gréasáin a fheabhsú 30% i gcomparáid lenár obfuscator féin. Ina theannta sin, tháinig laghdú 15-25% ar an méid cuimhne a chaitear leis an iarratas (ag brath ar an mbrabhsálaí).

Oibríonn Google Closure Compiler go han-mhaith le cód atá dírithe ar oibiachtaí, agus mar sin tá a éifeachtúlacht don chliant gréasáin chomh hard agus is féidir. Déanann Tiomsaitheoir Dúnadh cúpla rud maith dúinn:

  • Cinntíonn seiceáil cineál statach ag céim thógála an tionscadail (cinntítear go gclúdaímid an cód le nótaí JSDoc). Is é an toradh ná clóscríobh statach, an-ghar ó thaobh leibhéal le clóscríobh i C++. Cuidíonn sé seo le céatadán measartha mór earráidí a aimsiú ag céim tiomsaithe an tionscadail.
  • Méid an chóid a laghdú trí obfuscation
  • Roinnt leas iomlán a bhaint as an gcód forghníomhaithe, mar shampla:
    • ionaid fheidhme inlíne. Is oibríocht measartha costasach é glaoch ar fheidhm i JavaScript, agus cuireann ionadú inlíne ar mhodhanna beaga a úsáidtear go minic dlús suntasach leis an gcód.
    • Ag comhaireamh tairisigh ag am tiomsaithe. Má bhraitheann slonn ar thairiseach, cuirfear luach iarbhír an tairisigh isteach ann

Bainimid úsáid as WebStorm mar ár dtimpeallacht forbartha cliant gréasáin.

Le haghaidh anailíse cód úsáidimid fuaimrian, áit a ndéanaimid anailíseoirí cód statacha a chomhtháthú. Ag baint úsáide as anailísí, déanaimid monatóireacht ar dhíghrádú cháilíocht chód foinse JavaScript agus déanaimid iarracht é a chosc.

Mar gheall ar an cliant gréasáin 1C saor in aisce,

Cad iad na fadhbanna a bhí/atá á réiteach againn?

Le linn an tionscadal a chur i bhfeidhm, thángamar ar roinnt fadhbanna suimiúla a bhí le réiteach againn.

Malartú sonraí leis an bhfreastalaí agus idir fuinneoga

Tá cásanna ann inar féidir cur isteach ar oibriú an chórais de bharr doiléire an chóid foinse. D’fhéadfadh go mbeadh ainmneacha feidhme agus paraiméadar atá difriúil ó na cinn a bhfuil ár gcód inrite ag súil leo ag Cód atá taobh amuigh de chód inrite an chliaint gréasáin, mar gheall ar imshuí. Is é an cód seachtrach dúinn:

  • Cód ag teacht ón bhfreastalaí i bhfoirm struchtúir sonraí
  • Cód le haghaidh fuinneog feidhmchláir eile

Chun doiléire a sheachaint agus muid ag idirghníomhú leis an bhfreastalaí, bainimid úsáid as an gclib @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 chun obfuscation a sheachaint agus muid ag idirghníomhú le fuinneoga eile, úsáidimid comhéadain easpórtála mar a thugtar orthu (comhéadain ina ndéantar gach modh a onnmhairiú).

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

D’úsáideamar Virtual DOM sular tháinig sé chun bheith ina phríomhshruth)

Cosúil le gach forbróir a bhíonn ag déileáil le Comhéadain Gréasáin casta, thuig muid go tapa nach bhfuil an DOM oiriúnach go maith chun oibriú le comhéadain úsáideora dinimiciúla. Beagnach láithreach, cuireadh analóg de Virtual DOM i bhfeidhm chun obair leis an Chomhéadain a bharrfheabhsú. Le linn próiseála imeachtaí, stóráiltear gach athrú DOM sa chuimhne agus, ach amháin nuair a bhíonn na hoibríochtaí go léir críochnaithe, cuirtear na hathruithe carntha i bhfeidhm ar an gcrann DOM.

An cliant gréasáin a bharrfheabhsú

Chun go n-oibreoidh ár gcliant gréasáin níos tapúla, déanaimid iarracht na cumais bhrabhsálaí caighdeánach (CSS, etc.) a úsáid chomh fada agus is féidir. Mar sin, déantar an painéal ordaithe foirme (suite ar bheagnach gach foirm den fheidhmchlár) a rindreáil go heisiach ag baint úsáide as uirlisí brabhsálaí, ag baint úsáide as leagan amach dinimiciúil bunaithe ar CSS.

Mar gheall ar an cliant gréasáin 1C saor in aisce,

Tástáil

Le haghaidh tástála feidhmiúla agus feidhmíochta, úsáidimid uirlis dhílseánaigh (scríofa i Java agus C++), chomh maith le sraith tástálacha a tógadh ar bharr Seiléiniam.

Tá ár n-uirlis uilíoch - ligeann sé duit beagnach aon chlár fhuinneog a thástáil, agus dá bhrí sin tá sé oiriúnach chun cliant tanaí agus cliant gréasáin a thástáil. Taifeadann an uirlis gníomhartha an úsáideora a sheol an réiteach feidhmchláir 1C isteach i gcomhad scripte. Ag an am céanna, déantar íomhánna d'achar oibre an scáileáin - caighdeáin - a thaifeadadh. Nuair a dhéantar monatóireacht ar leaganacha nua den chliant gréasáin, seinntear scripteanna gan rannpháirtíocht úsáideoirí. I gcásanna nach bhfuil an scáileán ag teacht leis an gceann tagartha ag céim ar bith, meastar gur theip ar an tástáil, agus ina dhiaidh sin déanann speisialtóir cáilíochta imscrúdú chun a chinneadh an earráid nó athrú pleanáilte ar iompar an chórais é seo. I gcás iompar pleanáilte, cuirtear caighdeáin nua in ionad na gcaighdeán go huathoibríoch.

Tomhaiseann an uirlis freisin feidhmíocht feidhmchláir le cruinneas suas le 25 milleasoicind. I gcásanna áirithe, lúbann muid codanna den script (mar shampla, an t-iontráil ordaithe a athrá arís agus arís eile) chun anailís a dhéanamh ar dhíghrádú an ama forghníomhaithe le himeacht ama. Déantar torthaí gach tomhais a thaifeadadh i loga le haghaidh anailíse.

Mar gheall ar an cliant gréasáin 1C saor in aisce,
Ár n-uirlis tástála agus cur i bhfeidhm faoi thástáil

Comhlánaíonn ár n-uirlis agus Seiléiniam a chéile; mar shampla, má d'athraigh cnaipe éigin ar cheann de na scáileáin a shuíomh, ní fhéadfaidh Seiléiniam é seo a rianú, ach tabharfaidh ár n-uirlis faoi deara, mar gheall ar déanann sé comparáid picteilín-ar-picteilín den scáileán scáileáin leis an gcaighdeán. Tá an uirlis in ann fadhbanna a rianú le hionchur próiseála ón méarchlár nó ón luch freisin, ós rud é gurb é seo go díreach a atáirgeann sé.

Ritheann tástálacha ar an dá uirlis (ár n-uirlis agus Seiléiniam) gnáthchásanna oibre ónár réitigh feidhmchlár. Seoltar tástálacha go huathoibríoch tar éis an t-ardán 1C:Fiontar a thógáil go laethúil. Má tá scripteanna níos moille (i gcomparáid leis an tógáil roimhe seo), déanaimid imscrúdú agus réiteach ar chúis an mhoillithe. Tá ár gcritéar simplí - níor cheart go n-oibreodh an tógáil nua níos moille ná an ceann roimhe seo.

Úsáideann forbróirí uirlisí éagsúla chun teagmhais moilliú a imscrúdú; a úsáidtear go príomha Eagrán AJAX Dynatrace comhlacht léiriúcháin DynaTrace. Taifeadtar logaí de chur i gcrích na hoibríochta fadhbaí ar na foirgnimh roimhe seo agus na foirgnimh nua, ansin déantar anailís ar na logaí. Ag an am céanna, ní fhéadfaidh am forghníomhaithe oibríochtaí aonair (i milleasoicindí) a bheith ina fhachtóir cinntitheach - seoltar próisis seirbhíse cosúil le bailiú truflais go tréimhsiúil sa bhrabhsálaí, is féidir leo forluí a dhéanamh le ham forghníomhaithe na bhfeidhmeanna agus an pictiúr a shaobhadh. Bheadh ​​​​paraiméadair níos ábhartha sa chás seo líon na dtreoracha JavaScript a fhorghníomhófar, líon na n-oibríochtaí adamhach ar an DOM, etc. Má tá méadú tagtha ar líon na dtreoracha/oibríochtaí sa script chéanna i leagan nua, ciallaíonn sé seo beagnach i gcónaí laghdú ar fheidhmíocht is gá a cheartú.

Chomh maith leis sin, b’fhéidir gurb é ceann de na cúiseanna leis an laghdú ar fheidhmíocht ná nach raibh Google Closure Compiler in ann ionadú inlíne na feidhme a dhéanamh (mar shampla, toisc go bhfuil an fheidhm athfhillteach nó fíorúil). Sa chás seo, déanaimid iarracht an cás a cheartú tríd an gcód foinse a athscríobh.

Síntí brabhsálaí

Nuair a bhíonn feidhmiúlacht nach bhfuil ar fáil i JavaScript de dhíth ar réiteach feidhmchlár, úsáidimid síntí brabhsálaí:

Ár síntí comhdhéanta de dhá chuid. Is é an chéad chuid an rud ar a dtugtar síneadh brabhsálaí (de ghnáth síntí do Chrome agus Firefox scríofa i JavaScript), a idirghníomhaíonn leis an dara cuid - síneadh dénártha a chuireann an fheidhmiúlacht a theastaíonn uainn i bhfeidhm. Ba chóir a lua go scríobhaimid 3 leagan de síntí dénártha - le haghaidh Windows, Linux agus MacOS. Soláthraítear an síneadh dénártha mar chuid den ardán 1C:Fiontar agus tá sé suite ar fhreastalaí feidhmchláir 1C. Nuair a ghlaoitear air den chéad uair ó chliant gréasáin, déantar é a íoslódáil chuig ríomhaire an chliaint agus a shuiteáil sa bhrabhsálaí.

Agus iad ag rith in Safari, úsáideann ár gcuid síntí NPAPI; agus iad ag rith in Internet Explorer, úsáideann siad teicneolaíocht ActiveX. Microsoft Edge ní thacaíonn síntí go fóill, mar sin oibríonn an cliant gréasáin inti le srianta.

Tuilleadh forbartha

Ar cheann de na tascanna don fhoireann forbartha cliant gréasáin tá forbairt bhreise ar fheidhmiúlacht. Ba cheart go mbeadh feidhmiúlacht an chliaint gréasáin comhionann le feidhmiúlacht an chliaint tanaí; cuirtear gach feidhmiúlacht nua i bhfeidhm go comhuaineach sna cliaint tanaí agus gréasáin araon.

I measc na dtascanna eile tá forbairt na hailtireachta, athmhacrú, feidhmíocht agus iontaofacht a fheabhsú. Mar shampla, is é ceann de na treoracha ná tuilleadh gluaiseachta i dtreo múnla oibre asincrónach. Tá cuid de fheidhmiúlacht an chliaint gréasáin tógtha faoi láthair ar shamhail shioncrónach idirghníomhaithe leis an bhfreastalaí. Tá an tsamhail asincrónach ag éirí níos ábhartha anois i mbrabhsálaithe (agus ní hamháin i mbrabhsálaithe), agus cuireann sé seo iallach orainn an cliant gréasáin a mhodhnú trí ghlaonna asincrónacha a chur in ionad glaonna sioncrónacha (agus an cód a athmhacrú dá réir). Mínítear an t-aistriú de réir a chéile go samhail asincrónach tríd an ngá atá le réitigh a scaoiltear a thacú agus lena n-oiriúnú de réir a chéile.

Foinse: will.com

Add a comment