වේදිකාව "1C: ව්යවසාය" - ආවරණය යටතේ ඇත්තේ කුමක්ද?

හෙලෝ, හබ්ර්!
මෙම ලිපියෙන් අපි එය ඇතුළත ක්‍රියා කරන ආකාරය පිළිබඳ කතාව ආරම්භ කරමු වේදිකාව "1C: Enterprise 8" සහ එහි සංවර්ධනය සඳහා භාවිතා කරන තාක්ෂණයන් මොනවාද.

වේදිකාව "1C: ව්යවසාය" - ආවරණය යටතේ ඇත්තේ කුමක්ද?

මෙය සිත්ගන්නා සුළු යැයි අප සිතන්නේ ඇයි? පළමුව, 1C:Enterprise 8 වේදිකාව C++ (සේවාදායකයා, සේවාදායකය, ආදිය), JavaScript (වෙබ් සේවාලාභියා), සහ, වඩාත් මෑතක දී, විශාල (කේත රේඛා මිලියන 10 කට වඩා වැඩි) යෙදුමක් වන නිසා ජාවා. කුඩා කේත පදනමක් තුළ නොපෙනෙන ගැටළු එවැනි ව්යාපෘතිවල පූර්ණ බලයෙන් පැනනගින නිසා විශාල ව්යාපෘති අවම වශයෙන් ඒවායේ පරිමාණය නිසා සිත්ගන්නා සුළු විය හැකිය. දෙවනුව, “1C: Enterprise” යනු අනුවර්තනය කළ හැකි, “කොටු කළ” නිෂ්පාදනයක් වන අතර, Habré හි එවැනි වර්ධනයන් පිළිබඳ ලිපි ඇත්තේ ඉතා ස්වල්පයකි. වෙනත් කණ්ඩායම් සහ සමාගම්වල ජීවිතය කෙසේ දැයි දැන ගැනීම ද සැමවිටම සිත්ගන්නා කරුණකි.

එහෙනම් අපි පටන් ගනිමු. මෙම ලිපියෙන් අපි ක්‍රියාත්මක කිරීමේදී ගැඹුරින් කිමිදීමකින් තොරව වේදිකාවේ භාවිතා කරන සමහර තාක්ෂණයන් පිළිබඳ දළ විශ්ලේෂණයක් සහ භූ දර්ශනය ගෙනහැර දක්වමු. ඇත්ත වශයෙන්ම, බොහෝ යාන්ත්රණ සඳහා, සවිස්තරාත්මක කථාවක් සඳහා වෙනම ලිපියක් අවශ්ය වනු ඇත, සහ සමහරක් සඳහා, සම්පූර්ණ පොතක්!
ආරම්භ කිරීම සඳහා, මූලික කරුණු තීරණය කිරීම වටී - 1C: ව්‍යවසාය වේදිකාව යනු කුමක්ද සහ එය සමන්විත වන්නේ කුමන සංරචක වලින්ද යන්නයි. මෙම ප්‍රශ්නයට පිළිතුර එතරම් සරල නැත, මන්ද “වේදිකාව” යන යෙදුම (සංක්ෂිප්තභාවය සඳහා, අපි එය එසේ හඳුන්වමු) ව්‍යාපාරික යෙදුම්, ධාවන කාල පරිසරයක් සහ පරිපාලන මෙවලම් සංවර්ධනය කිරීමේ මාධ්‍යයක් අදහස් කරයි. පහත සඳහන් සංරචක දළ වශයෙන් වෙන්කර හඳුනාගත හැකිය:

  • සේවාදායක පොකුර
  • http සහ එහිම ද්විමය ප්‍රොටෝකෝලය හරහා සේවාදායකයට සම්බන්ධ වීමේ හැකියාව ඇති "තුනී" සේවාදායකයා
  • දෘඪ තැටියක හෝ ජාල ෆෝල්ඩරයක පිහිටා ඇති දත්ත සමුදායක් සහිත ද්වි-ස්ථර ගෘහ නිර්මාණ ශිල්පයක වැඩ කිරීම සඳහා සේවාදායකයා
  • වෙබ් සේවාදායකයා
  • යෙදුම් සේවාදායක පරිපාලන මෙවලම්
  • සංවර්ධන පරිසරය (Configator ලෙස හැඳින්වේ)
  • iOS, Android සහ Windows Phone සඳහා ධාවන කාල පරිසරය (ජංගම වේදිකාව 1C)

මෙම සියලුම කොටස්, වෙබ් සේවාදායකයා හැර, C++ වලින් ලියා ඇත. මීට අමතරව, මෑතකදී නිවේදනය කර ඇත නව පරම්පරාවේ වින්‍යාසකරු, ජාවා වලින් ලියා ඇත.

දේශීය යෙදුම්

දේශීය යෙදුම් සංවර්ධනය කිරීමට C++03 භාවිතා කරයි. Windows සඳහා, Microsoft Visual C++ 12 (Windows XP සමඟ අනුකූල පැතිකඩක්) සම්පාදකයක් ලෙස භාවිතා කරන අතර Linux සහ Android සඳහා - gcc 4.8, iOS සඳහා - clang 5.0. භාවිතා කරන සම්මත පුස්තකාලය සියලුම මෙහෙයුම් පද්ධති සහ සම්පාදක සඳහා සමාන වේ - STLPort. මෙම විසඳුම STL ක්රියාත්මක කිරීමේ විශේෂිත දෝෂ වල සම්භාවිතාව අඩු කරයි. STLPort අත්හිටුවා ඇති බැවින් සහ gcc හි C++11 සක්‍රීය මාදිලිය සමඟ නොගැලපෙන බැවින්, අපි දැනට CLang සමඟින් නැව්ගත කරන ලද STL ක්‍රියාත්මක කිරීම වෙත සංක්‍රමණය වීමට සැලසුම් කරමින් සිටිමු.
සේවාදායකයේ කේත පදනම 99% පොදු වේ, සේවාලාභියාගේ - 95%. එපමනක් නොව, ජංගම වේදිකාව පවා "විශාල" ලෙස එකම C ++ කේතය භාවිතා කරයි, නමුත් එහි ඒකාබද්ධ වීමේ ප්‍රතිශතය තරමක් අඩු ය.
බොහෝ C++ පරිශීලකයන් මෙන්, අපි භාෂාවේ සහ එහි පුස්තකාලවල හැකියාවන්ගෙන් 100% ක් භාවිතා කරන බව නොකියමු. එබැවින්, අපි ප්‍රායෝගිකව Boost භාවිතා නොකරන අතර, භාෂාවේ එක් අංගයක් වන්නේ ගතික ආකාරයේ වාත්තු කිරීමයි. ඒ සමගම, අපි ක්රියාශීලීව භාවිතා කරමු:

  • STL (විශේෂයෙන් නූල්, බහාලුම් සහ ඇල්ගොරිතම)
  • බහු උරුමය, ඇතුළුව. බහු ක්රියාත්මක කිරීමේ උරුමය
  • රටා
  • ව්යතිරේක
  • ස්මාර්ට් පොයින්ටර් (අභිරුචි ක්රියාත්මක කිරීම)

අතුරුමුහුණත්වල බහු උරුමය භාවිතා කිරීමෙන් (සම්පූර්ණයෙන්ම වියුක්ත පන්ති), සංරචක ආකෘතියක් හැකි වේ, එය පහත සාකච්ඡා කෙරේ.

සංරචක

මොඩියුලරිටි සහතික කිරීම සඳහා, සියලුම ක්‍රියාකාරීත්වය සංරචක වලට බෙදා ඇත, ඒවා ගතික පුස්තකාල (*.dll Windows සඳහා, *.so Linux සඳහා). මුළු සංරචක එකසිය පනහකට වඩා ඇත; ඒවායින් සමහරක් පිළිබඳ විස්තර මෙන්න:

බැකප් එකක්
වේදිකා පාර-දත්ත එන්ජිම අඩංගු වේ

උච්චාරණය
යෙදුම් සංවර්ධකයින් ගිණුම් වාර්තා ගොඩනැගීමට භාවිතා කරන වස්තු (ගිණුම් ප්‍රස්ථාර සහ ගිණුම් ලේඛන)

bsl
කාවැද්දූ භාෂා ක්‍රියාත්මක කිරීමේ එන්ජිම

න්යෂ්ටික බෝම්බය
මතක වෙන් කරන්නා අභිරුචි ක්‍රියාත්මක කිරීම

dbeng8
ගොනු දත්ත සමුදා එන්ජිම. සරල SQL ප්‍රොසෙසරයක් ද ඇතුළත් ISAM මත පදනම් වූ සරල ගොනු සේවාදායක දත්ත සමුදා එන්ජිමක්

wbase
වින්ඩෝස් පරිශීලක අතුරුමුහුණත ක්රියාත්මක කිරීම සඳහා මූලික පන්ති සහ කාර්යයන් අඩංගු වේ - කවුළු පන්ති, GDI ප්රවේශය, ආදිය.

බහු සංරචක වලට බෙදීම දෘෂ්ටි කෝණයකින් ප්‍රයෝජනවත් වේ:

  • වෙන්වීම වඩා හොඳ නිර්මාණයක් ප්‍රවර්ධනය කරයි, විශේෂයෙන්ම වඩා හොඳ කේත හුදකලා කිරීම
  • සංරචක සමූහයකින් ඔබට විවිධ බෙදා හැරීමේ විකල්ප නම්‍යශීලීව එකලස් කළ හැකිය:
    • උදාහරණයක් ලෙස, තුනී සේවාදායක ස්ථාපනයක wbase අඩංගු වේ, නමුත් පසුබිමක් නොමැත
    • නමුත් wbase සේවාදායකයේ, ඊට පටහැනිව, එය එසේ නොවේ
    • විකල්ප දෙකෙහිම නියුක් සහ බීඑස්එල් අඩංගු වේ

මෙම දියත් කිරීමේ විකල්පය සඳහා අවශ්‍ය සියලුම සංරචක වැඩසටහන ආරම්භ වන විට පටවනු ලැබේ. මෙය, විශේෂයෙන්ම, SCOM පන්ති ලියාපදිංචි කිරීම සඳහා අවශ්ය වේ, එය පහත සාකච්ඡා කරනු ඇත.

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 ක්‍රියාවලියක සංකල්පය වන අතර, එය සේවා ධාවනය සඳහා බහාලුමක් ලෙස සේවය කරයි (එනම්, Service Locator භූමිකාව ඉටු කරයි) සහ දේශීයකරණය කළ සම්පත් වලට බන්ධනයක් ද අඩංගු වේ. SCOM ක්‍රියාවලිය OS නූලට බැඳී ඇත. මෙයට ස්තූතියි, යෙදුම තුළ ඔබට මෙවැනි සේවාවන් ලබා ගත හැකිය:

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

තව ද, නූලකට බැඳුනු තාර්කික (SCOM) ක්‍රියාවලි මාරු කිරීමෙන්, ඔබට එකම නූල තුළ ක්‍රියාත්මක වන තොරතුරු අවකාශයේ දෘෂ්ටි කෝණයෙන් ප්‍රායෝගිකව ස්වාධීන යෙදුම් ලබා ගත හැකිය. අපගේ තුනී සේවාදායකයා ගොනු දත්ත ගබඩාවක් සමඟ ක්‍රියා කරන ආකාරය මෙයයි - එක් OS ක්‍රියාවලියක් තුළ SCOM ක්‍රියාවලි දෙකක් ඇත, එකක් සේවාදායකයා හා සම්බන්ධ වන අතර දෙවැන්න සේවාදායකය සමඟ. මෙම ප්‍රවේශය මඟින් දේශීය ගොනු දත්ත ගබඩාවේ සහ “සැබෑ” සේවාදායක-සේවාදායක අනුවාදයේ ක්‍රියා කරන කේත ලිවීම ඒකාබද්ධ කිරීමට අපට ඉඩ සලසයි. එවැනි ඒකාකාරිත්වය සඳහා මිල අධිකයි, නමුත් ප්රායෝගිකව පෙන්නුම් කරන්නේ එය වටින බවයි.

SCOM සංරචක ආකෘතිය මත පදනම්ව, ව්‍යාපාර තර්කනය සහ 1C: ව්‍යවසායයේ අතුරු මුහුණත යන දෙකම ක්‍රියාත්මක වේ.

පරිශීලක අතුරුමුහුණත

මාර්ගය වන විට, අතුරු මුහුණත් ගැන. අපි සම්මත වින්ඩෝස් පාලන භාවිතා නොකරමු; අපගේ පාලනයන් සෘජුවම Windows API මත ක්‍රියාත්මක වේ. ලිනක්ස් අනුවාදය සඳහා, wxWidgets පුස්තකාලය හරහා ක්‍රියා කරන ස්ථරයක් සාදා ඇත.
පාලන පුස්තකාලය 1C: Enterprise හි අනෙකුත් කොටස් මත රඳා නොපවතින අතර වෙනත් කුඩා අභ්‍යන්තර උපයෝගිතා කිහිපයකදී අප විසින් භාවිතා කරනු ලැබේ.

1C: Enterprise හි සංවර්ධනයේ වසර ගණනාවක් පුරා, පාලන වල පෙනුම වෙනස් වී ඇත, නමුත් මූලධර්මවල බරපතල වෙනසක් සිදු වූයේ 2009 දී 8.2 අනුවාදය නිකුත් කිරීම සහ “කළමනාකරණය කළ ආකෘති” පැමිණීමත් සමඟ එක් වරක් පමණි. පෙනුම වෙනස් කිරීමට අමතරව, ආකෘති සැකැස්මේ මූලධර්මය මූලික වශයෙන් වෙනස් වී ඇත - මූලද්‍රව්‍යවල ප්‍රවාහ පිරිසැලසුමට පක්ෂව මූලද්‍රව්‍ය පික්සෙල්-පික්සල් ස්ථානගත කිරීම ප්‍රතික්ෂේප කිරීමක් විය. මීට අමතරව, නව මාදිලියේ, පාලන ඩොමේන් වස්තු සමඟ සෘජුව ක්‍රියා නොකරයි, නමුත් විශේෂ DTOs (දත්ත හුවමාරු වස්තු).
මෙම වෙනස්කම් ජාවාස්ක්‍රිප්ට් පාලනවල C++ තර්කනය ප්‍රතිනිර්මාණය කරන 1C:Enterprise web client එකක් නිර්මාණය කිරීමට හැකි විය. අපි තුනී සහ වෙබ් සේවාදායකයන් අතර ක්‍රියාකාරී සමානාත්මතාවය පවත්වා ගැනීමට උත්සාහ කරමු. මෙය කළ නොහැකි අවස්ථාවන්හිදී, උදාහරණයක් ලෙස පවතින JavaScript API හි සීමාවන් හේතුවෙන් (උදාහරණයක් ලෙස, ගොනු සමඟ වැඩ කිරීමේ හැකියාව ඉතා සීමිතය), අපි බොහෝ විට C++ හි ලියා ඇති බ්‍රව්සර් දිගු භාවිතයෙන් අවශ්‍ය ක්‍රියාකාරිත්වය ක්‍රියාත්මක කරමු. අපි දැනට Internet Explorer සහ Microsoft Edge (Windows), Google Chrome (Windows), Firefox (Windows සහ Linux) සහ Safari (MacOS) සඳහා සහය දක්වයි.

මීට අමතරව, 1C වේදිකාවේ ජංගම යෙදුම් සඳහා අතුරු මුහුණතක් නිර්මාණය කිරීම සඳහා කළමනාකරණය කරන ලද ආකෘති තාක්ෂණය භාවිතා කරයි. ජංගම උපාංගවල, පාලන විදැහුම්කරණය මෙහෙයුම් පද්ධතියට ආවේණික තාක්ෂණයන් භාවිතයෙන් ක්‍රියාත්මක වේ, නමුත් පෝරම පිරිසැලසුම් තර්කනය සහ අතුරුමුහුණත් ප්‍රතිචාරය සඳහා, "විශාල" 1C: ව්‍යවසාය වේදිකාවේ ඇති කේතයම භාවිතා වේ.

වේදිකාව "1C: ව්යවසාය" - ආවරණය යටතේ ඇත්තේ කුමක්ද?
Linux OS හි 1C අතුරුමුහුණත

වේදිකාව "1C: ව්යවසාය" - ආවරණය යටතේ ඇත්තේ කුමක්ද?
ජංගම උපාංගයක 1C අතුරුමුහුණත

වෙනත් වේදිකාවල 1C අතුරුමුහුණත වේදිකාව "1C: ව්යවසාය" - ආවරණය යටතේ ඇත්තේ කුමක්ද?
Windows OS හි 1C අතුරුමුහුණත

වේදිකාව "1C: ව්යවසාය" - ආවරණය යටතේ ඇත්තේ කුමක්ද?
අතුරුමුහුණත 1C - වෙබ් සේවාදායකයා

විවෘත මූලාශ්ර

අපි වින්ඩෝස් (MFC, WinAPI වෙතින් පාලනය) යටතේ C++ සංවර්ධකයින් සඳහා සම්මත පුස්තකාල භාවිතා නොකළත්, අපි සියලු සංරචක අප විසින්ම ලියන්නේ නැත. පුස්තකාලය දැනටමත් සඳහන් කර ඇත wxWidgets, සහ අපි ද භාවිතා කරන්නේ:

  • කර්ල් HTTP සහ FTP සමඟ වැඩ කිරීම සඳහා.
  • OpenSSL ගුප්ත ලේඛන සමඟ වැඩ කිරීම සහ TLS සම්බන්ධතා ස්ථාපනය කිරීම සඳහා
  • libxml2 සහ libxslt XML විග්‍රහ කිරීම සඳහා
  • libetpan තැපැල් ප්‍රොටෝකෝල සමඟ වැඩ කිරීම සඳහා (POP3, SMTP, IMAP)
  • මිමෙටික් ඊමේල් පණිවිඩ විග්‍රහ කිරීමට
  • sqllite පරිශීලක ලොග ගබඩා කිරීම සඳහා
  • ICU ජාත්යන්තරකරණය සඳහා

ලැයිස්තුව ඉදිරියට යයි.
මීට අමතරව, අපි ඉතා වෙනස් කළ අනුවාදයක් භාවිතා කරමු ගූගල් පරීක්ෂණය и Google Mock ඒකක පරීක්ෂණ සංවර්ධනය කරන විට.
පුස්තකාලවලට SCOM සංරචක සංවිධාන ආකෘතියට අනුකූල වීමට අනුවර්තනය වීමට අවශ්‍ය විය.
1C හි පැතිරීම වේදිකාව එහි භාවිතා වන පුස්තකාල සඳහා විශිෂ්ට ශක්තියක් බවට පත් කරයි. විවිධ පරිශීලකයින් සහ අවස්ථා ඉතා කලාතුරකින් භාවිතා වන කේත ක්ෂේත්‍රවල පවා දෝෂ ඉක්මනින් හෙළි කරයි. අපි ඒවා අප විසින්ම නිවැරදි කර පුස්තකාල කතුවරුන්ට නැවත ලබා දීමට උත්සාහ කරමු. අන්තර්ක්‍රියා අත්දැකීම බෙහෙවින් වෙනස් ය.
සංවර්ධකයින් කර්ල් и libetpan අදින්න-ඉල්ලීම් වලට ඉක්මනින් ප්‍රතිචාර දක්වන්න, නමුත් පැච්, උදාහරණයක් ලෙස, in OpenSSL අපිට කවදාවත් ඒක ආපහු දෙන්න බැරි වුණා.

නිගමනය

ලිපියෙන් අපි 1C: ව්‍යවසාය වේදිකාවේ සංවර්ධනයේ ප්‍රධාන අංශ කිහිපයක් ස්පර්ශ කළෙමු. ලිපියේ සීමිත විෂය පථය තුළ, අපි ස්පර්ශ කළේ සමහර රසවත්, අපගේ මතය අනුව, පැති පමණි.
විවිධ වේදිකා යාන්ත්‍රණ පිළිබඳ සාමාන්‍ය විස්තරයක් සොයාගත හැකිය මෙහි.
ඉදිරි ලිපිවලදී ඔබට උනන්දුවක් දක්වන මාතෘකා මොනවාද?

1C ජංගම වේදිකාව ක්රියාත්මක වන්නේ කෙසේද?
වෙබ් සේවාදායකයාගේ අභ්‍යන්තර ව්‍යුහය පිළිබඳ විස්තරය?
එසේත් නැතිනම් නව නිකුතු සඳහා විශේෂාංග තෝරා ගැනීම, සංවර්ධනය කිරීම සහ පරීක්ෂා කිරීම පිළිබඳ ක්‍රියාවලිය ගැන ඔබ උනන්දු විය හැකිද?

අදහස් දැක්වීමේදී ලියන්න!

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න