د 1C ویب مراجعینو په اړه

د 1C:Enterprise ټیکنالوژۍ یوه له غوره ځانګړتیاو څخه دا ده چې د غوښتنلیک حل چې د مدیریت شوي فارم ټیکنالوژۍ په کارولو سره رامینځته شوی ، د وینډوز ، لینکس ، MacOS X او د 5 براوزرونو لپاره د ویب پیرودونکي په توګه دواړه په پتلی (اجرایی وړ) پیرودونکي کې پیل کیدی شي - کروم، انټرنیټ اکسپلورر، فایرفوکس، سفاري، ایج، او دا ټول د غوښتنلیک سرچینې کوډ بدلولو پرته. سربیره پردې ، په بهر کې غوښتنلیک په پتلي پیرودونکي او براوزر کې فعالیت کوي او نږدې ورته ښکاري.
10 توپیرونه ومومئ (د کټ لاندې 2 عکسونه):

په لینوکس کې د پیرودونکي پتلی کړکۍ:

د 1C ویب مراجعینو په اړه

په ویب مراجعینو کې ورته کړکۍ (په کروم براوزر کې):

د 1C ویب مراجعینو په اړه

ولې موږ د ویب پیرودونکي جوړ کړل؟ د دې لپاره چې دا یو څه په زړه پورې وي، وخت زموږ لپاره دا ډول دنده ټاکلې ده. په انټرنیټ کې کار کول د اوږدې مودې لپاره د سوداګرۍ غوښتنلیکونو لپاره یو شرط دی. لومړی، موږ د خپل پتلي پیرودونکي لپاره د انټرنیټ له لارې د کار کولو وړتیا اضافه کړه (زموږ ځینې سیالي کونکي، په لاره کې، هلته ودریدل؛ نور، په برعکس، پتلی پیرودونکي پریښودل او ځانونه یې د ویب پیرودونکي پلي کولو ته محدود کړل). موږ پریکړه وکړه چې خپلو کاروونکو ته فرصت ورکړو چې د پیرودونکي اختیار غوره کړي چې د دوی لپاره غوره وي.

د 1C ویب مراجعینو په اړه

پتلی مراجعینو ته د ویب پر بنسټ وړتیاوو اضافه کول د مراجعینو سرور جوړښت کې د بشپړ بدلون سره یوه لویه پروژه وه. د ویب پیرودونکي رامینځته کول په بشپړ ډول نوې پروژه ده ، له سکریچ څخه پیل کیږي.

د ستونزې تشکیل

نو، د پروژې اړتیاوې: د ویب پیرودونکی باید د پتلي پیرودونکي په څیر کار وکړي، یعنې:

  1. د کاروونکي انٹرفیس ښکاره کړئ
  2. د پیرودونکي کوډ اجرا کړئ چې په 1C ژبه لیکل شوی

په 1C کې د کاروونکي انٹرفیس په بصری مدیر کې تشریح شوی، مګر په اعالمیه توګه، پرته له دې چې د پکسل په واسطه د عناصرو ترتیب؛ د انٹرفیس عناصر شاوخوا درې درجن ډوله کارول کیږي - تڼۍ، د ننوتلو ساحې (متن، شمیرې، نیټه/وخت)، لیستونه، میزونه، ګرافونه، او نور.

په 1C ژبه کې د پیرودونکي کوډ کولی شي د سرور زنګونه ولري، د ځایی سرچینو سره کار کول (فایلونه، او نور)، چاپ کول، او نور ډیر څه.

دواړه پتلي پیرودونکي (کله چې د ویب له لارې کار کوي) او ویب پیرودونکي د 1C غوښتنلیک سرور سره د خبرو اترو لپاره د ویب خدماتو ورته سیټ کاروي. د پیرودونکي پلي کول، البته، توپیر لري - پتلی مراجع په C++ کې لیکل شوی، د ویب مراجعینو په جاوا سکریپټ کې لیکل شوی.

یو څه تاریخ

د ویب پیرودونکي پروژه په 2006 کې پیل شوه، د (په اوسط ډول) د 5 کسانو ټیم سره. د پروژې په ځینو مرحلو کې، پراختیا کونکي د ځانګړي فعالیت پلي کولو کې ښکیل وو (د سپریډ شیټ سند، ډیاګرامونه، او نور)؛ د یوې قاعدې په توګه، دا ورته پراختیا کونکي وو چې دا فعالیت یې په پتلی پیرودونکي کې ترسره کړ. هغوی. پراختیا کونکو په جاواسکریپټ کې اجزا بیا لیکلي چې دوی دمخه په C++ کې رامینځته کړي.

له پیل څخه، موږ د دوو ژبو ترمنځ د قوي مفکورې توپیرونو له امله د جاواسکریپټ ویب مراجعینو ته د C++ پتلی پیرودونکي کوډ د هر ډول اتوماتیک (حتی جزوي) تبادلې نظر رد کړ؛ د ویب پیرودونکی له سکریچ څخه په جاواسکریپټ کې لیکل شوی و.

د پروژې په لومړیو تکرارونو کې، ویب پیرودونکي د پیرودونکي کوډ په جوړ شوي 1C ژبه کې مستقیم جاواسکریپټ ته بدل کړ. پتلی پیرودونکی په مختلف ډول عمل کوي - په جوړ شوي 1C ژبه کې کوډ په بایټکوډ کې ترتیب شوی ، او بیا دا بایټ کوډ په پیرودونکي کې تشریح کیږي. وروسته بیا، ویب پیرودونکي ورته کار پیل کړ - لومړی، دا د فعالیت لاسته راوړنه ورکړه، او دویم، دا د پتلی او ویب مراجعینو جوړښت سره یوځای کول ممکن کړل.

د 1C لومړۍ نسخه: د ویب پیرودونکي ملاتړ سره د سوداګرۍ پلیټ فارم په 2009 کې خپور شو. د ویب پیرودونکي په هغه وخت کې د 2 براوزرونو ملاتړ کاوه - انټرنیټ اکسپلورر او فایرفوکس. په اصلي پلانونو کې د اوپیرا لپاره ملاتړ شامل و ، مګر په هغه وخت کې په اوپیرا کې د غوښتنلیک تړلو هینډلرونو سره د نه منلو وړ ستونزو له امله (دا ممکنه نه وه چې د 100٪ ډاډ سره تعقیب شي چې غوښتنلیک بند شوی و ، او په دې وخت کې د دې څخه د منحل کولو پروسه ترسره کړئ. د 1C غوښتنلیک سرور) د دې پلانونو څخه باید پریښودل شي.

د پروژې جوړښت

په مجموع کې، 1C:Enterprise پلیټ فارم 4 پروژې لري چې په جاواسکریپټ کې لیکل شوي:

  1. WebTools - شریک کتابتونونه چې د نورو پروژو لخوا کارول کیږي (موږ هم پکې شامل دي د ګوګل بند کتابتون).
  2. د کنټرول عنصر فارمیټ شوی سند (په جاواسکریپټ کې په پتلي پیرودونکي او ویب پیرودونکي کې پلي شوي)
  3. د کنټرول عنصر مهالویش کوونکی (په جاواسکریپټ کې په پتلي پیرودونکي او ویب پیرودونکي کې پلي شوي)
  4. د ویب پیرودونکي

د هرې پروژې جوړښت د جاوا پروژو جوړښت سره ورته دی (یا د NET پروژې - هر هغه چې نږدې وي)؛ موږ د نوم ځایونه لرو، او هر نوم ځای په جلا فولډر کې دی. د فولډر دننه د فایلونو او نوم ځای ټولګي شتون لري. د ویب مراجعینو په پروژه کې شاوخوا 1000 فایلونه شتون لري.

په ساختماني ډول، د ویب مراجعین په پراخه توګه په لاندې فرعي سیسټمونو ویشل شوي دي:

  • د پیرودونکي غوښتنلیک انٹرفیس اداره شوی
    • د غوښتنلیک عمومي انٹرفیس (سیسټم مینو، پینل)
    • د مدیریت شوي فورمو انٹرفیس، په شمول، د نورو شیانو په شمول، شاوخوا 30 کنټرولونه (تڼۍ، د ننوتلو مختلف ډولونه - متن، شمیرې، نیټه / وخت، او نور، میزونه، لیستونه، ګرافونه، او نور)

  • د اعتراض ماډل په پیرودونکي کې پراختیا کونکو ته شتون لري (په مجموع کې له 400 څخه ډیر ډولونه: د مدیریت شوي انٹرفیس اعتراض ماډل ، د ډیټا ترتیب تنظیمات ، مشروط سټایل ، او داسې نور)
  • د جوړ شوي 1C ژبې ژباړونکي
  • د براوزر توسیعونه (د فعالیت لپاره کارول کیږي چې په جاواسکریپټ کې نه ملاتړ کیږي)
    • د کریپټوګرافي سره کار کول
    • د فایلونو سره کار کول
    • د بهرنیو اجزاوو ټیکنالوژي، دوی ته اجازه ورکوي چې په پتلی او ویب مراجعینو کې وکارول شي

د پراختیا ځانګړتیاوې

په جاواسکریپټ کې د پورته ټولو پلي کول اسانه ندي. شاید د 1C ویب مراجع یو له لوی مراجعینو اړخ غوښتنلیکونو څخه دی چې په جاواسکریپټ کې لیکل شوي - شاوخوا 450.000 لینونه. موږ په فعاله توګه د ویب مراجعینو کوډ کې د اعتراض پر بنسټ طریقه کاروو، کوم چې د داسې لوی پروژې سره کار کول اسانه کوي.

د مراجعینو کوډ اندازه کمولو لپاره، موږ لومړی خپل خپل obfuscator وکاروو، او د پلیټ فارم نسخه 8.3.6 (اکتوبر 2014) سره مو کارول پیل کړل. د ګوګل بندولو کمپیلر. په شمیرو کې د کارونې اغیز - د مغشوش کیدو وروسته د ویب پیرودونکي چوکاټ اندازه:

  • خپل اوبفسکیټر - 1556 kb
  • د ګوګل د بندولو کمپیلر - 1073 kb

د ګوګل د بندولو کمپیلر کارول موږ سره مرسته وکړه چې د ویب پیرودونکي فعالیت 30٪ زموږ د خپل obfuscator په پرتله ښه کړي. سربیره پردې ، د غوښتنلیک لخوا مصرف شوي حافظې مقدار 15-25٪ کم شوی (د براوزر پورې اړه لري).

د ګوګل د بندولو کمپیلر د اعتراض پر بنسټ کوډ سره خورا ښه کار کوي، نو د ویب مراجعینو لپاره د دې موثریت د امکان تر حده لوړ دی. د بندولو کمپیلر زموږ لپاره یو څو ښه شیان ترسره کوي:

  • د پروژې د جوړولو په مرحله کې د جامد ډول چک کول (دا ډاډ ورکوي چې موږ کوډ د JSDoc تشریحاتو سره پوښئ). پایله جامد ټایپ کول دي ، په C++ کې ټایپ کولو ته خورا نږدې. دا د پروژې د تالیف په مرحله کې د کافي لوی سلنې غلطیو په نیولو کې مرسته کوي.
  • د ګډوډۍ له لارې د کوډ اندازه کمول
  • د اعدام شوي کوډ یو شمیر اصلاحونه، د بیلګې په توګه، لکه:
    • د انلاین فعالیت بدیلونه. په جاواسکریپټ کې د فنکشن زنګ وهل خورا ګران کار دی، او په مکرر ډول کارول شوي وړو میتودونو انلاین بدیلونه د پام وړ کوډ ګړندی کوي.
    • د تالیف په وخت کې د ثابتو شمیرل. که یو بیان په ثابت پورې اړه ولري، د ثابت حقیقي ارزښت به په هغې کې ځای پرځای شي

موږ WebStorm زموږ د ویب پیرودونکي پراختیا چاپیریال په توګه کاروو.

د کوډ تحلیل لپاره موږ کاروو سونار کیوب، چیرې چې موږ د جامد کوډ تحلیل کونکي مدغم کوو. د تحلیل کونکو په کارولو سره، موږ د جاواسکریپټ سرچینې کوډ کیفیت خرابول څارو او د مخنیوي هڅه یې کوو.

د 1C ویب مراجعینو په اړه

کومې ستونزې مو حل کړي دي؟

د پروژې د تطبیق په جریان کې، موږ د یو شمیر په زړه پورې ستونزو سره مخ شو چې موږ باید حل کړو.

د سرور او وینډوز ترمنځ ډاټا تبادله کړئ

داسې شرایط شتون لري چیرې چې د سرچینې کوډ خنډ کولی شي د سیسټم په عملیاتو کې مداخله وکړي. د ویب مراجعینو د اجرا وړ کوډ بهر کوډ، د خنډ له امله، کیدای شي د فعالیت او پیرامیټر نومونه ولري چې د هغو څخه توپیر لري چې زموږ د اجرا وړ کوډ تمه لري. زموږ لپاره بهرنی کوډ دا دی:

  • کوډ د سرور څخه د ډاټا جوړښتونو په بڼه راځي
  • د بل غوښتنلیک کړکۍ لپاره کوډ

د سرور سره د تعامل په وخت کې د ګډوډۍ څخه مخنیوي لپاره، موږ د @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;
}

او د نورو وینډوز سره د متقابل عمل کولو په وخت کې د ګډوډۍ مخنیوي لپاره ، موږ تش په نامه صادر شوي انٹرفیسونه کاروو (انټرفیسونه چې ټول میتودونه پکې صادریږي).

/**
 * Экспортируемый интерфейс контрола 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 کارولی مخکې له دې چې اصلي جریان شي)

د ټولو پراختیا کونکو په څیر چې د پیچلي ویب UIs سره معامله کوي، موږ ژر تر ژره پوه شو چې DOM د متحرک کاروونکي انٹرفیسونو سره کار کولو لپاره مناسب نه دی. نږدې سمدلاسه، د مجازی DOM انلاګ د UI سره د کار ښه کولو لپاره پلي شو. د پیښې پروسس کولو په جریان کې، د DOM ټول بدلونونه په حافظه کې زیرمه کیږي او یوازې کله چې ټول عملیات بشپړ شي، راټول شوي بدلونونه د DOM ونې کې پلي کیږي.

د ویب مراجعینو اصلاح کول

د دې لپاره چې زموږ د ویب پیرودونکي ګړندي کار وکړي، موږ هڅه کوو د معیاري براوزر وړتیاوې (CSS، etc.) اعظمي حد ته وکاروو. په دې توګه، د فارم کمانډ پینل (د غوښتنلیک نږدې هرې بڼې کې موقعیت لري) په ځانګړې توګه د براوزر وسیلو په کارولو سره، د CSS پر بنسټ د متحرک ترتیب په کارولو سره وړاندې کیږي.

د 1C ویب مراجعینو په اړه

ازمايښت

د فعالیت او فعالیت ازموینې لپاره، موږ د ملکیت وسیله کاروو (په جاوا او C++ کې لیکل شوي)، په بیله بیا د ازموینو یو سوټ چې په سر کې جوړ شوی Selenium.

زموږ وسیله نړیواله ده - دا تاسو ته اجازه درکوي نږدې هر کړکۍ شوي برنامه ازموینه وکړئ ، او له همدې امله د پتلي پیرودونکي او ویب پیرودونکي دواړه ازموینې لپاره مناسب دي. وسیله د هغه کارونکي عملونه ثبتوي چې د 1C غوښتنلیک حل یې په سکریپټ فایل کې پیل کړی. په ورته وخت کې، د سکرین د کاري ساحې انځورونه - معیارونه - ثبت شوي. کله چې د ویب مراجعینو نوې نسخې وڅارئ، سکریپټونه د کاروونکي ګډون پرته لوبول کیږي. په هغه قضیو کې چې سکرین شاټ په هر مرحله کې د حوالې سره سمون نه خوري، ازموینه ناکامه ګڼل کیږي، وروسته له دې چې د کیفیت متخصص یوه څیړنه ترسره کوي ترڅو معلومه کړي چې ایا دا یوه تېروتنه ده یا د سیسټم په چلند کې پالن شوي بدلون. د پلان شوي چلند په صورت کې، معیارونه په اوتومات ډول د نوي سره بدلیږي.

دا وسیله تر 25 ملی ثانیو پورې دقت سره د غوښتنلیک فعالیت هم اندازه کوي. په ځینو مواردو کې، موږ د سکریپټ برخې لوپ کوو (د بیلګې په توګه، د ترتیب ننوتل څو ځله تکرار کړئ) ترڅو د وخت په تیریدو سره د اجرا کولو وخت تخریب تحلیل کړي. د ټولو اندازه کولو پایلې د تحلیل لپاره په لاګ کې ثبت شوي.

د 1C ویب مراجعینو په اړه
زموږ د ازموینې وسیله او غوښتنلیک د ازموینې لاندې

زموږ وسیله او سیلینیم یو بل بشپړوي؛ د مثال په توګه، که چیرې په یوه سکرین کې ځینې تڼۍ خپل موقعیت بدل کړي، سیلینیم ممکن دا تعقیب نکړي، مګر زموږ وسیله به خبر شي، ځکه چې د معیار سره د سکرین شاټ د پکسل په واسطه پکسل پرتله کوي. دا وسیله د کیبورډ یا ماوس څخه د پروسس کولو ان پټ سره ستونزې تعقیبولو توان هم لري، ځکه چې دا هغه څه دي چې بیا تولیدوي.

په دواړو وسیلو کې ازموینې (زموږ او سیلینیم) زموږ د غوښتنلیک حلونو څخه ځانګړي کاري سناریوګانې پرمخ وړي. ازموینې په اوتومات ډول د 1C: تصدۍ پلیټ فارم ورځني جوړیدو وروسته پیل کیږي. که سکریپټونه ورو وي (د تیر جوړونې په پرتله)، موږ د ورو کیدو لامل څیړو او حل کوو. زموږ معیار ساده دی - نوی جوړونه باید د تیر په پرتله سست کار ونه کړي.

پراختیا کونکي د سست پیښو څیړلو لپاره مختلف وسیلې کاروي؛ په عمده توګه کارول Dynatrace AJAX نسخه د تولید شرکت DynaTrace. په تیرو او نویو ودانیو کې د ستونزمن عملیاتو اجرا کولو لاګونه ثبت شوي ، بیا لاګونه تحلیل کیږي. په ورته وخت کې ، د واحد عملیاتو اجرا کولو وخت (په ملی ثانیو کې) ممکن پریکړه کونکی فاکتور نه وي - د خدماتو پروسې لکه د کثافاتو راټولول په وخت سره په براوزر کې پیل کیږي ، دوی کولی شي د دندو اجرا کولو وخت سره مخ شي او عکس تحریف کړي. په دې قضیه کې نور اړونده پیرامیټونه به د جاواسکریپټ لارښوونو شمیر چې اجرا شوي وي، په DOM کې د اټومي عملیاتو شمیر، او داسې نور. که په ورته سکریپټ کې د لارښوونو / عملیاتو شمیر په نوې نسخه کې ډیر شوی وي ، دا نږدې تل د فعالیت کمیدو معنی لري چې سمولو ته اړتیا لري.

همچنان ، د فعالیت د کمیدو یو لامل ممکن دا وي چې د ګوګل بند کولو کمپیلر د یو څه دلیل لپاره د فنکشن انلاین بدیل ترسره کولو توان نه درلود (د مثال په توګه ، ځکه چې فنکشن تکرار یا مجازی دی). په دې حالت کې، موږ هڅه کوو چې د سرچینې کوډ بیا لیکلو سره وضعیت سم کړو.

د براوزر توسیعونه

کله چې د غوښتنلیک حل فعالیت ته اړتیا لري چې په جاواسکریپټ کې شتون نلري، موږ د براوزر توسیع کاروو:

  • د فایلونو سره کار کولو لپاره
  • د کریپټوګرافي سره کار کولو لپاره
  • ورسره کار وکړه بهرنۍ برخې

زموږ غزونه دوه برخې لري. لومړۍ برخه هغه څه دي چې د براوزر توسیع بلل کیږي (معمولا د کروم او فایرفوکس لپاره توسیعونه په جاواسکریپټ کې لیکل شوي) ، کوم چې د دوهمې برخې سره اړیکه لري - یو بائنری توسیع چې هغه فعالیت پلي کوي چې موږ ورته اړتیا لرو. دا باید یادونه وشي چې موږ د بائنری توسیع 3 نسخې لیکو - د وینډوز، لینکس او MacOS لپاره. د بائنری توسیع د 1C برخې په توګه چمتو شوی: د شرکت پلیټ فارم او د 1C غوښتنلیک سرور کې موقعیت لري. کله چې د لومړي ځل لپاره د ویب پیرودونکي څخه وغوښتل شي، دا د پیرودونکي کمپیوټر ته ډاونلوډ کیږي او په براوزر کې نصب کیږي.

کله چې په سفاري کې روان وي، زموږ توسیعونه NPAPI کاروي؛ کله چې په انټرنیټ اکسپلورر کې روان وي، دوی د ActiveX ټیکنالوژي کاروي. د مایکروسافټ ایجګ لا تر اوسه د تمدیدونو ملاتړ نه کوي، نو په دې کې ویب مراجعین د محدودیتونو سره کار کوي.

نور پرمختګ

د ویب پیرودونکي پرمختیا ټیم لپاره یو له دندو څخه د فعالیت نور پرمختګ دی. د ویب پیرودونکي فعالیت باید د پتلي پیرودونکي فعالیت سره ورته وي؛ ټول نوي فعالیت په ورته وخت کې دواړه پتلي او ویب پیرودونکو کې پلي کیږي.

په نورو دندو کې د معمارۍ وده کول، ریفاکتور کول، د فعالیت ښه کول او اعتبار شامل دي. د مثال په توګه، یو له لارښوونو څخه د غیر متناسب کاري ماډل په لور نور حرکت دی. د ویب پیرودونکي ځینې فعالیت اوس مهال د سرور سره د متقابل عمل په ترکیب ماډل کې جوړ شوی. د اسینکرونس ماډل اوس په براوزرونو کې ډیر اړونده کیږي (او نه یوازې په براوزرونو کې) ، او دا موږ دې ته اړ باسي چې د همغږي تلیفونونو ځای په ځای کولو سره د ویب پیرودونکی تعدیل کړو (او د دې مطابق کوډ ریفاکتور کول). یو غیر متناسب ماډل ته تدریجي لیږد د خوشې شوي حلونو او د دوی تدریجي موافقت ملاتړ کولو اړتیا لخوا توضیح شوی.

سرچینه: www.habr.com

Add a comment