1C:Enterprise టెక్నాలజీ యొక్క మంచి లక్షణాలలో ఒకటి, నిర్వహించబడే ఫారమ్ల సాంకేతికతను ఉపయోగించి అభివృద్ధి చేయబడిన అప్లికేషన్ సొల్యూషన్, Windows, Linux, MacOS X కోసం సన్నని (ఎక్జిక్యూటబుల్) క్లయింట్లో మరియు 5 బ్రౌజర్ల కోసం వెబ్ క్లయింట్గా రెండింటినీ ప్రారంభించవచ్చు - అప్లికేషన్ సోర్స్ కోడ్ను మార్చకుండా Chrome, Internet Explorer, Firefox, Safari, Edge మరియు ఇవన్నీ. అంతేకాకుండా, బాహ్యంగా సన్నని క్లయింట్లో మరియు బ్రౌజర్లో అప్లికేషన్ పని చేస్తుంది మరియు దాదాపు ఒకేలా కనిపిస్తుంది.
10 తేడాలను కనుగొనండి (కట్ కింద 2 చిత్రాలు):
Linuxలో సన్నని క్లయింట్ విండో:
వెబ్ క్లయింట్లో అదే విండో (Chrome బ్రౌజర్లో):
మేము వెబ్ క్లయింట్ను ఎందుకు తయారు చేసాము? కాస్త దయనీయంగా చెప్పాలంటే, కాలం మనకు అలాంటి పనిని పెట్టింది. వ్యాపార అనువర్తనాలకు ఇంటర్నెట్లో పని చేయడం చాలా కాలంగా అవసరం. మొదట, మేము మా సన్నని క్లయింట్ కోసం ఇంటర్నెట్ ద్వారా పని చేసే సామర్థ్యాన్ని జోడించాము (మా పోటీదారులలో కొందరు, దీనితో ఆగిపోయారు; ఇతరులు, దీనికి విరుద్ధంగా, సన్నని క్లయింట్ను విడిచిపెట్టి, వెబ్ క్లయింట్ను అమలు చేయడానికి తమను తాము పరిమితం చేసుకున్నారు). మా వినియోగదారులకు ఉత్తమంగా సరిపోయే క్లయింట్ ఎంపికను ఎంచుకునే అవకాశాన్ని ఇవ్వాలని మేము నిర్ణయించుకున్నాము.
థిన్ క్లయింట్కి వెబ్ ఆధారిత సామర్థ్యాలను జోడించడం అనేది క్లయింట్-సర్వర్ ఆర్కిటెక్చర్లో పూర్తి మార్పుతో పెద్ద ప్రాజెక్ట్. వెబ్ క్లయింట్ను సృష్టించడం అనేది పూర్తిగా కొత్త ప్రాజెక్ట్, ఇది మొదటి నుండి ప్రారంభమవుతుంది.
సమస్య యొక్క ప్రకటన
కాబట్టి, ప్రాజెక్ట్ అవసరాలు: వెబ్ క్లయింట్ తప్పనిసరిగా సన్నని క్లయింట్ వలెనే చేయాలి, అవి:
వినియోగదారు ఇంటర్ఫేస్ని ప్రదర్శించండి
1C భాషలో వ్రాసిన క్లయింట్ కోడ్ని అమలు చేయండి
1Cలోని వినియోగదారు ఇంటర్ఫేస్ విజువల్ ఎడిటర్లో వివరించబడింది, కానీ ప్రకటనాత్మకంగా, మూలకాల యొక్క పిక్సెల్-బై-పిక్సెల్ అమరిక లేకుండా; దాదాపు మూడు డజన్ల రకాల ఇంటర్ఫేస్ మూలకాలు ఉపయోగించబడతాయి - బటన్లు, ఇన్పుట్ ఫీల్డ్లు (టెక్స్ట్, న్యూమరిక్, తేదీ/సమయం), జాబితాలు, పట్టికలు, గ్రాఫ్లు మొదలైనవి.
1C భాషలోని క్లయింట్ కోడ్ సర్వర్ కాల్లను కలిగి ఉంటుంది, స్థానిక వనరులతో పని చేస్తుంది (ఫైల్స్, మొదలైనవి), ప్రింటింగ్ మరియు మరిన్ని.
థిన్ క్లయింట్ (వెబ్ ద్వారా పని చేస్తున్నప్పుడు) మరియు వెబ్ క్లయింట్ రెండూ 1C అప్లికేషన్ సర్వర్తో కమ్యూనికేట్ చేయడానికి ఒకే రకమైన వెబ్ సేవలను ఉపయోగిస్తాయి. క్లయింట్ అమలులు భిన్నంగా ఉంటాయి - సన్నని క్లయింట్ C++లో వ్రాయబడింది, వెబ్ క్లయింట్ జావాస్క్రిప్ట్లో వ్రాయబడింది.
ఒక బిట్ చరిత్ర
వెబ్ క్లయింట్ ప్రాజెక్ట్ 2006లో (సగటున) 5 మందితో కూడిన బృందంతో ప్రారంభమైంది. ప్రాజెక్ట్ యొక్క నిర్దిష్ట దశలలో, డెవలపర్లు నిర్దిష్ట కార్యాచరణను (స్ప్రెడ్షీట్ డాక్యుమెంట్, రేఖాచిత్రాలు, మొదలైనవి) అమలు చేయడానికి పాలుపంచుకున్నారు; నియమం ప్రకారం, సన్నని క్లయింట్లో ఈ కార్యాచరణను చేసిన అదే డెవలపర్లు. ఆ. డెవలపర్లు గతంలో C++లో సృష్టించిన జావాస్క్రిప్ట్లోని భాగాలను తిరిగి వ్రాసారు.
రెండు భాషల మధ్య బలమైన సంభావిత వ్యత్యాసాల కారణంగా C++ థిన్ క్లయింట్ కోడ్ను JavaScript వెబ్ క్లయింట్గా మార్చే ఆలోచనను మేము మొదటి నుండి తిరస్కరించాము; వెబ్ క్లయింట్ మొదటి నుండి జావాస్క్రిప్ట్లో వ్రాయబడింది.
ప్రాజెక్ట్ యొక్క మొదటి పునరావృతాలలో, వెబ్ క్లయింట్ అంతర్నిర్మిత 1C భాషలోని క్లయింట్ కోడ్ను నేరుగా జావాస్క్రిప్ట్లోకి మార్చింది. సన్నని క్లయింట్ భిన్నంగా పనిచేస్తుంది - అంతర్నిర్మిత 1C భాషలోని కోడ్ బైట్కోడ్గా కంపైల్ చేయబడుతుంది, ఆపై ఈ బైట్కోడ్ క్లయింట్పై వివరించబడుతుంది. తదనంతరం, వెబ్ క్లయింట్ అదే పని చేయడం ప్రారంభించింది - మొదటిది, ఇది పనితీరు లాభాన్ని ఇచ్చింది మరియు రెండవది, సన్నని మరియు వెబ్ క్లయింట్ల నిర్మాణాన్ని ఏకీకృతం చేయడం సాధ్యపడింది.
వెబ్ క్లయింట్ మద్దతుతో 1C: Enterprise ప్లాట్ఫారమ్ యొక్క మొదటి వెర్షన్ 2009లో విడుదల చేయబడింది. ఆ సమయంలో వెబ్ క్లయింట్ 2 బ్రౌజర్లకు మద్దతు ఇచ్చింది - Internet Explorer మరియు Firefox. ఒరిజినల్ ప్లాన్లలో Operaకి మద్దతు ఉంది, అయితే Operaలో అప్లికేషన్ క్లోజింగ్ హ్యాండ్లర్లతో ఆ సమయంలో అధిగమించలేని సమస్యల కారణంగా (అప్లికేషన్ మూసివేయబడుతుందని 100% ఖచ్చితంగా ట్రాక్ చేయడం సాధ్యం కాదు మరియు ఆ సమయంలో దీని నుండి డిస్కనెక్ట్ విధానాన్ని నిర్వహించండి 1C అప్లికేషన్ సర్వర్) ఈ ప్లాన్ల నుండి వదిలివేయవలసి వచ్చింది.
ప్రాజెక్ట్ నిర్మాణం
మొత్తంగా, 1C:Enterprise ప్లాట్ఫారమ్లో జావాస్క్రిప్ట్లో వ్రాయబడిన 4 ప్రాజెక్ట్లు ఉన్నాయి:
WebTools – ఇతర ప్రాజెక్ట్లు ఉపయోగించే భాగస్వామ్య లైబ్రరీలు (మేము కూడా చేర్చుతాము Google మూసివేత లైబ్రరీ).
నియంత్రణ మూలకం ఫార్మాట్ చేసిన పత్రం (సన్నని క్లయింట్ మరియు వెబ్ క్లయింట్ రెండింటిలోనూ జావాస్క్రిప్ట్లో అమలు చేయబడింది)
నియంత్రణ మూలకం షెడ్యూలర్ (సన్నని క్లయింట్ మరియు వెబ్ క్లయింట్ రెండింటిలోనూ జావాస్క్రిప్ట్లో అమలు చేయబడింది)
వెబ్ క్లయింట్
ప్రతి ప్రాజెక్ట్ యొక్క నిర్మాణం జావా ప్రాజెక్ట్ల నిర్మాణాన్ని పోలి ఉంటుంది (లేదా .NET ప్రాజెక్ట్లు - ఏది దగ్గరగా ఉంటే అది); మనకు నేమ్స్పేస్లు ఉన్నాయి మరియు ప్రతి నేమ్స్పేస్ ప్రత్యేక ఫోల్డర్లో ఉంటుంది. ఫోల్డర్ లోపల ఫైల్లు మరియు నేమ్స్పేస్ తరగతులు ఉన్నాయి. వెబ్ క్లయింట్ ప్రాజెక్ట్లో దాదాపు 1000 ఫైల్లు ఉన్నాయి.
నిర్మాణాత్మకంగా, వెబ్ క్లయింట్ ఎక్కువగా క్రింది ఉపవ్యవస్థలుగా విభజించబడింది:
నిర్వహించబడే క్లయింట్ అప్లికేషన్ ఇంటర్ఫేస్
సాధారణ అప్లికేషన్ ఇంటర్ఫేస్ (సిస్టమ్ మెనులు, ప్యానెల్లు)
నిర్వహించబడే ఫారమ్ల ఇంటర్ఫేస్, ఇతర విషయాలతోపాటు, దాదాపు 30 నియంత్రణలు (బటన్లు, వివిధ రకాల ఇన్పుట్ ఫీల్డ్లు - టెక్స్ట్, సంఖ్యా, తేదీ/సమయం మొదలైనవి, పట్టికలు, జాబితాలు, గ్రాఫ్లు మొదలైనవి)
క్లయింట్లో డెవలపర్లకు అందుబాటులో ఉన్న ఆబ్జెక్ట్ మోడల్ (మొత్తం 400 కంటే ఎక్కువ రకాలు: నిర్వహించబడే ఇంటర్ఫేస్ ఆబ్జెక్ట్ మోడల్, డేటా లేఅవుట్ సెట్టింగ్లు, షరతులతో కూడిన స్టైలింగ్ మొదలైనవి)
అంతర్నిర్మిత 1C భాష యొక్క వ్యాఖ్యాత
బ్రౌజర్ పొడిగింపులు (జావాస్క్రిప్ట్లో మద్దతు లేని కార్యాచరణ కోసం ఉపయోగించబడుతుంది)
క్రిప్టోగ్రఫీతో పని చేస్తోంది
ఫైళ్ళతో పని చేస్తోంది
బాహ్య భాగాల సాంకేతికత, వాటిని సన్నని మరియు వెబ్ క్లయింట్లలో ఉపయోగించడానికి అనుమతిస్తుంది
అభివృద్ధి లక్షణాలు
పైన పేర్కొన్నవన్నీ జావాస్క్రిప్ట్లో అమలు చేయడం అంత సులభం కాదు. బహుశా 1C వెబ్ క్లయింట్ జావాస్క్రిప్ట్లో వ్రాయబడిన అతిపెద్ద క్లయింట్-సైడ్ అప్లికేషన్లలో ఒకటి - దాదాపు 450.000 లైన్లు. మేము వెబ్ క్లయింట్ కోడ్లో ఆబ్జెక్ట్-ఓరియెంటెడ్ విధానాన్ని చురుకుగా ఉపయోగిస్తాము, ఇది ఇంత పెద్ద ప్రాజెక్ట్తో పని చేయడాన్ని సులభతరం చేస్తుంది.
క్లయింట్ కోడ్ పరిమాణాన్ని తగ్గించడానికి, మేము మొదట మా స్వంత అబ్ఫ్యూస్కేటర్ని ఉపయోగించాము మరియు ప్లాట్ఫారమ్ వెర్షన్ 8.3.6 (అక్టోబర్ 2014)తో ప్రారంభించాము Google క్లోజర్ కంపైలర్. సంఖ్యలలో ఉపయోగం యొక్క ప్రభావం - అస్పష్టత తర్వాత వెబ్ క్లయింట్ ఫ్రేమ్వర్క్ పరిమాణం:
స్వంత అబ్ఫ్యూస్కేటర్ - 1556 kb
Google క్లోజర్ కంపైలర్ – 1073 kb
Google క్లోజర్ కంపైలర్ని ఉపయోగించడం వల్ల వెబ్ క్లయింట్ పనితీరును మా స్వంత అబ్ఫస్కేటర్తో పోల్చితే 30% మెరుగుపరుచుకోవడంలో మాకు సహాయపడింది. అదనంగా, అప్లికేషన్ ద్వారా వినియోగించబడే మెమరీ మొత్తం 15-25% తగ్గింది (బ్రౌజర్ ఆధారంగా).
Google క్లోజర్ కంపైలర్ ఆబ్జెక్ట్-ఓరియెంటెడ్ కోడ్తో బాగా పని చేస్తుంది, కాబట్టి వెబ్ క్లయింట్ కోసం దాని సామర్థ్యం వీలైనంత ఎక్కువగా ఉంటుంది. క్లోజర్ కంపైలర్ మాకు కొన్ని మంచి పనులను చేస్తుంది:
ప్రాజెక్ట్ బిల్డ్ దశలో స్టాటిక్ టైప్ చెకింగ్ (మేము JSDoc ఉల్లేఖనాలతో కోడ్ను కవర్ చేసినట్లు నిర్ధారిస్తుంది). ఫలితం స్టాటిక్ టైపింగ్, C++ టైప్ చేయడానికి చాలా దగ్గరగా ఉంటుంది. ప్రాజెక్ట్ కంపైలేషన్ దశలో చాలా ఎక్కువ శాతం లోపాలను పట్టుకోవడానికి ఇది సహాయపడుతుంది.
అస్పష్టత ద్వారా కోడ్ పరిమాణాన్ని తగ్గించడం
అమలు చేయబడిన కోడ్ యొక్క అనేక ఆప్టిమైజేషన్లు, ఉదాహరణకు, వంటివి:
ఇన్లైన్ ఫంక్షన్ ప్రత్యామ్నాయాలు. జావాస్క్రిప్ట్లో ఫంక్షన్ను కాల్ చేయడం చాలా ఖరీదైన ఆపరేషన్, మరియు తరచుగా ఉపయోగించే చిన్న పద్ధతుల యొక్క ఇన్లైన్ ప్రత్యామ్నాయాలు గణనీయంగా కోడ్ను వేగవంతం చేస్తాయి.
కంపైల్ సమయంలో స్థిరాంకాలను లెక్కించడం. వ్యక్తీకరణ స్థిరాంకంపై ఆధారపడి ఉంటే, స్థిరాంకం యొక్క వాస్తవ విలువ దానిలో భర్తీ చేయబడుతుంది
మేము WebStormని మా వెబ్ క్లయింట్ అభివృద్ధి వాతావరణంగా ఉపయోగిస్తాము.
కోడ్ విశ్లేషణ కోసం మేము ఉపయోగిస్తాము సోనార్ క్యూబ్, ఇక్కడ మేము స్టాటిక్ కోడ్ ఎనలైజర్లను ఏకీకృతం చేస్తాము. ఎనలైజర్లను ఉపయోగించి, మేము జావాస్క్రిప్ట్ సోర్స్ కోడ్ నాణ్యత క్షీణతను పర్యవేక్షిస్తాము మరియు దానిని నిరోధించడానికి ప్రయత్నిస్తాము.
మేము ఏ సమస్యలను చేసాము/పరిష్కరిస్తున్నాము?
ప్రాజెక్ట్ అమలు సమయంలో, మేము పరిష్కరించాల్సిన అనేక ఆసక్తికరమైన సమస్యలను ఎదుర్కొన్నాము.
సర్వర్తో మరియు విండోల మధ్య డేటాను మార్పిడి చేయండి
సోర్స్ కోడ్ యొక్క అస్పష్టత సిస్టమ్ యొక్క ఆపరేషన్లో జోక్యం చేసుకునే పరిస్థితులు ఉన్నాయి. వెబ్ క్లయింట్ యొక్క ఎక్జిక్యూటబుల్ కోడ్కు వెలుపలి కోడ్, అస్పష్టత కారణంగా, మా ఎక్జిక్యూటబుల్ కోడ్ ఆశించే వాటికి భిన్నంగా ఫంక్షన్ మరియు పారామీటర్ పేర్లను కలిగి ఉండవచ్చు. మాకు బాహ్య కోడ్:
డేటా నిర్మాణాల రూపంలో సర్వర్ నుండి కోడ్ వస్తుంది
మరొక అప్లికేషన్ విండో కోసం కోడ్
సర్వర్తో పరస్పర చర్య చేస్తున్నప్పుడు అస్పష్టతను నివారించడానికి, మేము @expose ట్యాగ్ని ఉపయోగిస్తాము:
మరియు ఇతర విండోలతో పరస్పర చర్య చేస్తున్నప్పుడు అస్పష్టతను నివారించడానికి, మేము ఎగుమతి చేయబడిన ఇంటర్ఫేస్లు అని పిలవబడే వాటిని ఉపయోగిస్తాము (అన్ని పద్ధతులు ఎగుమతి చేయబడిన ఇంటర్ఫేస్లు).
/**
* Экспортируемый интерфейс контрола 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 (){}
మేము వర్చువల్ DOMని ప్రధాన స్రవంతిలోకి మార్చడానికి ముందు ఉపయోగించాము)
సంక్లిష్టమైన వెబ్ UIలతో వ్యవహరించే డెవలపర్లందరిలాగే, డైనమిక్ యూజర్ ఇంటర్ఫేస్లతో పనిచేయడానికి DOM సరిగా సరిపోదని మేము త్వరగా గ్రహించాము. దాదాపు వెంటనే, UIతో పనిని ఆప్టిమైజ్ చేయడానికి వర్చువల్ DOM యొక్క అనలాగ్ అమలు చేయబడింది. ఈవెంట్ ప్రాసెసింగ్ సమయంలో, అన్ని DOM మార్పులు మెమరీలో నిల్వ చేయబడతాయి మరియు అన్ని కార్యకలాపాలు పూర్తయినప్పుడు మాత్రమే, సేకరించబడిన మార్పులు DOM ట్రీకి వర్తింపజేయబడతాయి.
వెబ్ క్లయింట్ని ఆప్టిమైజ్ చేయడం
మా వెబ్ క్లయింట్ వేగంగా పని చేయడానికి, మేము ప్రామాణిక బ్రౌజర్ సామర్థ్యాలను (CSS, మొదలైనవి) గరిష్టంగా ఉపయోగించడానికి ప్రయత్నిస్తాము. అందువలన, ఫారమ్ కమాండ్ ప్యానెల్ (అప్లికేషన్ యొక్క దాదాపు ప్రతి ఫారమ్లో ఉంది) ప్రత్యేకంగా CSS ఆధారంగా డైనమిక్ లేఅవుట్ని ఉపయోగించి బ్రౌజర్ సాధనాలను ఉపయోగించి రెండర్ చేయబడుతుంది.
పరీక్ష
ఫంక్షనల్ మరియు పనితీరు పరీక్ష కోసం, మేము యాజమాన్య సాధనాన్ని (జావా మరియు C++లో వ్రాయబడింది), అలాగే పైన నిర్మించిన పరీక్షల సూట్ని ఉపయోగిస్తాము సెలీనియం.
మా సాధనం సార్వత్రికమైనది - ఇది దాదాపు ఏదైనా విండోడ్ ప్రోగ్రామ్ను పరీక్షించడానికి మిమ్మల్ని అనుమతిస్తుంది మరియు అందువల్ల సన్నని క్లయింట్ మరియు వెబ్ క్లయింట్ రెండింటినీ పరీక్షించడానికి అనుకూలంగా ఉంటుంది. 1C అప్లికేషన్ సొల్యూషన్ను స్క్రిప్ట్ ఫైల్లోకి ప్రారంభించిన వినియోగదారు చర్యలను సాధనం రికార్డ్ చేస్తుంది. అదే సమయంలో, స్క్రీన్ యొక్క పని ప్రాంతం యొక్క చిత్రాలు - ప్రమాణాలు - రికార్డ్ చేయబడతాయి. వెబ్ క్లయింట్ యొక్క కొత్త సంస్కరణలను పర్యవేక్షిస్తున్నప్పుడు, వినియోగదారు భాగస్వామ్యం లేకుండా స్క్రిప్ట్లు ప్లే చేయబడతాయి. స్క్రీన్షాట్ ఏ దశలోనూ రిఫరెన్స్తో సరిపోలని సందర్భాల్లో, పరీక్ష విఫలమైనట్లు పరిగణించబడుతుంది, ఆ తర్వాత నాణ్యమైన నిపుణుడు ఇది లోపమా లేదా సిస్టమ్ ప్రవర్తనలో ప్రణాళికాబద్ధమైన మార్పు కాదా అని నిర్ధారించడానికి విచారణను నిర్వహిస్తారు. ప్రణాళికాబద్ధమైన ప్రవర్తన విషయంలో, ప్రమాణాలు స్వయంచాలకంగా కొత్త వాటితో భర్తీ చేయబడతాయి.
సాధనం అప్లికేషన్ పనితీరును 25 మిల్లీసెకన్ల వరకు ఖచ్చితత్వంతో కొలుస్తుంది. కొన్ని సందర్భాల్లో, కాలక్రమేణా అమలు సమయం యొక్క క్షీణతను విశ్లేషించడానికి మేము స్క్రిప్ట్లోని భాగాలను లూప్ చేస్తాము (ఉదాహరణకు, ఆర్డర్ ఎంట్రీని చాలాసార్లు పునరావృతం చేయడం). అన్ని కొలతల ఫలితాలు విశ్లేషణ కోసం లాగ్లో నమోదు చేయబడ్డాయి.
పరీక్షలో ఉన్న మా పరీక్ష సాధనం మరియు అప్లికేషన్
మా సాధనం మరియు సెలీనియం ఒకదానికొకటి పూర్తి చేస్తాయి; ఉదాహరణకు, స్క్రీన్లలో ఒకదానిపై ఏదైనా బటన్ దాని స్థానాన్ని మార్చినట్లయితే, సెలీనియం దీనిని ట్రాక్ చేయకపోవచ్చు, కానీ మా సాధనం గమనించవచ్చు, ఎందుకంటే స్క్రీన్షాట్ని స్టాండర్డ్తో పిక్సెల్-బై-పిక్సెల్ పోలికను చేస్తుంది. సాధనం కీబోర్డ్ లేదా మౌస్ నుండి ప్రాసెసింగ్ ఇన్పుట్తో సమస్యలను ట్రాక్ చేయగలదు, ఎందుకంటే ఇది సరిగ్గా పునరుత్పత్తి చేస్తుంది.
రెండు సాధనాలపై పరీక్షలు (మాది మరియు సెలీనియం) మా అప్లికేషన్ సొల్యూషన్ల నుండి సాధారణ పని దృశ్యాలను అమలు చేస్తాయి. 1C:Enterprise ప్లాట్ఫారమ్ యొక్క రోజువారీ నిర్మాణం తర్వాత పరీక్షలు స్వయంచాలకంగా ప్రారంభించబడతాయి. స్క్రిప్ట్లు నెమ్మదిగా ఉంటే (మునుపటి బిల్డ్తో పోలిస్తే), మేము మందగించడానికి గల కారణాన్ని పరిశోధించి పరిష్కరిస్తాము. మా ప్రమాణం చాలా సులభం - కొత్త బిల్డ్ మునుపటి కంటే నెమ్మదిగా పని చేయకూడదు.
డెవలపర్లు స్లోడౌన్ సంఘటనలను పరిశోధించడానికి వివిధ సాధనాలను ఉపయోగిస్తారు; ప్రధానంగా ఉపయోగిస్తారు Dynatrace AJAX ఎడిషన్ కంపెనీ ఉత్పత్తి డైనాట్రేస్. మునుపటి మరియు కొత్త బిల్డ్లపై సమస్యాత్మక ఆపరేషన్ అమలు యొక్క లాగ్లు రికార్డ్ చేయబడతాయి, ఆపై లాగ్లు విశ్లేషించబడతాయి. అదే సమయంలో, ఒకే ఆపరేషన్ల అమలు సమయం (మిల్లీసెకన్లలో) నిర్ణయాత్మక అంశం కాకపోవచ్చు - చెత్త సేకరణ వంటి సేవా ప్రక్రియలు కాలానుగుణంగా బ్రౌజర్లో ప్రారంభించబడతాయి, అవి ఫంక్షన్ల అమలు సమయంతో అతివ్యాప్తి చెందుతాయి మరియు చిత్రాన్ని వక్రీకరించవచ్చు. ఈ సందర్భంలో మరింత సంబంధిత పారామితులు అమలు చేయబడిన JavaScript సూచనల సంఖ్య, DOMలో అటామిక్ ఆపరేషన్ల సంఖ్య మొదలైనవి. కొత్త వెర్షన్లో ఒకే స్క్రిప్ట్లో సూచనలు/ఆపరేషన్ల సంఖ్య పెరిగితే, దాదాపు ఎల్లప్పుడూ పనితీరులో తగ్గుదల అని అర్థం, అది సరిదిద్దాలి.
అలాగే, పనితీరులో తగ్గుదలకి ఒక కారణం ఏమిటంటే, కొన్ని కారణాల వల్ల Google క్లోజర్ కంపైలర్ ఫంక్షన్ యొక్క ఇన్లైన్ ప్రత్యామ్నాయాన్ని నిర్వహించలేకపోయింది (ఉదాహరణకు, ఫంక్షన్ పునరావృతం లేదా వర్చువల్). ఈ సందర్భంలో, మేము సోర్స్ కోడ్ను తిరిగి వ్రాయడం ద్వారా పరిస్థితిని సరిచేయడానికి ప్రయత్నిస్తాము.
బ్రౌజర్ పొడిగింపులు
అప్లికేషన్ పరిష్కారానికి JavaScriptలో అందుబాటులో లేని కార్యాచరణ అవసరమైనప్పుడు, మేము బ్రౌజర్ పొడిగింపులను ఉపయోగిస్తాము:
మా పొడిగింపులు రెండు భాగాలను కలిగి ఉంటాయి. మొదటి భాగాన్ని బ్రౌజర్ పొడిగింపు అని పిలుస్తారు (సాధారణంగా జావాస్క్రిప్ట్లో వ్రాయబడిన Chrome మరియు Firefox కోసం పొడిగింపులు), ఇది రెండవ భాగంతో సంకర్షణ చెందుతుంది - మనకు అవసరమైన కార్యాచరణను అమలు చేసే బైనరీ పొడిగింపు. Windows, Linux మరియు MacOS కోసం - మేము బైనరీ పొడిగింపుల యొక్క 3 వెర్షన్లను వ్రాస్తామని పేర్కొనాలి. బైనరీ పొడిగింపు 1C:Enterprise ప్లాట్ఫారమ్లో భాగంగా సరఫరా చేయబడింది మరియు 1C అప్లికేషన్ సర్వర్లో ఉంది. మొదటిసారి వెబ్ క్లయింట్ నుండి కాల్ చేసినప్పుడు, అది క్లయింట్ కంప్యూటర్కు డౌన్లోడ్ చేయబడుతుంది మరియు బ్రౌజర్లో ఇన్స్టాల్ చేయబడుతుంది.
Safariలో నడుస్తున్నప్పుడు, మా పొడిగింపులు NPAPIని ఉపయోగిస్తాయి; ఇంటర్నెట్ ఎక్స్ప్లోరర్లో నడుస్తున్నప్పుడు, అవి ActiveX సాంకేతికతను ఉపయోగిస్తాయి. మైక్రోసాఫ్ట్ ఎడ్జ్ పొడిగింపులకు ఇంకా మద్దతు లేదు, కాబట్టి దానిలోని వెబ్ క్లయింట్ పరిమితులతో పని చేస్తుంది.
మరింత అభివృద్ధి
వెబ్ క్లయింట్ డెవలప్మెంట్ టీమ్కి సంబంధించిన టాస్క్లలో ఒకటి ఫంక్షనాలిటీ యొక్క మరింత అభివృద్ధి. వెబ్ క్లయింట్ యొక్క కార్యాచరణ సన్నని క్లయింట్ యొక్క కార్యాచరణకు సమానంగా ఉండాలి; అన్ని కొత్త కార్యాచరణలు సన్నని మరియు వెబ్ క్లయింట్లలో ఏకకాలంలో అమలు చేయబడతాయి.
నిర్మాణాన్ని అభివృద్ధి చేయడం, రీఫ్యాక్టరింగ్ చేయడం, పనితీరు మరియు విశ్వసనీయతను మెరుగుపరచడం వంటి ఇతర పనులు ఉన్నాయి. ఉదాహరణకు, దిశలలో ఒకటి అసమకాలిక పని నమూనా వైపు మరింత కదలిక. వెబ్ క్లయింట్ యొక్క కొంత కార్యాచరణ ప్రస్తుతం సర్వర్తో పరస్పర చర్య యొక్క సింక్రోనస్ మోడల్పై నిర్మించబడింది. అసమకాలిక మోడల్ ఇప్పుడు బ్రౌజర్లలో (మరియు బ్రౌజర్లలో మాత్రమే కాకుండా) మరింత సందర్భోచితంగా మారుతోంది మరియు ఇది సింక్రోనస్ కాల్లను అసమకాలిక వాటితో భర్తీ చేయడం ద్వారా (మరియు తదనుగుణంగా కోడ్ను రీఫ్యాక్టరింగ్ చేయడం) ద్వారా వెబ్ క్లయింట్ను సవరించేలా చేస్తుంది. అసమకాలిక నమూనాకు క్రమంగా పరివర్తన అనేది విడుదలైన పరిష్కారాలకు మద్దతు ఇవ్వాల్సిన అవసరం మరియు వాటి క్రమమైన అనుసరణ ద్వారా వివరించబడింది.