Nezve 1C web client

Imwe yeakanakisa maficha e1C: Enterprise tekinoroji ndeyekuti mhinduro yekushandisa, yakagadziridzwa uchishandisa yakagadziriswa mafomu tekinoroji, inogona kutangwa mune yakatetepa (inogoneka) mutengi weWindows, Linux, MacOS X, uye seweb mutengi wemabhurawuza mashanu - Chrome, Internet Explorer, Firefox, Safari, Edge, uye zvese izvi pasina kushandura kodhi yekushandisa. Uyezve, kunze kwekushandisa kwemutengi mutete uye mubrowser inoshanda uye inotaridzika zvakafanana.
Tsvaga gumi mutsauko (10 mifananidzo pasi pekuchekwa):

Mutengi mutengi hwindo paLinux:

Nezve 1C web client

Iro hwindo rimwe chete rewebhu mutengi (mu Chrome browser):

Nezve 1C web client

Sei takagadzira mutengi wewebhu? Kuzvitaura zvinonzwisa tsitsi, nguva yakatigadzirira basa rakadaro. Kushanda paInternet kwagara kuri chinhu chinodiwa pakushandisa bhizinesi. Chekutanga, isu takawedzera kugona kushanda kuburikidza neInternet kune mutengi wedu mutete (vamwe vevakwikwidzi vedu, nenzira, vakamira ipapo; vamwe, zvakasiyana, vakasiya mutengi mutete uye vakagumira ivo pachavo kuita mutengi wewebhu). Isu takasarudza kupa vashandisi vedu mukana wekusarudza sarudzo yemutengi inovakodzera zvakanyanya.

Nezve 1C web client

Kuwedzera webhu-yakavakirwa kugona kune mutete mutengi yaive purojekiti hombe ine shanduko yakazara mutengi-server architecture. Kugadzira mutengi wewebhu ipurojekiti nyowani, kutanga kubva pakatanga.

Kugadzirwa kwedambudziko

Saka, zvinodikanwa zveprojekiti: mutengi wewebhu anofanira kuita zvakafanana nemutengi mutete, anoti:

  1. Ratidza mushandisi interface
  2. Ita kodhi yemutengi yakanyorwa mumutauro we1C

Mushandisi wemushandisi mu1C inotsanangurwa mune inooneka mupepeti, asi inozivisa, isina pixel-by-pixel kurongeka kwezvinhu; Anenge matatu gumi nemaviri emhando dzema interface anoshandiswa - mabhatani, minda yekuisa (zvinyorwa, nhamba, zuva / nguva), rondedzero, matafura, magirafu, nezvimwe.

Kodhi yemutengi mumutauro we1C inogona kunge iine mafoni evhavha, kushanda nezviwanikwa zvemuno (mafaira, nezvimwewo), kudhinda, nezvimwe zvakawanda.

Vese vari vaviri mutengi mutete (kana vachishanda kuburikidza newebhu) uye mutengi wewebhu anoshandisa imwechete seti yewebhu masevhisi kutaurirana ne1C application server. Kuitwa kwevatengi, hongu, kwakasiyana - mutengi mutete akanyorwa muC ++, iyo webhu mutengi yakanyorwa muJavaScript.

A bit of history

Iyo web client project yakatanga muna 2006, nechikwata che (paavhareji) vanhu vashanu. Pane dzimwe nhanho dzepurojekiti, vagadziri vakabatanidzwa kuita basa chairo (gwaro respreadsheet, madhayagiramu, nezvimwewo); sekutonga, ava vaive vagadziri vakafanana vakaita izvi mutengi mutete. Avo. vagadziri vakanyora zvakare zvikamu muJavaScript zvavakanga vambogadzira muC++.

Kubva pakutanga, isu takaramba pfungwa yechero otomatiki (kunyangwe chikamu) shanduko yeC++ yakaonda mutengi kodhi kuita JavaScript webhu mutengi nekuda kwekusiyana kwakasimba kwepfungwa pakati pemitauro miviri iyi; iyo mutengi wewebhu yakanyorwa muJavaScript kubva pakutanga.

Mukutanga kudzokororwa kwepurojekiti, mutengi wewebhu akashandura kodhi yemutengi mune yakavakirwa-mukati 1C mutauro zvakananga muJavaScript. Mutengi mutete anoita zvakasiyana - kodhi mumutauro wakavakirwa-mukati 1C inounganidzwa mubytecode, uyezve iyi bytecode inodudzirwa pamutengi. Mushure meizvozvo, mutengi wewebhu akatanga kuita zvakafanana - chekutanga, yakapa budiriro yekuita, uye chechipiri, yakaita kuti zvikwanise kubatanidza zvivakwa zvevatete uye webhu vatengi.

Yekutanga vhezheni ye1C:Enterprise papuratifomu ine webhu mutengi rutsigiro yakaburitswa muna 2009. Mutengi wewebhu panguva iyoyo aitsigira mabhurawuza maviri - Internet Explorer neFirefox. Zvirongwa zvepakutanga zvaisanganisira kutsigirwa kweOpera, asi nekuda kwematambudziko asingakundiki panguva iyoyo nemabatiro ekuvhara maapplication muOpera (hazvaikwanisika kuronda ne2% chokwadi chekuti chikumbiro chaive chiri kuvhara, uye panguva iyoyo kuita nzira yekudzima kubva. iyo 100C application server) kubva muzvirongwa izvi zvaifanira kusiiwa.

Chirongwa cheprojekiti

Pakazara, iyo 1C:Enterprise platform ine 4 mapurojekiti akanyorwa muJavaScript:

  1. WebTools - akagovaniswa maraibhurari anoshandiswa nemamwe mapurojekiti (tinosanganisirawo Google Yekuvhara Raibhurari).
  2. Control element FormattedDocument (inoshandiswa muJavaScript mune zvese mutengi mutete uye mutengi wewebhu)
  3. Control element scheduler (inoshandiswa muJavaScript mune zvese mutengi mutete uye mutengi wewebhu)
  4. Web client

Chimiro chepurojekiti imwe neimwe yakafanana nemaitiro eJava mapurojekiti (kana .NET mapurojekiti - chero ari pedyo); Tine nzvimbo dzemazita, uye imwe neimwe nzvimbo yezita iri mune yakaparadzana folda. Mukati mefolda mune mafaera uye makirasi emazita. Kune angangoita 1000 mafaera muwebhu client project.

Zvimiro, mutengi wewebhu akakamurwa zvakanyanya kuita anotevera subsystems:

  • Yakagadziriswa mutengi application interface
    • General application interface (system menyu, mapaneru)
    • Interface yemafomu anogadziriswa, anosanganisira, pakati pezvimwe zvinhu, angangoita makumi matatu ekudzora (mabhatani, akasiyana marudzi enzvimbo dzekuisa - zvinyorwa, nhamba, zuva/nguva, nezvimwewo, matafura, rondedzero, magirafu, nezvimwewo)

  • Chinhu modhi inowanikwa kune vanogadzira pane mutengi (anopfuura mazana mana emarudzi akazara: yakachengetedzwa interface chinhu modhi, marongero edhisheni, zvimiro zvemaitiro, nezvimwewo)
  • Muturikiri weiyo yakavakirwa-mukati 1C mutauro
  • Mawedzero ebrowser (anoshandiswa kuita zvisinga tsigirwe muJavaScript)
    • Kushanda necryptography
    • Kushanda nemafaira
    • Tekinoroji yezvikamu zvekunze, zvichivabvumira kushandiswa mune zvese zvakatetepa uye webhu vatengi

Development Features

Kuita zvese zviri pamusoro muJavaScript hazvisi nyore. Zvichida iyo 1C yewebhu mutengi ndeimwe yeakakura-mutengi-parutivi application yakanyorwa muJavaScript - ingangoita 450.000 mitsetse. Isu tinoshingairira kushandisa nzira yakatarisana nechinhu muwebhu kodhi yemutengi, iyo inorerutsa kushanda nepurojekiti yakakura kudaro.

Kuti tideredze saizi yekodhi yemutengi, takatanga kushandisa yedu obfuscator, uye kutanga neplatform version 8.3.6 (Gumiguru 2014) takatanga kushandisa. Google Kuvhara Compiler. Mhedzisiro yekushandiswa munhamba - saizi yewebhu mutengi chimiro mushure mekubfuscation:

  • Own obfuscator - 1556 kb
  • Google Kuvhara Compiler - 1073 kb

Kushandisa Google Kuvhara Compiler kwakatibatsira kuvandudza mashandiro ewebhu mutengi ne30% zvichienzaniswa neyedu obfuscator. Uye zvakare, huwandu hwekuyeuka hunopedzwa nechishandiso hwadzikira ne15-25% (zvinoenderana nebrowser).

Google Kuvhara Compiler inoshanda chaizvo nekodhi-yakatarisana nekodhi, saka kushanda kwayo kwewebhu mutengi kwakakwira zvakanyanya sezvinobvira. Kuvhara Compiler inotiitira zvinhu zvishoma zvakanaka:

  • Static mhando yekutarisa padanho rekuvaka purojekiti (inovimbisa kuti tinovhara kodhi neJSDoc zvirevo). Mhedzisiro yacho ndeye static typing, iri padyo padanho rekunyora muC++. Izvi zvinobatsira kubata chikamu chakakura kwazvo chezvikanganiso padanho rekugadzira chirongwa.
  • Kuderedza kodhi saizi kuburikidza neobfuscation
  • A akati wandei ma optimizations eiyo kodhi kodhi, semuenzaniso, senge:
    • inline basa zvinotsiva. Kudana basa muJavaScript ibasa rinodhura, uye inline inotsiva yeanowanzo shandiswa nzira diki dzinomhanyisa kodhi.
    • Kuverenga garandi panguva yekuunganidza. Kana kutaura kunotsamira pane zvinogara zvakadaro, ukoshi chaihwo hwenguva dzose hunotsiviwa mairi

Isu tinoshandisa WebStorm senzvimbo yedu yekuvandudza vatengi vewebhu.

Kuongorora kwekodhi tinoshandisa soundQube, kwatinobatanidza static code analyzers. Tichishandisa analyzer, tinotarisisa kuderedzwa kwemhando yeJavaScript source code uye tinoedza kuidzivirira.

Nezve 1C web client

Ndeapi matambudziko akaita/tiri kugadzirisa?

Panguva yekushandiswa kweprojekti, takasangana nematambudziko akawanda anonakidza ataifanira kugadzirisa.

Shandura data neseva uye pakati pemahwindo

Pane mamiriro ezvinhu apo obfuscation yekodhi yekodhi inogona kukanganisa kushanda kwehurongwa. Kodhi yekunze kune yewebhu mutengi kodhi inogoneka, nekuda kwekukanganisa, inogona kunge iine basa uye parameter mazita akasiyana neayo anotarisirwa kodhi yedu. Iyo yekunze kodhi yedu ndeye:

  • Kodhi inouya kubva kuseva muchimiro che data zvimiro
  • Kodhi yeimwe hwindo rekushandisa

Kuti udzivise kubvongodzwa kana uchidyidzana nesevha, tinoshandisa @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;
}

Uye kuti tidzivise kubvongodzwa kana tichibatana nemamwe mahwindo, tinoshandisa izvo zvinonzi zvinotengeswa kunze kwenyika (interfaces umo nzira dzese dzinotengeswa kunze).

/**
 * ЭкспортируСмый интСрфСйс ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π° 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 (){}

Isu takashandisa Virtual DOM isati yave huru)

Kufanana nevagadziri vese vari kubata neakaomesesa Webhu UIs, isu takakurumidza kuona kuti iyo DOM haina kukodzera kushanda neane simba mushandisi interfaces. Nenguva isipi, analogue yeVirtual DOM yakaitwa kuti ikwidze basa neUI. Munguva yekugadziriswa kwechiitiko, shanduko dzese dzeDOM dzinochengetwa mundangariro uye, chete kana mabasa ese apera, shanduko dzakaunganidzwa dzinoiswa pamuti weDOM.

Kugadzirisa mutengi wewebhu

Kuita kuti mutengi wedu wewebhu ashande nekukurumidza, tinoedza kushandisa zvakajairwa browser kugona (CSS, nezvimwewo) kusvika pakakwirira. Nekudaro, iyo fomu yekuraira pani (iri paanenge ese mafomu ekushandisa) inopihwa chete uchishandisa browser maturusi, uchishandisa ine simba dhizaini yakavakirwa paCSS.

Nezve 1C web client

Kuedza

Pakuyedza kushanda uye kuita, tinoshandisa chishandiso chemuridzi (chakanyorwa muJava neC ++), pamwe nesutu yemiedzo yakavakirwa pamusoro pe. Selenium.

Chishandiso chedu chepasirese - chinokutendera kuti uedze chero chirongwa chine hwindo, uye nekudaro chakakodzera kuyedza mutengi mutete uye mutengi wewebhu. Chishandiso chinorekodha zviito zvemushandisi akatanga 1C application mhinduro mune script faira. Panguva imwecheteyo, mifananidzo yenzvimbo yekushanda yechidzitiro - zviyero - inorekodhwa. Kana uchitarisa shanduro itsva dzewebhu client, zvinyorwa zvinoridzwa pasina kutora chikamu kwemushandisi. Muzviitiko apo iyo skrini isingaenderane nereferenzi pane chero nhanho, bvunzo inoonekwa yakundikana, mushure mezvo nyanzvi yemhando inoitisa ongororo yekuona kana ichi chiri chikanganiso kana shanduko yakarongwa mumafambiro ehurongwa. Muchiitiko chemaitiro akarongwa, zviyero zvinongotsiviwa nemitsva.

Chishandiso chinoyerawo kuita kwekushandisa nekurongeka kweanosvika makumi maviri neshanu milliseconds. Mune zvimwe zviitiko, tinopenengura zvikamu zvechinyorwa (somuenzaniso, kudzokorora kurongeka kwekupinda kakawanda) kuongorora kushatiswa kwenguva yekuuraya nekufamba kwenguva. Mhedzisiro yezviyero zvese zvinonyorwa mulog kuti iongororwe.

Nezve 1C web client
Yedu yekuyedza chishandiso uye application pasi pekuyedzwa

Chishandiso chedu uye Selenium zvinopindirana; semuenzaniso, kana rimwe bhatani pane imwe yezviratidziro rachinja nzvimbo yaro, Selenium inogona kusateedzera izvi, asi chishandiso chedu chinozoona, nekuti. inoita pixel-by-pixel kuenzanisa kweiyo skrini neyakajairwa. Chishandiso ichi zvakare chinokwanisa kuteedzera matambudziko nekugadzirisa mapindiro kubva kukhibhodi kana mbeva, sezvo izvi ndizvo chaizvo zvazvinoburitsa.

Miedzo pane ese maturusi (edu neSelenium) anomhanyisa akajairwa ebasa mamiriro kubva kune yedu yekushandisa mhinduro. Miedzo inotangwa otomatiki mushure mekuvakwa kwemazuva ese kwe1C: Enterprise platform. Kana zvinyorwa zvichinonoka (zvichienzaniswa neyakapfuura kuvaka), tinoongorora uye kugadzirisa chikonzero chekudzikira. Chiyero chedu chiri nyore - chivakwa chitsva hachifanirwe kushanda zvishoma pane chakapfuura.

Vagadziri vanoshandisa zvishandiso zvakasiyana kuongorora zviitiko zvinononoka; kunyanya kushandiswa Dynatrace AJAX Edition kambani yekugadzira DynaTrace. Marogi ekuitwa kweiyo dambudziko rekushanda pane yakapfuura uye nyowani kuvaka inorekodhwa, ipapo matanda anoongororwa. Panguva imwecheteyo, nguva yekuuraya yekushanda kamwe chete (mumamilliseconds) inogona kunge isiri chinhu chinogadzirisa - maitiro esevhisi akadai sekuunganidza marara anotangwa nguva nenguva mubrowser, anogona kupindirana nenguva yekuitwa kwemabasa uye kukanganisa mufananidzo. Mamwe maparamendi akakodzera munyaya iyi angave nhamba yeJavaScript mirairo yakaitwa, nhamba yeatomu mashandiro paDOM, nezvimwe. Kana nhamba yemirairo / kushanda mune imwe script yakawedzera mune imwe shanduro, izvi zvinenge nguva dzose zvinoreva kudonha kwekuita kunoda kugadziriswa.

Zvakare, chimwe chezvikonzero zvekudonha kwekuita kungave kuti Google Kuvhara Compiler nekuda kwechimwe chikonzero haina kukwanisa kuita inline kutsiva basa (somuenzaniso, nekuti basa rinodzokororwa kana rakaita). Muchiitiko ichi, tinoedza kugadzirisa mamiriro acho nekunyora patsva code code.

Browser extensions

Kana mhinduro yekushandisa ichida kushanda kusiri kuwanikwa muJavaScript, isu tinoshandisa browser ekuwedzera:

Mawedzero edu ane zvikamu zviviri. Chikamu chekutanga ndicho chinonzi browser yekuwedzera (kazhinji edzedzero yeChrome neFirefox yakanyorwa muJavaScript), iyo inodyidzana nechikamu chechipiri - bhinari yekuwedzera iyo inoshandisa mashandiro atinoda. Zvinofanira kutaurwa kuti isu tinonyora 3 shanduro dzemabhinari ekuwedzera - yeWindows, Linux uye MacOS. Iyo bhinari yekuwedzera inopihwa sechikamu che1C:Enterprise chikuva uye iri pane 1C application server. Kana yadaidzwa kekutanga kubva kune mutengi wewebhu, inotorwa kumutengi komputa uye yakaiswa mubrowser.

Kana tichimhanya muSafari, mawedzero edu anoshandisa NPAPI; kana uchimhanya muInternet Explorer, vanoshandisa tekinoroji yeActiveX. Microsoft Edge haisati yatsigira mawedzero, saka mutengi wewebhu mairi anoshanda nezvirambidzo.

Kumwe budiriro

Rimwe remabasa ewebhu mutengi kuvandudza timu ndiko kuwedzera kusimudzira kwekushanda. Kushanda kwemutengi wewebhu kunofanirwa kufanana nekushanda kwemutengi mutete; zvese zvitsva zvinoshanda zvinoitwa panguva imwe chete mune vese vatete uye vewebhu vatengi.

Mamwe mabasa anosanganisira kugadzira zvivakwa, refactoring, kuvandudza mashandiro uye kuvimbika. Semuyenzaniso, imwe yemadhairekitori ndeyekufamba kwakananga kune asynchronous basa modhi. Kumwe kushanda kwewebhu mutengi parizvino kwakavakirwa pane inofananidzwa modhi yekudyidzana neseva. Iyo asynchronous modhi yave kuve yakakosha mumabhurawuza (uye kwete chete mumabhurawuza), uye izvi zvinotimanikidza kugadzirisa mutengi wewebhu nekutsiva mafoni anopindirana neasynchronous (uye kudzoreredza kodhi saizvozvo). Iko kushanduka zvishoma nezvishoma kune asynchronous modhi inotsanangurwa nekudikanwa kwekutsigira yakaburitswa mhinduro uye zvishoma nezvishoma kugadzirisa.

Source: www.habr.com

Voeg