இயங்குதளம் "1C: எண்டர்பிரைஸ்" - ஹூட்டின் கீழ் என்ன இருக்கிறது?

ஹே ஹப்ர்!
இந்த கட்டுரையில் அது எவ்வாறு உள்ளே செயல்படுகிறது என்பது பற்றிய கதையைத் தொடங்குவோம் இயங்குதளம் "1C:Enterprise 8" மற்றும் அதன் வளர்ச்சியில் என்ன தொழில்நுட்பங்கள் பயன்படுத்தப்படுகின்றன.

இயங்குதளம் "1C: எண்டர்பிரைஸ்" - ஹூட்டின் கீழ் என்ன இருக்கிறது?

இது ஏன் சுவாரஸ்யமானது என்று நினைக்கிறோம்? முதலாவதாக, 1C: Enterprise 8 இயங்குதளமானது C++ (கிளையன்ட், சர்வர் போன்றவை), ஜாவாஸ்கிரிப்ட் (வலை கிளையன்ட்) மற்றும் மிக சமீபத்தில், மற்றும் ஜாவா. பெரிய திட்டங்கள் குறைந்தபட்சம் அவற்றின் அளவின் காரணமாக சுவாரஸ்யமாக இருக்கலாம், ஏனெனில் ஒரு சிறிய குறியீட்டு தளத்தில் கண்ணுக்கு தெரியாத சிக்கல்கள் அத்தகைய திட்டங்களில் முழு சக்தியுடன் எழுகின்றன. இரண்டாவதாக, “1C:Enterprise” என்பது ஒரு பிரதியெடுக்கக்கூடிய, “பெட்டி” தயாரிப்பு ஆகும், மேலும் Habré இல் இத்தகைய முன்னேற்றங்கள் பற்றி மிகக் குறைவான கட்டுரைகள் உள்ளன. மற்ற அணிகள் மற்றும் நிறுவனங்களில் வாழ்க்கை எப்படி இருக்கிறது என்பதை அறிவது எப்போதும் சுவாரஸ்யமானது.

எனவே ஆரம்பிக்கலாம். இந்த கட்டுரையில், மேடையில் பயன்படுத்தப்படும் சில தொழில்நுட்பங்களின் கண்ணோட்டத்தை வழங்குவோம் மற்றும் செயல்படுத்துவதில் ஆழமாக மூழ்காமல் நிலப்பரப்பைக் கோடிட்டுக் காட்டுவோம். உண்மையில், பல வழிமுறைகளுக்கு, ஒரு விரிவான கதைக்கு ஒரு தனி கட்டுரை தேவைப்படும், சிலருக்கு முழு புத்தகமும் தேவைப்படும்!
தொடங்குவதற்கு, அடிப்படை விஷயங்களைத் தீர்மானிப்பது மதிப்பு - 1C: எண்டர்பிரைஸ் இயங்குதளம் என்ன, அது என்ன கூறுகளைக் கொண்டுள்ளது. இந்த கேள்விக்கான பதில் அவ்வளவு எளிதல்ல, ஏனென்றால் "பிளாட்ஃபார்ம்" (சுருக்கமாக, நாங்கள் அதை அப்படி அழைப்போம்) வணிக பயன்பாடுகள், இயக்க நேர சூழல் மற்றும் நிர்வாகக் கருவிகளை உருவாக்குவதற்கான வழிமுறையைக் குறிக்கிறது. பின்வரும் கூறுகளை தோராயமாக வேறுபடுத்தி அறியலாம்:

  • சர்வர் கிளஸ்டர்
  • http மற்றும் அதன் சொந்த பைனரி நெறிமுறை வழியாக சேவையகத்துடன் இணைக்கும் திறன் கொண்ட "மெல்லிய" கிளையன்ட்
  • ஹார்ட் டிரைவ் அல்லது நெட்வொர்க் கோப்புறையில் அமைந்துள்ள தரவுத்தளத்துடன் இரண்டு அடுக்கு கட்டமைப்பில் பணிபுரியும் கிளையன்ட்
  • இணைய வாடிக்கையாளர்
  • பயன்பாட்டு சேவையக நிர்வாக கருவிகள்
  • வளர்ச்சி சூழல் (கட்டமைப்பாளர் என அறியப்படுகிறது)
  • iOS, Android மற்றும் Windows Phone க்கான இயக்க நேர சூழல் (மொபைல் இயங்குதளம் 1C)

இந்த அனைத்து பகுதிகளும், வலை கிளையன்ட் தவிர, C++ இல் எழுதப்பட்டுள்ளன. கூடுதலாக, சமீபத்தில் அறிவிக்கப்பட்டது புதிய தலைமுறை கட்டமைப்பாளர், ஜாவாவில் எழுதப்பட்டது.

சொந்த பயன்பாடுகள்

சொந்த பயன்பாடுகளை உருவாக்க C++03 பயன்படுத்தப்படுகிறது. விண்டோஸுக்கு, மைக்ரோசாஃப்ட் விஷுவல் சி++ 12 (விண்டோஸ் எக்ஸ்பியுடன் இணக்கமான சுயவிவரம்) கம்பைலராகவும், லினக்ஸ் மற்றும் ஆண்ட்ராய்டுக்கு - ஜிசிசி 4.8, iOS க்கு - கிளாங் 5.0 க்கும் பயன்படுத்தப்படுகிறது. பயன்படுத்தப்படும் நிலையான நூலகம் அனைத்து இயக்க முறைமைகள் மற்றும் கம்பைலர்களுக்கும் ஒரே மாதிரியாக இருக்கும் - STLPort. இந்தத் தீர்வு STL செயல்படுத்தல்-குறிப்பிட்ட பிழைகளின் வாய்ப்பைக் குறைக்கிறது. STLPort நிறுத்தப்பட்டு, gccயின் C++11 இயக்கப்பட்ட பயன்முறையுடன் இணங்காததால், CLang மூலம் அனுப்பப்பட்ட STL செயலாக்கத்திற்கு மாற்றுவதற்கு நாங்கள் தற்போது திட்டமிட்டுள்ளோம்.
சேவையகத்தின் குறியீடு அடிப்படை 99% பொதுவானது, கிளையன்ட் - 95%. மேலும், மொபைல் இயங்குதளம் கூட அதே C++ குறியீட்டை "பெரிய" ஒன்றாகப் பயன்படுத்துகிறது, இருப்பினும் அங்கு ஒருங்கிணைப்பின் சதவீதம் ஓரளவு குறைவாக உள்ளது.
பெரும்பாலான C++ பயனர்களைப் போலவே, மொழி மற்றும் அதன் நூலகங்களின் 100% திறன்களைப் பயன்படுத்துவதாக நாங்கள் கூறவில்லை. எனவே, நாங்கள் நடைமுறையில் பூஸ்டைப் பயன்படுத்துவதில்லை, மேலும் மொழி அம்சங்களில் ஒன்று டைனமிக் டைப் காஸ்டிங் ஆகும். அதே நேரத்தில், நாங்கள் தீவிரமாகப் பயன்படுத்துகிறோம்:

  • STL (குறிப்பாக சரங்கள், கொள்கலன்கள் மற்றும் வழிமுறைகள்)
  • பல பரம்பரை, உட்பட. பல செயல்படுத்தல் பரம்பரை
  • வார்ப்புருக்கள்
  • விதிவிலக்குகள்
  • ஸ்மார்ட் சுட்டிகள் (விருப்ப செயல்படுத்தல்)

பல பரம்பரை இடைமுகங்களைப் பயன்படுத்துவதன் மூலம் (முற்றிலும் சுருக்க வகுப்புகள்), ஒரு கூறு மாதிரி சாத்தியமாகும், இது கீழே விவாதிக்கப்படும்.

கூறுகள்

மாடுலாரிட்டியை உறுதிப்படுத்த, அனைத்து செயல்பாடுகளும் கூறுகளாகப் பிரிக்கப்படுகின்றன, அவை டைனமிக் லைப்ரரிகள் (விண்டோஸுக்கு *.dll, லினக்ஸுக்கு *.so). மொத்தம் நூற்று ஐம்பதுக்கும் மேற்பட்ட கூறுகள் உள்ளன; அவற்றில் சிலவற்றின் விளக்கங்கள் இங்கே:

பின்தளம்
இயங்குதள மெட்டாடேட்டா எஞ்சினைக் கொண்டுள்ளது

உச்சரிப்பு
கணக்கியல் பதிவுகளை உருவாக்க பயன்பாட்டு உருவாக்குநர்கள் பயன்படுத்தும் பொருள்கள் (கணக்குகளின் விளக்கப்படங்கள் மற்றும் கணக்கியல் பதிவேடுகள்)

பிஎஸ்எல்
உட்பொதிக்கப்பட்ட மொழி செயலாக்க இயந்திரம்

அணு
நினைவக ஒதுக்கீட்டின் விருப்ப செயலாக்கம்

dbeng8
கோப்பு தரவுத்தள இயந்திரம். ISAM அடிப்படையிலான ஒரு எளிய கோப்பு சேவையக தரவுத்தள இயந்திரம், இதில் எளிய SQL செயலியும் அடங்கும்

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 செயல்முறையின் கருத்தாகும், இது சேவைகளை இயக்குவதற்கான கொள்கலனாக செயல்படுகிறது (அதாவது, சர்வீஸ் லொக்கேட்டரின் பாத்திரத்தை வகிக்கிறது), மேலும் உள்ளூர்மயமாக்கப்பட்ட ஆதாரங்களுடன் பிணைப்பைக் கொண்டுள்ளது. SCOM செயல்முறை OS நூலுடன் இணைக்கப்பட்டுள்ளது. இதற்கு நன்றி, பயன்பாட்டின் உள்ளே நீங்கள் இது போன்ற சேவைகளைப் பெறலாம்:

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

மேலும், ஒரு நூலுடன் இணைக்கப்பட்ட தருக்க (SCOM) செயல்முறைகளை மாற்றுவதன் மூலம், தகவல் இடத்தின் பார்வையில் இருந்து நடைமுறையில் சுயாதீனமான பயன்பாடுகளைப் பெறலாம், அதே நூலில் இயங்கும். எங்கள் மெல்லிய கிளையன்ட் ஒரு கோப்பு தரவுத்தளத்துடன் இவ்வாறு செயல்படுகிறது - ஒரு OS செயல்முறைக்குள் இரண்டு SCOM செயல்முறைகள் உள்ளன, ஒன்று கிளையண்டுடன் தொடர்புடையது மற்றும் இரண்டாவது சேவையகத்துடன். இந்த அணுகுமுறையானது, உள்ளூர் கோப்பு தரவுத்தளத்திலும், "உண்மையான" கிளையன்ட்-சர்வர் பதிப்பிலும் செயல்படும் குறியீட்டின் எழுத்தை ஒருங்கிணைக்க அனுமதிக்கிறது. அத்தகைய சீரான விலை மேல்நிலை, ஆனால் நடைமுறையில் அது மதிப்பு என்று காட்டுகிறது.

SCOM கூறு மாதிரியின் அடிப்படையில், வணிக தர்க்கம் மற்றும் 1C: Enterprise இன் இடைமுகப் பகுதி ஆகிய இரண்டும் செயல்படுத்தப்படுகின்றன.

பயனர் இடைமுகம்

மூலம், இடைமுகங்கள் பற்றி. நாங்கள் நிலையான விண்டோஸ் கட்டுப்பாடுகளைப் பயன்படுத்துவதில்லை; எங்கள் கட்டுப்பாடுகள் நேரடியாக Windows API இல் செயல்படுத்தப்படுகின்றன. லினக்ஸ் பதிப்பிற்கு, wxWidgets நூலகம் மூலம் வேலை செய்யும் ஒரு அடுக்கு உருவாக்கப்பட்டுள்ளது.
கட்டுப்பாடுகளின் நூலகம் 1C: Enterprise இன் பிற பகுதிகளைச் சார்ந்து இல்லை, மேலும் பல சிறிய உள் பயன்பாடுகளில் எங்களால் பயன்படுத்தப்படுகிறது.

1C: எண்டர்பிரைஸின் வளர்ச்சியின் ஆண்டுகளில், கட்டுப்பாடுகளின் தோற்றம் மாறிவிட்டது, ஆனால் 2009 இல் பதிப்பு 8.2 வெளியீடு மற்றும் "நிர்வகிக்கப்பட்ட படிவங்களின்" வருகையுடன் கொள்கைகளில் ஒரு தீவிர மாற்றம் ஏற்பட்டது. தோற்றத்தை மாற்றுவதைத் தவிர, படிவ தளவமைப்பின் கொள்கை அடிப்படையில் மாறிவிட்டது - உறுப்புகளின் ஓட்டம்-தளவமைப்புக்கு ஆதரவாக உறுப்புகளின் பிக்சல்-பை-பிக்சல் நிலைப்படுத்தல் நிராகரிக்கப்பட்டது. கூடுதலாக, புதிய மாடலில், கட்டுப்பாடுகள் நேரடியாக டொமைன் பொருள்களுடன் வேலை செய்யாது, ஆனால் சிறப்பு DTOகளுடன் (தரவு பரிமாற்ற பொருள்கள்).
இந்த மாற்றங்கள் ஜாவாஸ்கிரிப்ட் கட்டுப்பாடுகளின் 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 - வலை கிளையன்ட்

ஓப்பன் சோர்ஸ்

Windows (MFC, WinAPI இலிருந்து கட்டுப்பாடுகள்) கீழ் C++ டெவலப்பர்களுக்கான நிலையான நூலகங்களைப் பயன்படுத்தவில்லை என்றாலும், எல்லா கூறுகளையும் நாமே எழுதுவதில்லை. நூலகம் ஏற்கனவே குறிப்பிடப்பட்டுள்ளது wxWidgets, மேலும் நாங்கள் பயன்படுத்துகிறோம்:

பட்டியல் நீண்டு கொண்டே செல்கிறது.
கூடுதலாக, நாங்கள் மிகவும் மாற்றியமைக்கப்பட்ட பதிப்பைப் பயன்படுத்துகிறோம் கூகுள் சோதனை и கூகுள் மோக் அலகு சோதனைகளை உருவாக்கும் போது.
SCOM கூறு அமைப்பு மாதிரியுடன் இணக்கமாக இருக்க நூலகங்களுக்குத் தழுவல் தேவைப்பட்டது.
1C இன் பரவலானது மேடையில் பயன்படுத்தப்படும் நூலகங்களுக்கான வலிமைக்கான சிறந்த சோதனையாக அமைகிறது. பலவிதமான பயனர்கள் மற்றும் காட்சிகள் குறியீட்டின் மிகவும் அரிதாகப் பயன்படுத்தப்படும் பகுதிகளில் கூட பிழைகளை விரைவாக வெளிப்படுத்துகின்றன. அவற்றை நாமே சரிசெய்து, நூலக ஆசிரியர்களிடம் திருப்பிக் கொடுக்க முயற்சிக்கிறோம். தொடர்பு அனுபவம் மிகவும் வித்தியாசமாக மாறிவிடும்.
உருவாக்குநர்கள் சுருட்டை и சுதந்திரம் இழுத்தல்-கோரிக்கைகளுக்கு விரைவாக பதிலளிக்கவும், ஆனால் இணைப்பு, எடுத்துக்காட்டாக, இல் பிஎச்பி நாங்கள் அதை திரும்ப கொடுக்க முடியவில்லை.

முடிவுக்கு

கட்டுரையில் 1C: எண்டர்பிரைஸ் தளத்தின் வளர்ச்சியின் பல முக்கிய அம்சங்களை நாங்கள் தொட்டோம். கட்டுரையின் வரையறுக்கப்பட்ட நோக்கத்தில், சில சுவாரஸ்யமான, எங்கள் கருத்தில், அம்சங்களை மட்டுமே நாங்கள் தொட்டோம்.
பல்வேறு இயங்குதள வழிமுறைகளின் பொதுவான விளக்கத்தைக் காணலாம் இங்கே.
எதிர்கால கட்டுரைகளில் உங்களுக்கு ஆர்வமாக இருக்கும் தலைப்புகள் என்ன?

1C மொபைல் இயங்குதளம் எவ்வாறு செயல்படுத்தப்படுகிறது?
இணைய கிளையண்டின் உள் கட்டமைப்பின் விளக்கம்?
அல்லது புதிய வெளியீடுகளுக்கான அம்சங்களைத் தேர்ந்தெடுப்பது, மேம்படுத்துதல் மற்றும் சோதனை செய்வது போன்ற செயல்களில் நீங்கள் ஆர்வமாக உள்ளீர்களா?

கருத்துகளில் எழுதுங்கள்!

ஆதாரம்: www.habr.com

கருத்தைச் சேர்