پليٽ فارم "1C: انٽرپرائز" - هيڊ هيٺ ڇا آهي؟

اي حبر!
هن آرٽيڪل ۾ اسان ڪهاڻي شروع ڪنداسين ته اهو اندر ڪيئن ڪم ڪري ٿو پليٽ فارم "1C:انٽرپرائز 8" ۽ ڪهڙيون ٽيڪنالاجيون ان جي ترقي ۾ استعمال ٿينديون آهن.

پليٽ فارم "1C: انٽرپرائز" - هيڊ هيٺ ڇا آهي؟

اسان ڇو ٿا سوچيو ته اهو دلچسپ آهي؟ پهريون، ڇاڪاڻ ته 1C:Enterprise 8 پليٽ فارم هڪ وڏو آهي (ڪوڊ جون 10 ملين لائنن کان وڌيڪ) ايپليڪيشن C++ ۾ (ڪلائنٽ، سرور، وغيره)، جاوا اسڪرپٽ (ويب ڪلائنٽ)، ۽، تازو، ۽. جاوا. وڏا منصوبا گهٽ ۾ گهٽ انهن جي پيماني جي ڪري دلچسپ ٿي سگهن ٿا، ڇاڪاڻ ته اهي مسئلا جيڪي هڪ ننڍڙي ڪوڊ بيس ۾ پوشيده هوندا آهن انهن منصوبن ۾ پوري قوت سان پيدا ٿيندا آهن. ٻيو، “1C:Enterprise” هڪ قابل نقل، “باڪس ٿيل” پراڊڪٽ آهي، ۽ Habré تي اهڙين ترقين بابت تمام ٿورا مضمون آهن. اهو پڻ ڄاڻڻ هميشه دلچسپ آهي ته زندگي ڪيئن آهي ٻين ٽيمن ۽ ڪمپنين ۾.

سو اچو ته شروع ڪريون. هن آرٽيڪل ۾ اسان ڪجهه ٽيڪنالاجيز جو هڪ جائزو ڏينداسين جيڪي پليٽ فارم ۾ استعمال ڪيا ويا آهن ۽ منظرنامي جو خاڪو بيان ڪن ٿا، بغير ڪنهن به عمل ۾ گهيرو ڪرڻ جي. درحقيقت، ڪيترن ئي ميڪانيزم لاء، هڪ تفصيلي ڪهاڻي هڪ الڳ مضمون جي ضرورت هوندي، ۽ ڪجهه لاء، هڪ مڪمل ڪتاب!
شروع ڪرڻ سان، اهو بنيادي شين تي فيصلو ڪرڻ جي قابل آهي - ڇا 1C: انٽرپرائز پليٽ فارم آهي ۽ ان ۾ ڪهڙا اجزاء شامل آهن. هن سوال جو جواب ايترو سادو نه آهي، ڇاڪاڻ ته اصطلاح ”پليٽ فارم“ (اختصار لاءِ، اسين ان کي ائين سڏينداسين) ڪاروباري ايپليڪيشنن، رن ٽائم ماحول، ۽ انتظامي اوزارن جي ترقيءَ لاءِ هڪ وسيلو ڏانهن اشارو ڪري ٿو. ھيٺ ڏنل اجزاء کي تقريبا فرق ڪري سگھجي ٿو:

  • سرور ڪلستر
  • "پتلي" ڪلائنٽ http ۽ ان جي پنهنجي بائنري پروٽوڪول ذريعي سرور سان ڳنڍڻ جي قابل
  • هارڊ ڊرائيو يا نيٽ ورڪ فولڊر تي واقع ڊيٽابيس سان گڏ ٻه-سطح فن تعمير ۾ ڪم ڪرڻ لاءِ ڪلائنٽ
  • ويب ڪلائنٽ
  • ايپليڪيشن سرور انتظامي اوزار
  • ترقي وارو ماحول (جي نالي سان سڃاتو وڃي ٿو ترتيب ڏيڻ وارو)
  • iOS، Android ۽ ونڊوز فون لاءِ رن ٽائم ماحول (موبائل پليٽ فارم 1C)

اهي سڀئي حصا، ويب ڪلائنٽ جي استثنا سان، سي ++ ۾ لکيل آهن. اضافي طور تي، تازو اعلان ڪيو ويو آهي نئين نسل جي ترتيب ڏيڻ واروجاوا ۾ لکيل آهي.

اصلي ائپس

C++ 03 استعمال ڪيو ويندو آهي مقامي ايپليڪيشنن کي ترقي ڪرڻ لاء. ونڊوز لاءِ، Microsoft Visual C++ 12 (Windows XP سان مطابقت رکندڙ پروفائل) هڪ ڪمپلر طور استعمال ڪيو ويندو آهي، ۽ لينڪس ۽ Android لاءِ - gcc 4.8، iOS لاءِ - clang 5.0. استعمال ٿيل معياري لائبريري سڀني آپريٽنگ سسٽم ۽ گڏ ڪرڻ وارن لاءِ ساڳي آهي - STLPport. هي حل STL لاڳو ڪرڻ جي مخصوص غلطين جي امڪان کي گھٽائي ٿو. اسان هن وقت CLang سان موڪليل STL عمل درآمد ڏانهن لڏڻ جي منصوبابندي ڪري رهيا آهيون، جيئن STLPport بند ڪيو ويو آهي ۽ gcc جي C++ 11 فعال موڊ سان مطابقت ناهي.
سرور جي ڪوڊ جو بنياد 99٪ عام آهي، ڪلائنٽ جو - 95٪. ان کان علاوه، موبائل پليٽ فارم پڻ ساڳيو C ++ ڪوڊ استعمال ڪري ٿو "وڏي" هڪ جي طور تي، جيتوڻيڪ اتحاد جو سيڪڙو ڪجهه گهٽ آهي.
اڪثر C++ استعمال ڪندڙن وانگر، اسان ٻولي ۽ ان جي لائبريرين جي 100% صلاحيتن کي استعمال ڪرڻ جي دعويٰ نٿا ڪريون. تنهن ڪري، اسان عملي طور تي بوسٽ استعمال نٿا ڪريون، ۽ ٻوليء جي خاصيتن مان هڪ آهي متحرڪ قسم جي ڪاسٽنگ. ساڳئي وقت، اسان فعال طور تي استعمال ڪندا آهيون:

  • STL (خاص طور تي تار، ڪنٽينر ۽ الگورتھم)
  • گھڻن وراثت، بشمول. گهڻن عملن جي وراثت
  • نمونن
  • استثنا
  • سمارٽ پوائنٽر (ڪسٽم لاڳو ڪرڻ)

انٽرفيس جي ڪيترن ئي ورثي کي استعمال ڪندي (مڪمل طور تي تجريدي طبقن)، هڪ جزو ماڊل ممڪن ٿي سگهي ٿو، جنهن تي هيٺ بحث ڪيو ويندو.

اجزاء

modularity کي يقيني بڻائڻ لاء، سڀ ڪارڪردگي حصن ۾ ورهايل آهن، جيڪي متحرڪ لائبريريون آهن (*. dll ونڊوز لاء، *. لينڪس لاء). مجموعي ۾ هڪ سئو پنجاهه کان وڌيڪ جزا آهن، انهن مان ڪجهه جو تفصيل هيٺ ڏجي ٿو:

backend
پليٽ فارم ميٽا ڊيٽا انجڻ تي مشتمل آهي

acnt
شيون جيڪي ايپليڪيشن ڊولپرز اڪائونٽنگ رڪارڊ ٺاهڻ لاءِ استعمال ڪن ٿا (اڪائونٽس جا چارٽ ۽ اڪائونٽنگ رجسٽر)

bsl
ايمبيڊڊ ٻولي جي عمل جي انجڻ

نڪڪ
ميموري مختص ڪندڙ جي ڪسٽم تي عملدرآمد

dbeng8
فائل ڊيٽابيس انجڻ. ISAM تي ٻڌل هڪ سادي فائل سرور ڊيٽابيس انجڻ، جنهن ۾ هڪ سادي SQL پروسيسر پڻ شامل آهي

wbase
ونڊوز يوزر انٽرفيس کي لاڳو ڪرڻ لاءِ بنيادي طبقن ۽ افعال تي مشتمل آهي - ونڊو ڪلاس، GDI رسائي، وغيره.

ڪيترن ئي حصن ۾ ورهائڻ ڪيترن ئي نقطي نظر کان مفيد آهي:

  • علحدگي بهتر ڊيزائن کي فروغ ڏئي ٿي، خاص طور تي بهتر ڪوڊ آئسوليشن
  • اجزاء جي ھڪڙي سيٽ مان توھان لچڪدار طور تي مختلف ترسيل اختيارن کي گڏ ڪري سگھو ٿا:
    • مثال طور، هڪ پتلي ڪلائنٽ تنصيب wbase تي مشتمل هوندي، پر پس منظر نه هوندو
    • پر wbase سرور تي، ان جي ابتڙ، اهو نه ٿيندو
    • ٻنهي اختيارن ۾ ضرور شامل هوندو nuke ۽ 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 جي رليز ۽ ”منظم ٿيل فارمن“ جي آمد سان. ظهور کي تبديل ڪرڻ کان علاوه، فارم جي ترتيب جو اصول بنيادي طور تي تبديل ٿي چڪو آهي - عناصر جي وهڪري جي ترتيب جي حق ۾ عناصر جي پکسل-جي-پڪسل پوزيشن کي رد ڪيو ويو. ان کان علاوه، نئين ماڊل ۾، ڪنٽرول سڌو سنئون ڊومين جي شين سان ڪم نه ڪندا آهن، پر خاص ڊي ٽي اوز سان (ڊيٽا جي منتقلي آبجیکٹ).
انهن تبديلين اهو ممڪن بڻايو ته هڪ 1C:Enterprise ويب ڪلائنٽ ٺاهيو جيڪو C++ جاوا اسڪرپٽ ڪنٽرول جي منطق کي نقل ڪري ٿو. اسان پتلي ۽ ويب ڪلائنٽ جي وچ ۾ فعلي برابري برقرار رکڻ جي ڪوشش ڪندا آهيون. انهن حالتن ۾ جتي اهو ممڪن ناهي، مثال طور JavaScript API جي دستيابي جي حدن جي ڪري (مثال طور، فائلن سان ڪم ڪرڻ جي صلاحيت تمام محدود آهي)، اسان اڪثر ڪري C++ ۾ لکيل برائوزر ايڪسٽينشن استعمال ڪندي ضروري ڪارڪردگي کي لاڳو ڪندا آهيون. اسان هن وقت انٽرنيٽ ايڪسپلورر ۽ Microsoft ايج (ونڊوز)، گوگل ڪروم (ونڊوز)، فائر فاڪس (ونڊوز ۽ لينڪس) ۽ سفاري (MacOS) کي سپورٽ ڪريون ٿا.

ان کان علاوه، منظم فارم ٽيڪنالاجي استعمال ڪيو ويندو آهي هڪ انٽرفيس ٺاهڻ لاءِ موبائل ايپليڪيشنن لاءِ 1C پليٽ فارم تي. موبائيل ڊوائيسز تي، ڪنٽرول جي رينڊنگ کي لاڳو ڪيو ويو آهي ٽيڪنالاجيون استعمال ڪندي مقامي آپريٽنگ سسٽم، پر فارم جي ترتيب جي منطق ۽ انٽرفيس جي جواب لاء، ساڳيو ڪوڊ استعمال ڪيو ويندو آهي "وڏي" 1C ۾: انٽرپرائز پليٽ فارم.

پليٽ فارم "1C: انٽرپرائز" - هيڊ هيٺ ڇا آهي؟
لينڪس او ايس تي 1C انٽرفيس

پليٽ فارم "1C: انٽرپرائز" - هيڊ هيٺ ڇا آهي؟
هڪ موبائل ڊوائيس تي 1C انٽرفيس

1C انٽرفيس ٻين پليٽ فارمن تي پليٽ فارم "1C: انٽرپرائز" - هيڊ هيٺ ڇا آهي؟
ونڊوز او ايس تي 1C انٽرفيس

پليٽ فارم "1C: انٽرپرائز" - هيڊ هيٺ ڇا آهي؟
انٽرفيس 1C - ويب ڪلائنٽ

کليل ذريعو

جيتوڻيڪ اسان Windows (MFC، WinAPI کان ڪنٽرولس) تحت C++ ڊولپرز لاءِ معياري لائبريريون استعمال نٿا ڪريون، اسان سڀ حصا پاڻ نه لکون ٿا. لائبريريءَ جو ذڪر اڳ ۾ ئي ٿي چڪو آهي wx وائڊٽز، ۽ اسان پڻ استعمال ڪريون ٿا:

  • زلف HTTP ۽ FTP سان ڪم ڪرڻ لاء.
  • OpenSSL Cryptography سان ڪم ڪرڻ ۽ TLS ڪنيڪشن قائم ڪرڻ لاءِ
  • libxml2 ۽ libxslt XML parsing لاءِ
  • libetpan ميل پروٽوڪول سان ڪم ڪرڻ لاءِ (POP3، SMTP، IMAP)
  • مشابهت اي ميل پيغامن کي پارس ڪرڻ لاءِ
  • sqllite استعمال ڪندڙ لاگ محفوظ ڪرڻ لاء
  • اي سي يو بين الاقواميت لاء

لسٽ جاري رهي.
اضافي طور تي، اسان هڪ انتهائي تبديل ٿيل نسخو استعمال ڪندا آهيون گوگل ٽيسٽ и Google Mock جڏهن ترقي يافته يونٽ ٽيسٽ.
لائبريرين کي SCOM جزو آرگنائيزيشن ماڊل سان مطابقت رکڻ جي ضرورت آهي.
1C جي ابتڙ پليٽ فارم کي ان ۾ استعمال ٿيندڙ لائبريرين لاءِ طاقت جو بهترين امتحان ڏئي ٿو. استعمال ڪندڙ ۽ منظرنامي جو هڪ قسم جلدي جلدي ظاهر ڪري ٿو غلطيون جيتوڻيڪ تمام گهٽ استعمال ٿيل ڪوڊ جي علائقن ۾. اسان پاڻ انهن کي درست ڪريون ٿا ۽ ڪوشش ڪريون ٿا ته انهن کي واپس لائبريري ليکڪن کي ڏيون. ڳالهه ٻولهه جو تجربو تمام مختلف ٿي سگهي ٿو.
ٺاهيندڙ زلف и libetpan پل-جي درخواستن تي تڪڙو جواب ڏيو، پر پيچ، مثال طور، ۾ OpenSSL اسان ڪڏهن به ان کي واپس ڏيڻ جو انتظام نه ڪيو.

ٿڪل

آرٽيڪل ۾ اسان 1C جي ترقي جي ڪيترن ئي مکيه حصن تي ڌيان ڏنو: انٽرنيشنل پليٽ فارم. مضمون جي محدود دائري ۾، اسان صرف ڪجهه دلچسپ، اسان جي راء ۾، پهلون تي ڌيان ڏنو.
مختلف پليٽ فارم ميکانيزم جو هڪ عام وضاحت ملي سگهي ٿو هتي.
مستقبل جي مضمونن ۾ ڪهڙن موضوعن تي توهان جي دلچسپي هوندي؟

1C موبائل پليٽ فارم ڪيئن لاڳو ڪيو ويو آهي؟
ويب ڪلائنٽ جي اندروني ساخت جي وضاحت؟
يا ٿي سگهي ٿو توهان نئين رليز، ترقي ۽ جاچ لاءِ فيچرز چونڊڻ جي عمل ۾ دلچسپي رکو ٿا؟

تبصرن ۾ لکو!

جو ذريعو: www.habr.com

تبصرو شامل ڪريو