E uiga ile 1C web client

O se tasi o foliga matagofie o le 1C: Tekonolosi pisinisi o le fofo o talosaga, atiina ae i le faʻaaogaina o tekonolosi faʻatautaia, e mafai ona faʻalauiloaina uma i se tagata manifinifi (faʻaaogaina) mo Windows, Linux, MacOS X, ma le avea ma se upega tafaʻilagi mo suʻesuʻega 5 - Chrome, Internet Explorer, Firefox, Safari, Edge, ma nei mea uma e aunoa ma le suia o le code source code. E le gata i lea, i fafo atu o le talosaga i le tagata manifinifi ma i totonu o le browser galuega ma foliga tutusa.
Su'e 10 eseesega (2 ata i lalo o le tipi):

Faamalama manifinifi kalani ile Linux:

E uiga ile 1C web client

Le fa'amalama lava e tasi i le 'upega tafa'ilagi (i le Chrome browser):

E uiga ile 1C web client

Aisea na matou faia ai se 'upega tafaʻilagi? I se faaupuga faanoanoa, ua faatulagaina e le taimi se galuega faapena mo i tatou. O le galue i luga o le Initaneti ua leva ona avea ma mea e manaʻomia muamua mo talosaga faʻapisinisi. Muamua, matou te faʻaopoopoina le tomai e galue ai e ala i le Initaneti mo le matou tagata faʻatauvaʻa (o nisi o matou tagata tauva, i le ala, na tu iina; o isi, i se isi itu, na lafoaia le tagata manifinifi ma faʻatapulaʻaina i latou lava i le faʻatinoina o se upega tafaʻilagi). Na matou filifili e tuʻuina atu ia matou tagata faʻaoga le avanoa e filifili ai le filifiliga a le kalani e sili ona fetaui ma i latou.

E uiga ile 1C web client

O le fa'aopoopoina o agava'a i luga ole laiga i luga ole laiga ole kalani ose galuega tele ma se suiga atoatoa ile fa'ata'ita'iga a le tagata-server. O le fa'atupuina o se 'upega tafa'ilagi o se poloketi fou, e amata mai le sasa.

Fausiaina o le faʻafitauli

O lea la, o manaʻoga o le poloketi: e tatau i le 'upega tafaʻilagi ona faia tutusa ma le tagata manifinifi, e pei o:

  1. Fa'aali fa'aoga fa'aoga
  2. Fa'atino le code client ua tusia ile gagana 1C

O le faʻaoga faʻaoga i le 1C o loʻo faʻamatalaina i se faʻataʻitaʻiga vaʻaia, ae faʻaalia, e aunoa ma le pixel-by-pixel faʻatulagaina o elemene; E tusa ma le tolu taseni ituaiga o elemene faʻaoga o loʻo faʻaaogaina - faʻamau, fanua faʻaoga (tusitusiga, numera, aso / taimi), lisi, laulau, kalafi, ma isi.

O le code Client i le gagana 1C e mafai ona aofia ai telefoni feaveaʻi, galue ma punaoa faʻapitonuʻu (faila, ma isi), lomitusi, ma sili atu.

E fa'aoga uma e le kalani manifinifi (pe a galue i luga ole laiga) ma le kalani ile upegatafa'ilagi le seti tutusa o auaunaga i luga ole laiga e feso'ota'i ai ma le 1C application server. O faʻatinoga a tagata faʻatau, ioe, e ese - o le tagata manifinifi o loʻo tusia i le C ++, o le upega tafaʻilagi o loʻo tusia i le JavaScript.

Se vaega o talafaasolopito

Na amata le poloketi i luga ole laiga ile 2006, ma le au (i le averesi) 5 tagata. I nisi vaega o le poloketi, na aofia ai le au atinaʻe e faʻatino galuega faʻapitoa (pepa pepa, ata, ma isi); e pei o se tulafono, o le au atinaʻe lava ia na faia lenei faʻatinoga i le tagata manifinifi. O na. na toe tusia e le au atinaʻe vaega i le JavaScript na latou faia muamua ile C++.

Mai lava i le amataga, matou te teena le manatu o soʻo se suiga otometi (tusa lava ma se vaega) o le C++ thin client code i le JavaScript web client ona o le malosi o le eseesega o manatu i le va o gagana e lua; na tusia le kalani i luga ole laiga ile JavaScript mai le amataga.

I fa'amatalaga muamua o le poloketi, na fa'aliliu sa'o e le kalani i luga o le upega tafa'ilagi le code client i le gagana 1C na fausia sa'o i le JavaScript. E ese le gaioiga a le tagata manifinifi - o le code i totonu o le gagana 1C ua tuʻufaʻatasia i le bytecode, ona faʻamatalaina lea o lenei bytecode i luga o le kalani. Mulimuli ane, na amata ona faia e le tagata faʻatau i luga o le upega tafaʻilagi le mea lava e tasi - muamua, na maua ai le manuia o le faʻatinoga, ma le lona lua, na mafai ai ona tuʻufaʻatasia le fausaga o tagata manifinifi ma le upega tafaʻilagi.

O le lomiga muamua o le 1C: Enterprise platform ma le upegatafa'ilagi lagolago na tatalaina i le 2009. E 2 su'esu'ega na lagolagoina e le kalani i luga ole laiga - Internet Explorer ma Firefox. O uluai fuafuaga na aofia ai le lagolago mo Opera, ae ona o faafitauli e le mafai ona foia i lena taimi ma le au tapuni tapuni i Opera (e leʻi mafai ona siaki ma le 100% mautinoa ua tapunia le talosaga, ma i le taimi lena e faia ai le faʻagasologa o le motusia mai. le 1C application server) mai nei fuafuaga sa tatau ona lafoai.

Fa'atulagaina o le poloketi

I le aotelega, o le 1C: Enterprise platform e 4 galuega faatino na tusia i le JavaScript:

  1. WebTools - faletusi fefa'asoaa'i o lo'o fa'aogaina e isi galuega (matou te aofia ai fo'i Google Tapuni Faletusi).
  2. Elemene pulea FormattedDocument (fa'atinoina i le JavaScript i le kalani manifinifi ma le kalani i luga ole laiga)
  3. Elemene pulea Fa'atonu (fa'atinoina i le JavaScript i le kalani manifinifi ma le kalani i luga ole laiga)
  4. Upega tafa'ilagi

O le fausaga o poloketi taʻitasi e foliga tutusa ma le fausaga o galuega a Java (poʻo .NET poloketi - poʻo fea lava e latalata); E iai a matou igoa, ma o igoa taʻitasi o loʻo i totonu o se pusa eseese. I totonu o le faila o loʻo i ai faila ma vasega igoa. E tusa ma le 1000 faila i totonu o le upega tafaʻilagi.

I le faʻatulagaina, o le upega tafaʻilagi o loʻo vaevaeina tele i vaega laiti nei:

  • Fa'afoeina le fa'aoga a le tagata o tausia
    • Fa'aoga lautele fa'aoga (fa'atonuga o mea, panels)
    • Fesoʻotaʻiga o fomu faʻatonutonu, e aofia ai, faʻatasi ai ma isi mea, e tusa ma le 30 faʻatonuga (faʻamau, ituaiga eseese o faʻaoga - tusitusiga, numera, aso / taimi, ma isi, laulau, lisi, kalafi, ma isi)

  • Fa'ata'ita'iga fa'ata'ita'iga o lo'o avanoa mo tagata atia'e i luga o le kalani (sili atu i le 400 ituaiga i le aofa'i: fa'ata'ita'iga fa'atautaia fa'ata'ita'iga, fa'asologa o fa'amaumauga o fa'amaumauga, fa'ailoga tulaga, ma isi)
  • Fa'amatala o le gagana 1C ua fausia
  • Fa'aopoopoga ole su'esu'e (fa'aoga mo galuega e le lagolagoina ile JavaScript)
    • Galulue fa'atasi ma fa'amatalaga
    • Galulue ma faila
    • Tekinolosi o vaega i fafo, faʻatagaina i latou e faʻaaogaina i tagata manifinifi ma upega tafaʻilagi

Atina'e Vaega

O le faʻatinoina o mea uma o loʻo i luga i le JavaScript e le faigofie. Masalo o le 1C web client o se tasi o tusi talosaga pito sili ona tele o tagata o lo'o tusia ile JavaScript - e tusa ma le 450.000 laina. Matou te faʻaaogaina ma le faʻaogaina se faʻaogaina o mea i totonu o le upega tafaʻilagi a le tagata faʻatau, lea e faʻafaigofie ai le galue i sea galuega tele.

Ina ia fa'aiti'itia le lapo'a o le fa'ailoga tagata o tausia, na matou fa'aaoga muamua la matou lava obfuscator, ma amata mai i le fa'asologa o le 8.3.6 (Oketopa 2014) na amata ona matou fa'aogaina. Google Tapuni Compiler. Le a'afiaga o le fa'aogaina i fuainumera - le tele o le fa'avaa o le tagata o tausia i luga ole laiga pe a uma ona fa'anenefu:

  • Lava obfuscator – 1556 kb
  • Google Tapuni Compiler - 1073 kb

O le fa'aogaina o le Google Closure Compiler na fesoasoani ia i matou e fa'aleleia atili le fa'atinoga o le 'upega tafa'ilagi i le 30% fa'atusatusa i la matou lava fa'amamafa. E le gata i lea, o le aofaʻi o le manatua na faʻaaogaina e le talosaga ua faʻaititia i le 15-25% (faʻalagolago i le masini).

Google Closure Compiler e lelei tele le faʻaogaina o mea e faʻatatau i mea, o lona uiga lelei mo le upega tafaʻilagi e maualuga tele. Closure Compiler e faia ni nai mea lelei mo i tatou:

  • Su'esu'ega fa'atusa i le tulaga o le fausiaina o galuega (fa'amautinoa tatou te ufiufi le code i fa'amatalaga JSDoc). O le i'uga o le ta'i fa'amau, latalata i le tulaga i le taina i le C++. E fesoasoani lea e pu'e ai se pasene tele o mea sese i le tulaga o le tuufaatasia o galuega.
  • Fa'aiti'itia le lapopoa o le code e ala i le fa'anenefu
  • O le tele o faʻataʻitaʻiga o le code faʻatinoina, mo se faʻataʻitaʻiga, e pei o:
    • suitulaga o galuega i totonu. O le vala'au o se galuega i le JavaScript o se fa'agaioiga taugata tele, ma o le fa'aogaina o le fa'aogaina o auala laiti e fa'aaogaina e fa'avaveina ai le code.
    • Faitauina tumau i taimi fa'aopoopo. Afai e fa'alagolago se fa'aaliga i se tumau, o le a suia i ai le tau moni o le tumau

Matou te fa'aogaina le WebStorm e fai ma si'osi'omaga o le atina'eina o tagata i luga o le initaneti.

Mo su'esu'ega code matou te fa'aaogaina soundQube, lea matou te tu'ufa'atasia ai su'esu'ega static code. I le faʻaaogaina o suʻesuʻega, matou te mataʻituina le faʻaleagaina o le tulaga lelei o le JavaScript source code ma taumafai e taofia.

E uiga ile 1C web client

O a fa'afitauli na/o tatou fo'ia?

I le taimi o le faʻatinoga o le poloketi, na matou feagai ma le tele o faʻafitauli mataʻina e tatau ona matou foia.

Fa'afesuia'i fa'amatalaga ma le 'au'aunaga ma le va o pupuni

E i ai tulaga e mafai ona fa'alavelaveina ai le fa'aogaina o le fa'aogaina o le fa'aogaina. Fa'ailoga i fafo i le code fa'atino a le tagata o tausia i luga o le upega tafa'ilagi, ona o le fa'anenefu, e mafai ona i ai galuega ma igoa fa'amaufa'ailoga e ese mai i latou o lo'o fa'amoemoeina e le tatou tulafono fa'atino. O le tulafono i fafo mo i matou o le:

  • Code e sau mai le 'auʻaunaga i le tulaga o faʻamaumauga faʻamaumauga
  • Fa'ailoga mo se isi fa'amalama talosaga

Ina ia aloese mai le faʻalavelave pe a fegalegaleai ma le 'auʻaunaga, matou te faʻaogaina le @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;
}

Ma ina ia aloese mai le faʻalavelave pe a fegalegaleai ma isi windows, matou te faʻaogaina mea e taʻua o fesoʻotaʻiga auina atu i fafo (interfaces lea e faʻatau atu ai auala uma).

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

Na matou faʻaaogaina le Virtual DOM aʻo leʻi avea ma masani)

E pei o tagata atiae uma o loʻo feagai ma Uepi UI lavelave, na vave ona matou iloa o le DOM e le fetaui lelei i le galulue faʻatasi ma fesoʻotaʻiga faʻaoga malosi. Toeitiiti lava o le taimi lava lena, na faʻatinoina ai se faʻataʻitaʻiga o Virtual DOM e faʻamalieina galuega ma le UI. I le faagasologa o mea na tutupu, o suiga uma o le DOM e teuina i le mafaufau ma, naʻo le maeʻa uma o gaioiga, o suiga faʻaputu e faʻaoga i le DOM tree.

Fa'asilisiliina ole kalani ile upegatafa'ilagi

Ina ia fa'avavevave le galuega a le matou 'upega tafa'ilagi, matou te taumafai e fa'aoga le agava'a su'esu'e masani (CSS, etc.) i le maualuga. O le mea lea, o le faʻatonuga o le fomu (o loʻo i luga o le toetoe o ituaiga uma o le talosaga) e tuʻuina atu faʻapitoa i le faʻaogaina o meafaigaluega suʻesuʻe, faʻaogaina le faʻaogaina o le faʻavae i luga o le CSS.

E uiga ile 1C web client

Suʻega

Mo suʻega faʻatinoga ma faʻatinoga, matou te faʻaogaina se meafaigaluega faʻapitoa (tusia i Java ma C ++), faʻapea foʻi ma se suʻega o suʻega e fausia i luga o le Selenium.

O la matou meafaigaluega e lautele - e mafai ai ona e suʻeina toetoe lava o soʻo se polokalame faʻamalama, ma o lea e talafeagai mo le suʻeina o se tagata manifinifi ma se tagata faʻapipiʻi i luga ole laiga. O loʻo faʻamauina e le meafaigaluega gaioiga a le tagata faʻaoga na faʻalauiloaina le 1C solution solution i totonu o se faila faila. I le taimi lava e tasi, o ata o le vaega galue o le lau - tulaga - o loʻo faamaumauina. A mata'ituina fa'amatalaga fou a le 'upega tafa'ilagi, e ta'alo fa'amaumauga e aunoa ma le auai o tagata. I mataupu e le fetaui le faʻamalama ma le faʻamatalaga i soʻo se laasaga, o le suʻega e manatu ua le manuia, a maeʻa ona faia e se tagata tomai faapitoa se suʻesuʻega e iloa ai pe o se mea sese poʻo se suiga fuafuaina i le amio a le faiga. I tulaga o amioga fuafuaina, o tulaga faatonuina e otometi lava ona suia i tulaga fou.

E fuaina fo'i e le meafaigaluega le fa'atinoga o fa'atinoga ma le sa'o e o'o atu i le 25 milliseconds. I nisi tulaga, matou te faʻapipiʻiina vaega o le tusitusiga (mo se faʻataʻitaʻiga, toe fai le faʻasologa o le faʻasologa o taimi) e iloilo ai le faʻaleagaina o le taimi o le faʻatinoga i le taimi. O fa'ai'uga o fua uma o lo'o fa'amaumauina i totonu o se fa'amaumauga mo au'ili'iliga.

E uiga ile 1C web client
O a matou mea faigaluega suʻega ma faʻaoga i lalo o suʻega

O la matou meafaigaluega ma le Seleni e faʻapena e le tasi le isi; mo se faʻataʻitaʻiga, afai o se ki i luga o se tasi o lau ua suia lona tulaga, e le mafai e Seleni ona siaki lenei mea, ae o le a matauina e le matou meafaigaluega, aua faia se fa'atusatusaga pika-i-pixel o le fa'amalama ma le tulaga masani. E mafai foi e le meafaigaluega ona siaki faʻafitauli i le faʻaogaina o mea mai le piano poʻo le isumu, talu ai o le mea tonu lea e toe gaosia.

O su'ega i mea faigaluega uma e lua (a matou ma Seleni) e fa'atautaia ai fa'ata'ita'iga masani o galuega mai a matou fofo fa'aoga. E otometi lava ona fa'alauiloa su'ega pe a mae'a le fa'avaeina o le 1C: Enterprise platform i aso uma. Afai e fa'agesegese fa'amaumauga (fa'atusatusa i le fale muamua), matou te su'esu'e ma fo'ia le mafua'aga o le fa'agesegese. E faigofie la matou fa'ata'ita'iga - o le fale fou e le tatau ona fa'agesegese nai lo le muamua.

E fa'aogaina e le au atina'e meafaigaluega eseese e su'esu'e ai fa'alavelave fa'agesegese; fa'aaogaina tele Dynatrace AJAX lomiga kamupani gaosiga DynaTrace. O ogalaau o le faʻatinoina o le faʻafitauli faʻafitauli i luga o fale muamua ma fou e faʻamaumau, ona suʻeina lea o ogalaau. I le taimi lava e tasi, o le taimi o le faʻatinoina o gaioiga e tasi (i milliseconds) atonu e le o se mea taua - o faiga faʻapitoa e pei o le aoina o lapisi e faʻalauiloa i lea taimi ma lea taimi i totonu o le masini, e mafai ona latou faʻapipiʻi ma le taimi o le faʻatinoina o galuega ma faʻasese le ata. E sili atu le talafeagai i lenei tulaga o le numera o faʻatonuga JavaScript na faʻatinoina, le numera o gaioiga atomic i le DOM, ma isi. Afai o le numera o faʻatonuga / faʻagaioiga i le tusitusiga lava e tasi ua faʻateleina i se faʻamatalaga fou, e toetoe lava o taimi uma o lona uiga o se pa'ū i le faʻatinoga e manaʻomia ona faʻasaʻo.

E le gata i lea, o se tasi o mafuaʻaga o le pa'ū o le faʻatinoga atonu o le Google Closure Compiler mo nisi mafuaʻaga na le mafai ai ona faʻatinoina le faʻaogaina o le galuega (mo se faʻataʻitaʻiga, ona o le galuega e toe faʻafoʻi pe faʻapitoa). I lenei tulaga, matou te taumafai e faʻasaʻo le tulaga e ala i le toe tusia o le code source.

Fa'aopoopoga ole su'esu'e

A mana'omia e se vaifofo talosaga ni galuega e le o maua i le JavaScript, matou te fa'aogaina fa'aopoopoga o su'esu'ega:

  • mo le galue i faila
  • mo le galulue faatasi ma cryptography
  • galulue faatasi vaega i fafo

O a matou faʻaopoopoga e aofia ai vaega e lua. O le vaega muamua o le mea lea e taʻua o le faʻaopoopoga o suʻesuʻega (e masani lava o faʻaopoopoga mo Chrome ma Firefox e tusia i le JavaScript), lea e fegalegaleai ma le vaega lona lua - o se faʻaopoopoga binary e faʻatino ai galuega tatou te manaʻomia. E tatau ona taʻua e matou te tusia 3 lomiga o faʻaopoopoga binary - mo Windows, Linux ma MacOS. O le faʻaopoopoga binary o loʻo tuʻuina atu o se vaega o le 1C: Enterprise platform ma o loʻo tu i luga o le 1C application server. A vala'au mo le taimi muamua mai se kalani i luga ole laiga, e la'u mai ile komepiuta a le kalani ma fa'apipi'i ile su'esu'ega.

Pe a tamoʻe i Safari, o matou faʻaopoopoga e faʻaogaina le NPAPI; pe a tamoʻe i Internet Explorer, latou te faʻaogaina le tekonolosi ActiveX. Microsoft Edge e le'i lagolagoina fa'aopoopoga, o lea o lo'o galue ai le 'upega tafa'ilagi o lo'o iai fa'atapula'aina.

Atina'e atili

O se tasi o galuega mo le au atina'e o tagata o le upega tafaʻilagi o le faʻalauteleina lea o galuega. E tatau ona tutusa le fa'atinoga o le kalani i luga o le upega tafa'ilagi ma le fa'atinoga o le kalani manifinifi; o galuega fou uma e fa'atinoina i le taimi e tasi i tagata manifinifi ma le upega tafa'ilagi.

O isi galuega e aofia ai le atinaʻeina o le fausaga, toe faʻaleleia, faʻaleleia le faʻatinoga ma le faʻamaoni. Mo se faʻataʻitaʻiga, o se tasi o faʻatonuga o le faʻagasolo atili atu i se faʻataʻitaʻiga o galuega e le faʻaogaina. O nisi o galuega a le 'upega tafaʻilagi o loʻo fausia nei i luga o se faʻataʻitaʻiga tutusa o fegalegaleaiga ma le server. O le faʻataʻitaʻiga asynchronous ua amata nei ona sili atu ona talafeagai i suʻesuʻega (ma e le gata i suʻesuʻega), ma o lenei mea e faʻamalosia ai i matou e sui le tagata faʻatau i luga o le upega tafaʻilagi e ala i le suia o telefoni faʻatasi ma asynchronous (ma refactoring le code e tusa ai). O le suiga malie i se fa'ata'ita'iga asynchronous o lo'o fa'amatalaina e le mana'oga e lagolago fofo fa'amatu'u ma a latou fetuutuunaiga malie.

puna: www.habr.com

Faaopoopo i ai se faamatalaga