پلیټ فارم "1C: شرکت" - د هود لاندې څه دی؟

اې حبره!
پدې مقاله کې به موږ کیسه پیل کړو چې دا څنګه دننه کار کوي پلیټ فارم "1C: شرکت 8" او د هغې په پراختیا کې کوم ټیکنالوژي کارول کیږي.

پلیټ فارم "1C: شرکت" - د هود لاندې څه دی؟

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

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

  • د سرور کلستر
  • "پتلی" پیرودونکی د HTTP او د خپل بائنری پروتوکول له لارې سرور سره وصل کولو وړ دی
  • د هارډ ډرایو یا شبکې فولډر کې موقعیت لرونکي ډیټابیس سره په دوه پوړ جوړښت کې د کار کولو لپاره پیرودونکي
  • ویب پیرودونکي
  • د غوښتنلیک سرور ادارې وسیلې
  • د پراختیا چاپیریال (د تنظیم کونکي په نوم پیژندل شوی)
  • د iOS، Android او وینډوز تلیفون لپاره د چلولو چاپیریال (د ګرځنده پلیټ فارم 1C)

دا ټولې برخې، د ویب پیرودونکي استثنا سره، په C++ کې لیکل شوي. سربیره پردې، پدې وروستیو کې اعلان شوی د نوي نسل ترتیب کوونکی، په جاوا کې لیکل شوی.

اصلي ایپسونه

C++03 د اصلي غوښتنلیکونو پراختیا لپاره کارول کیږي. د وینډوز لپاره ، د مایکروسافټ ویژول C++ 12 (د وینډوز ایکس پی سره مطابقت لرونکی پروفایل) د کمپیلر په توګه کارول کیږي ، او د لینکس او Android لپاره - gcc 4.8 ، د iOS لپاره - clang 5.0. کارول شوی معیاري کتابتون د ټولو عملیاتي سیسټمونو او کمپیلرونو لپاره یو شان دی - STLPport. دا حل د STL پلي کولو ځانګړي غلطیو احتمال کموي. موږ اوس مهال پلان لرو چې د CLang سره لیږل شوي STL تطبیق ته مهاجرت وکړو، ځکه چې STLPport بند شوی او د Gcc C++ 11 فعال حالت سره مطابقت نلري.
د سرور د کوډ اساس 99٪ عام دی، د پیرودونکي - 95٪. سربیره پردې ، حتی ګرځنده پلیټ فارم د "لوی" په څیر ورته C++ کوډ کاروي ، که څه هم د یووالي سلنه یو څه ټیټه ده.
د ډیری C++ کاروونکو په څیر، موږ د ژبې او کتابتونونو 100٪ وړتیاوو د کارولو ادعا نه کوو. نو، موږ په عملي توګه بوسټ نه کاروو، او د ژبې یوه ځانګړتیا د متحرک ډول کاسټینګ دی. په ورته وخت کې، موږ په فعاله توګه کاروو:

  • STL (په ځانګړې توګه تارونه، کانټینرونه او الګوریتمونه)
  • ډیری میراث، په شمول. د ډیری تطبیق میراث
  • نمونه
  • استثناوې
  • سمارټ ټکي (د دودیز تطبیق)

د انٹرفیس د ډیری میراث په کارولو سره (په بشپړ ډول خلاص ټولګي) ، د اجزا ماډل ممکن کیږي ، کوم چې به لاندې بحث وشي.

اجزاء

د ماډلریت ډاډ ترلاسه کولو لپاره، ټول فعالیت په برخو ویشل شوی، کوم چې متحرک کتابتونونه دي (*. dll د وینډوز لپاره، *. د لینکس لپاره). په مجموع کې له یو سل او پنځوسو څخه زیاتې اجزاوې شتون لري، چې د ځینو یې دلته بیانوو:

backend
د پلیټ فارم میټاډاټا انجن لري

acnt
هغه شیان چې د غوښتنلیک جوړونکي د محاسبې ریکارډونو جوړولو لپاره کاروي (د حسابونو چارټ او د محاسبې راجسترونه)

bsl
سرایت شوی د ژبې اجرا کولو انجن

نیوکی
د حافظې تخصیص کونکي دودیز پلي کول

dbeng8
د فایل ډیټابیس انجن. د ISAM پر بنسټ د ساده فایل سرور ډیټابیس انجن، کوم چې یو ساده SQL پروسیسر هم شامل دی

wbase
د وینډوز کارن انٹرفیس پلي کولو لپاره بیس کلاسونه او دندې لري - د کړکۍ ټولګي، GDI لاسرسی، او داسې نور.

په څو برخو ویشل د څو نقطو څخه ګټور دي:

  • جلا کول غوره ډیزاین ته وده ورکوي، په ځانګړې توګه د کوډ غوره جلا کول
  • د اجزاو د سیټ څخه تاسو کولی شئ په انعطاف سره د تحویلي مختلف انتخابونه راټول کړئ:
    • د مثال په توګه، یو پتلی پیرودونکي نصب کول به wbase ولري، مګر بیکینډ به نه وي
    • مګر په wbase سرور کې، برعکس، دا به نه وي
    • دواړه اختیارونه به البته اټومي او bsl ولري

د دې لانچ اختیار لپاره اړین ټول اجزاو بار شوي کله چې برنامه پیل شي. دا، په ځانګړې توګه، د SCOM ټولګیو ثبتولو لپاره اړین دی، کوم چې به لاندې بحث وشي.

سکم

په ټیټه کچه د تخریب لپاره، د SCOM سیسټم کارول کیږي، یو کتابتون چې په ایډیالوژۍ کې ATL ته ورته دی. د هغو کسانو لپاره چې د ATL سره یې کار نه دی کړی، موږ په لنډه توګه اصلي وړتیاوې او ځانګړتیاوې لیست کوو.
د ځانګړي ډیزاین شوي SCOM ټولګي لپاره:

  • د فابریکې میتودونه چمتو کوي چې تاسو ته اجازه درکوي د بل برخې څخه ټولګي رامینځته کړئ چې یوازې د هغې نوم پیژني (پرته له دې چې پلي کول ښکاره کړي)
  • د حوالې شمیرنې سمارټ پوائنټر زیربنا چمتو کوي. د SCOM ټولګي ژوند اړتیا نلري په لاسي ډول نظارت شي
  • تاسو ته اجازه درکوي چې ومومئ چې ایا یو شی یو ځانګړی انٹرفیس پلي کوي او په اتوماتيک ډول یو پوائنټر د اعتراض لپاره یو پوینټر انٹرفیس ته بدلوي
  • د خدماتو څیز رامینځته کړئ چې تل د get_service میتود له لارې د لاسرسي وړ وي ، وغيره.

د مثال په توګه، تاسو کولی شئ د json.dll برخې کې د JSON (د مثال په توګه، JSONStreamReader) د لوستلو لپاره ټولګي تشریح کړئ.
ټولګي او مثالونه د نورو برخو څخه رامینځته کیدی شي؛ دوی باید د SCOM ماشین کې راجستر شي:

SCOM_CLASS_ENTRY(JSONStreamReader)

دا میکرو به د ځانګړي جامد ریکارډر ټولګي تشریح کړي، کوم چې جوړونکی به یې ویل کیږي کله چې برخه په حافظه کې پورته کیږي.
له دې وروسته، تاسو کولی شئ په بل برخه کې د دې مثال جوړ کړئ:

IJSONStreamReaderPtr jsonReader = create_instance<IJSONStreamReader>(SCOM_CLSIDOF(JSONStreamReader));

د خدماتو مالتړ لپاره، SCOM یو اضافي، بلکه پیچلې زیربنا وړاندې کوي. د دې لپاره مرکزي د SCOM پروسې مفهوم دی، کوم چې د چلولو خدماتو لپاره د کانټینر په توګه کار کوي (د بیلګې په توګه، د خدماتو لوکیټر رول لوبوي)، او همدارنګه د ځایی سرچینو پابند هم لري. د SCOM پروسه د OS تار سره تړلې ده. د دې څخه مننه ، د غوښتنلیک دننه تاسو کولی شئ دا ډول خدمات ترلاسه کړئ:

SCOM_Process* process = core::current_process();
if (process)
         return get_service<IMyService>(process);

برسېره پردې، د منطقي (SCOM) پروسې بدلولو سره چې په تار پورې تړل شوي، تاسو کولی شئ هغه غوښتنلیکونه ترلاسه کړئ چې د معلوماتو ځای له نظره په عملي توګه خپلواک دي، په ورته تار کې روان دي. دا څنګه زموږ پتلی پیرودونکی د فایل ډیټابیس سره کار کوي - د یوې OS پروسې دننه دوه SCOM پروسې شتون لري ، یو د پیرودونکي سره تړاو لري ، او دوهم یې د سرور سره. دا طریقه موږ ته اجازه راکوي چې د کوډ لیکلو سره یوځای کړو چې دواړه به د محلي فایل ډیټابیس او د "ریښتین" مراجعینو سرور نسخه کې کار وکړي. د داسې یووالي لپاره قیمت ډیر دی، مګر تمرین ښیې چې دا ارزښت لري.

د SCOM برخې ماډل پراساس، دواړه د سوداګرۍ منطق او د 1C انٹرفیس برخه: شرکت پلي کیږي.

کارن برسیر

په هرصورت، د انٹرفیسونو په اړه. موږ معیاري وینډوز کنټرولونه نه کاروو؛ زموږ کنټرولونه په مستقیم ډول په وینډوز API کې پلي کیږي. د لینکس نسخې لپاره، یو پرت جوړ شوی چې د wxWidgets کتابتون له لارې کار کوي.
د کنټرول کتابتون د 1C:Enterprise په نورو برخو پورې اړه نلري او زموږ لخوا په نورو کوچنیو داخلي اسانتیاوو کې کارول کیږي.

د 1C:Enterprise د پراختیا په کلونو کې، د کنټرول بڼه بدله شوې، مګر په اصولو کې جدي بدلون یوازې یو ځل واقع شو، په 2009 کې، د 8.2 نسخه خوشې کولو او د "منظم شوي بڼو" په راتګ سره. د ظاهري بدلون سربیره، د بڼې ترتیب اصول په بنسټیز ډول بدل شوي - د عناصرو د جریان ترتیب په ګټه د عناصرو د پکسل په واسطه د پکسل موقعیت رد کول وو. سربیره پردې ، په نوي ماډل کې ، کنټرولونه په مستقیم ډول د ډومین توکو سره کار نه کوي ، مګر د ځانګړي DTOs سره (د ډیټا لیږد توکي).
دې بدلونونو دا ممکنه کړه چې د 1C:Enterprise ویب پیرینټ رامینځته کړي چې د جاواسکریپټ کنټرولونو C++ منطق نقل کوي. موږ هڅه کوو چې د پتلي او ویب مراجعینو تر مینځ فعال انډول وساتي. په هغه حالتونو کې چې دا ممکنه نه وي، د مثال په توګه د جاوا سکریپټ API محدودیتونو له امله شتون لري (د مثال په توګه، د فایلونو سره د کار کولو وړتیا خورا محدوده ده)، موږ ډیری وختونه په C++ کې لیکل شوي د براوزر توسیعونو په کارولو سره اړین فعالیت پلي کوو. موږ دا مهال د انټرنیټ اکسپلورر او مایکروسافټ ایج (وینډوز) ، ګوګل کروم (وینډوز) ، فایرفاکس (وینډوز او لینکس) او سفاري (میک او ایس) ملاتړ کوو.

سربیره پردې، د 1C پلیټ فارم کې د ګرځنده غوښتنلیکونو لپاره د انٹرفیس رامینځته کولو لپاره د مدیریت شوي فارم ټیکنالوژي کارول کیږي. په ګرځنده وسیلو کې ، د کنټرول رینډریشن د عملیاتي سیسټم اصلي ټیکنالوژیو په کارولو سره پلي کیږي ، مګر د فارم ترتیب منطق او انٹرفیس ځواب لپاره ، ورته کوډ د "لوی" 1C په څیر کارول کیږي: د شرکت پلیټ فارم.

پلیټ فارم "1C: شرکت" - د هود لاندې څه دی؟
په لینکس OS کې 1C انٹرفیس

پلیټ فارم "1C: شرکت" - د هود لاندې څه دی؟
په ګرځنده وسیله کې 1C انٹرفیس

په نورو پلیټ فارمونو کې 1C انٹرفیس پلیټ فارم "1C: شرکت" - د هود لاندې څه دی؟
په وینډوز OS کې 1C انٹرفیس

پلیټ فارم "1C: شرکت" - د هود لاندې څه دی؟
انٹرفیس 1C - ویب مراجع

خلاصه سرچینه

که څه هم موږ د وینډوز لاندې د C++ پراختیا کونکو لپاره معیاري کتابتونونه نه کاروو (MFC، د WinAPI څخه کنټرولونه)، موږ ټول اجزا پخپله نه لیکو. د کتابتون یادونه لا دمخه شوې ده د، او موږ هم کاروو:

  • cURL د HTTP او FTP سره کار کولو لپاره.
  • OpenSSL د کریپټوګرافي سره کار کولو او د TLS اړیکې رامینځته کولو لپاره
  • libxml2 او libxslt د XML تحلیل لپاره
  • libetpan د میل پروتوکولونو سره کار کولو لپاره (POP3، SMTP، IMAP)
  • mimetic د بریښنالیک پیغامونو تحلیل لپاره
  • sqllite د کارن لاګونو ذخیره کولو لپاره
  • ICU د نړیوال کیدو لپاره

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

پایلې

په مقاله کې موږ د 1C پراختیا ډیری اصلي اړخونو ته اشاره وکړه: د سوداګرۍ پلیټ فارم. د مقالې په محدوده ساحه کې، موږ یوازې ځینې په زړه پورې، زموږ په نظر، اړخونو ته اشاره وکړه.
د مختلف پلیټ فارم میکانیزمونو عمومي توضیحات موندل کیدی شي دلته.
په راتلونکو مقالو کې به کوم موضوعات ستاسو لپاره په زړه پوري وي؟

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

په تبصرو کې ولیکئ!

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

Add a comment