Platform "1C: Enterprise" - kedu ihe dị n'okpuru mkpuchi?

Ndewo, Habr!
N'isiokwu a, anyị ga-amalite akụkọ banyere otú o si arụ ọrụ n'ime ikpo okwu "1C: Enterprise 8" na ihe teknụzụ eji eme ihe na mmepe ya.

Platform "1C: Enterprise" - kedu ihe dị n'okpuru mkpuchi?

Gịnị mere anyị ji chee na nke a na-adọrọ mmasị? Mbụ, n'ihi na 1C: Enterprise 8 ikpo okwu bụ nnukwu (ihe karịrị 10 nde ahịrị nke koodu) ngwa na C ++ ( ahịa, ihe nkesa, wdg), Javascript (web ahịa), na, ọzọ na nso nso, Na Java. Nnukwu ọrụ nwere ike ịmasị ma ọ dịkarịa ala n'ihi ọnụ ọgụgụ ha, n'ihi na okwu ndị a na-adịghị ahụ anya na obere koodu koodu na-ebili n'ụzọ zuru ezu na ọrụ ndị dị otú ahụ. Nke abuo, "1C:Enterprise" bụ ngwaahịa a na-emegharị emegharị, "igbe igbe", ma enwere akụkọ ole na ole gbasara ụdị mmepe na Habré. Ọ na-atọkwa ụtọ mgbe niile ịmara otú ndụ dị na otu na ụlọ ọrụ ndị ọzọ.

Ya mere, ka anyị malite. N'isiokwu a, anyị ga-enye nkọwa nke ụfọdụ teknụzụ ndị a na-eji na ikpo okwu na-akọwapụta ọdịdị ala, na-enweghị mmiri miri emi na mmejuputa ya. N'ezie, maka ọtụtụ usoro, akụkọ zuru ezu ga-achọ isiokwu dị iche, na maka ụfọdụ, akwụkwọ dum!
Iji malite, ọ bara uru ikpebi ihe ndị bụ isi - ihe 1C: nyiwe ụlọ ọrụ bụ yana ihe mejupụtara ya. Azịza nke ajụjụ a adịghị mfe, n'ihi na okwu ahụ bụ "Platform" (maka nkenke, anyị ga-akpọ ya otú ahụ) na-ezo aka n'ụzọ maka ịmepụta ngwa azụmahịa, gburugburu oge ịgba ọsọ, na ngwá ọrụ nchịkwa. Enwere ike ịwapụta ihe ndị na-esonụ:

  • ụyọkọ nkesa
  • Onye ahịa “dị mkpa” nwere ike ijikọ na sava ahụ site na http na usoro ọnụọgụ abụọ nke ya
  • onye ahịa maka ịrụ ọrụ n'ime ụlọ okpukpu abụọ nwere nchekwa data dị na draịvụ ike ma ọ bụ nchekwa netwọkụ
  • onye ahịa weebụ
  • ngwa ihe nkesa nchịkwa ngwaọrụ
  • gburugburu mmepe (nke a maara dị ka Configurator)
  • gburugburu oge ịgba ọsọ maka iOS, gam akporo na Windows Phone (mkpo okwu mkpanaka 1C)

Akụkụ ndị a niile, ewezuga onye ahịa weebụ, ka edere na C++. Na mgbakwunye, enwere ọkwa ọkwa na nso nso a Ọgbọ ọhụrụ nhazi, nke e dere na Java.

Ngwa ala

A na-eji C++03 mepụta ngwa ala. Maka Windows, a na-eji Microsoft Visual C++ 12 (profaịlụ dakọtara na Windows XP) dị ka ihe nchịkọta, yana maka Linux na gam akporo - gcc 4.8, maka iOS - clang 5.0. Ọbá akwụkwọ ọkọlọtọ eji bụ otu maka sistemụ arụmọrụ na ndị na-achịkọta - STLPort. Ihe ngwọta a na-ebelata ohere nke mmejuputa STL-kpọmkwem njehie. Anyị na-eme atụmatụ ịkwaga na mmejuputa STL ejiri CLang bufee, ebe STLPort kwụsịrị yana ekwekọghị na gcc's C++11 mode nyeere.
Ntọala koodu nke ihe nkesa bụ 99% nkịtị, nke onye ahịa - 95%. Ọzọkwa, ọbụna mobile n'elu ikpo okwu na-eji otu C ++ koodu dị ka "nnukwu" otu, ọ bụ ezie na pasent nke ịdị n'otu e nwere dịtụ ala.
Dịka ọtụtụ ndị ọrụ C++, anyị anaghị ekwu na anyị na-eji 100% nke ike asụsụ na ọba akwụkwọ ya. Yabụ, anyị anaghị eji Boost eme ihe, otu n'ime njirimara asụsụ bụ nkedo ụdị ike. N'otu oge ahụ, anyị na-arụsi ọrụ ike:

  • STL (kpọmkwem eriri, arịa na algọridim)
  • otutu ihe nketa, gụnyere. otutu mmejuputa ihe nketa
  • usoro
  • ewezuga
  • smart pointers (mmejuputa omenala)

Site n'iji otutu ihe nketa nke ihu (klaasị zuru oke), ụdị akụrụngwa ga-ekwe omume, nke a ga-atụle n'okpuru.

Akụkụ

Iji hụ na modularity, arụ ọrụ niile kewara n'ime akụrụngwa, nke bụ ọba akwụkwọ dị ike (* .dll maka Windows, * .so maka Linux). Enwere ihe karịrị otu narị ngwa na iri ise na mkpokọta; ebe a bụ nkọwa nke ụfọdụ n'ime ha:

backend
Nwere igwe metadata ikpo okwu

accnt
Ihe ndị mmepe ngwa na-eji wuo ndekọ ndekọ ego (akara ngosi akaụntụ na ndekọ ndekọ ego)

bsl
Injin ogbugbu asụsụ agbakwunyere

nuke
Omenala mmejuputa iwu nke ebe nchekwa ihe

dbeng8
Injin nchekwa data faịlụ. Igwe nchekwa data nkesa faịlụ dị mfe dabere na ISAM, nke gụnyekwara ihe nrụpụta SQL dị mfe

wbase
Nwere klaasị na ọrụ ntọala maka mmejuputa interface onye ọrụ Windows - klaasị windo, ohere GDI, wdg.

Ịkekọrịta n'ọtụtụ akụkụ bara uru site n'ọtụtụ echiche:

  • Nkewa na-akwalite nhazi ka mma, ọkachasị mwepu koodu ka mma
  • Site n'usoro nke akụrụngwa ị nwere ike na-agbanwe agbanwe na-achịkọta nhọrọ nnyefe dị iche iche:
    • Dịka ọmụmaatụ, nrụnye ndị ahịa dị mkpa ga-enwe wbase, mana ọ gaghị enwe azụ azụ
    • mana na sava wbase, n'ụzọ megidere ya, ọ gaghị adị
    • nhọrọ abụọ a ga-enwekwa nuke na bsl

A na-ebunye akụrụngwa niile achọrọ maka nhọrọ mmalite a mgbe mmemme malitere. Nke a, karịsịa, dị mkpa maka ịdenye aha klas SCOM, nke a ga-atụle n'okpuru.

SCOM

Maka ire ere na ọkwa dị ala, a na-eji usoro SCOM, ọbá akwụkwọ yiri nke echiche na ATL. Maka ndị na-arụ ọrụ na ATL, anyị na-edepụta nkenke ike na njirimara ndị bụ isi.
Maka klaasị SCOM emebere nke ọma:

  • Na-enye ụzọ ụlọ ọrụ mmepụta ihe nke na-enye gị ohere ịmepụta klaasị site na mpaghara ọzọ mara naanị aha ya (na-egosighi mmejuputa ya)
  • Na-enye akụrụngwa nrụtụ aka na-agụta smart pointer. Ọ dịghị mkpa ka ejiri aka nyochaa oge ndụ klaasị SCOM
  • Na-enye gị ohere ịchọpụta ma ihe na-eme ihe na-eme otu interface ma gbanwee pointer na ihe ahụ na-egosi ihe na interface ahụ na-akpaghị aka.
  • Mepụta ihe ọrụ a na-enweta mgbe niile site na usoro get_service, wdg.

Dịka ọmụmaatụ, ị nwere ike ịkọwa otu klas maka ịgụ JSON (dịka ọmụmaatụ, JSONStreamReader) na mpaghara json.dll.
Enwere ike ịmepụta klaasị na ihe atụ site na akụrụngwa ndị ọzọ; ha kwesịrị ka edebanye aha ha na igwe SCOM:

SCOM_CLASS_ENTRY(JSONStreamReader)

Nke a nnukwu ga-akọwa ihe pụrụ iche static ndekọ klas, onye na-ewu ya ga-akpọ mgbe a na-ebunye akụrụngwa n'ime ebe nchekwa.
Mgbe nke a gasịrị, ị nwere ike ịmepụta ihe atụ ya na mpaghara ọzọ:

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

Iji kwado ọrụ, SCOM na-enye akụrụngwa mgbakwunye, kama mgbagwoju anya. N'ime ya bụ echiche nke usoro SCOM, nke na-eje ozi dị ka akpa maka ọrụ na-agba ọsọ (ya bụ, na-arụ ọrụ nke Ọrụ Locator), yana nwekwara njikọ na akụrụngwa mpaghara. Ejikọtara usoro SCOM na eri OS. N'ihi nke a, n'ime ngwa ị nwere ike ịnweta ọrụ dịka nke a:

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

Ọzọkwa, site n'ịgbanwe usoro ezi uche (SCOM) nke ejikọtara na eri, ị nwere ike nweta ngwa ndị nwere onwe ha site na echiche nke oghere ozi, na-agba n'ime otu eri ahụ. Nke a bụ otu onye ahịa anyị siri arụ ọrụ na nchekwa data faịlụ - n'ime otu usoro OS enwere usoro SCOM abụọ, nke jikọtara ya na onye ahịa, yana nke abụọ na sava ahụ. Usoro a na-enye anyị ohere ijikọ ederede koodu nke ga-arụ ọrụ ma na nchekwa data faịlụ mpaghara yana na ụdị "ezigbo" nke ndị ahịa-nkesa. Ọnụ ego maka ịdị n'otu dị otú ahụ dị elu, mana omume na-egosi na ọ bara uru.

Dabere na ụdị akụrụngwa SCOM, ma echiche azụmaahịa yana akụkụ interface nke 1C: Enterprise na-emejuputa atumatu.

Obere nyocha onye ọrụ

Site n'ụzọ, banyere interfaces. Anyị anaghị eji njikwa Windows ọkọlọtọ; a na-emejuputa njikwa anyị ozugbo na Windows API. Maka ụdị Linux, emela oyi akwa na-arụ ọrụ site na ọba akwụkwọ wxWidgets.
Ọbá akwụkwọ njikwa anaghị adabere n'akụkụ ndị ọzọ nke 1C: Enterprise na anyị na-eji ya n'ọtụtụ obere ihe ndị ọzọ dị n'ime.

N'ime afọ nke mmepe nke 1C: Enterprise, ọdịdị nke njikwa agbanweela, ma mgbanwe dị ukwuu na ụkpụrụ mere naanị otu ugboro, na 2009, na ntọhapụ nke 8.2 version na ọbịbịa nke "ejisiri ụdị". Na mgbakwunye na ịgbanwe ọdịdị ahụ, ụkpụrụ nke nhazi ụdị agbanweela n'ụzọ bụ isi - enwere njụjụ nke ntinye pixel-site-pixel nke ihe na-akwado usoro nhazi nke ihe. Na mgbakwunye, na ụdị ọhụrụ ahụ, njikwa anaghị arụ ọrụ ozugbo na ihe ngalaba, mana na DTO pụrụ iche (Ihe Nyefe Data).
Mgbanwe ndị a mere ka o kwe omume ịmepụta onye ahịa weebụ 1C:Enterprise nke na-emegharị mgbagha C++ nke njikwa Javascript. Anyị na-agbalị ịnọgide na-arụ ọrụ nhata n'etiti mkpa na webụ ahịa. N'ọnọdụ ebe nke a na-agaghị ekwe omume, dịka ọmụmaatụ n'ihi njedebe nke Javascript API dị (dịka ọmụmaatụ, ike iji faịlụ rụọ ọrụ dị oke), anyị na-ejikarị arụ ọrụ dị mkpa na-eji ihe nchọgharị edere na C++. Anyị na-akwado Internet Explorer na Microsoft Edge (Windows), Google Chrome (Windows), Firefox (Windows na Linux) na Safari (MacOS).

Na mgbakwunye, a na-eji teknụzụ ụdị ejiri emepụta ihe maka ngwa mkpanaka n'elu ikpo okwu 1C. Na ngwaọrụ mkpanaaka, a na-emejuputa njikwa njikwa site na iji teknụzụ sitere na sistemụ arụmọrụ, mana maka mgbanaka okirikiri nhọrọ ukwuu na nzaghachi interface, a na-eji otu koodu ahụ dị ka “nnukwu” 1C: nyiwe ụlọ ọrụ.

Platform "1C: Enterprise" - kedu ihe dị n'okpuru mkpuchi?
1C interface na Linux OS

Platform "1C: Enterprise" - kedu ihe dị n'okpuru mkpuchi?
1C interface na ekwentị mkpanaaka

1C interface na nyiwe ndị ọzọ Platform "1C: Enterprise" - kedu ihe dị n'okpuru mkpuchi?
1C interface na Windows OS

Platform "1C: Enterprise" - kedu ihe dị n'okpuru mkpuchi?
Interface 1C - onye ahịa weebụ

emeghe isi

Agbanyeghị na anyị anaghị eji ọba akwụkwọ ọkọlọtọ maka ndị mmepe C ++ n'okpuru Windows (MFC, njikwa sitere na WinAPI), anyị anaghị ede ihe niile n'onwe anyị. Ekwupụtalarị ọbá akwụkwọ ahụ wxWijetị, ma anyị na-ejikwa:

  • curl maka ịrụ ọrụ na HTTP na FTP.
  • OpenSSL maka ịrụ ọrụ na cryptography na guzobe njikọ TLS
  • libxml2 na libxslt maka nyocha XML
  • libetpan maka ịrụ ọrụ na usoro mail (POP3, SMTP, IMAP)
  • na-e .omi itule ozi email
  • sqlite maka ịchekwa ndekọ onye ọrụ
  • ICU maka mba ụwa

Ndepụta na-aga n'ihu.
Ọzọkwa, anyị na-eji ụdị emegharịrị nke ukwuu Nnwale Google и Google Mock mgbe na-emepe emepe unit ule.
Ụlọ ọba akwụkwọ chọrọ mmegharị ka ọ dakọtara na ụdị nhazi akụrụngwa SCOM.
Ọgbasa nke 1C na-eme ka ikpo okwu bụrụ ezigbo nnwale nke ike maka ọba akwụkwọ ndị ejiri na ya. Ndị ọrụ dị iche iche na ọnọdụ dị iche iche na-ekpughe njehie ngwa ngwa na mpaghara koodu anaghị adịkarị eji. Anyị na-agbazi ha n'onwe anyị ma na-agbalị ịnyeghachi ha ndị ode akwụkwọ ọbá akwụkwọ. Ahụmahụ nke mmekọrịta na-apụta dị nnọọ iche.
Ndị mmepe curl и libetpan zaghachi ngwa ngwa maka ịdọrọ arịrịọ, mana patch ahụ, dịka ọmụmaatụ, n'ime OpenSSL Ọ dịghị mgbe anyị jisiri ike nyeghachi ya.

nkwubi

N'isiokwu ahụ, anyị emetụla ọtụtụ akụkụ nke mmepe nke 1C: Enterprise platform. N'ime oke edemede nke isiokwu a, anyị emetụla naanị akụkụ ụfọdụ na-adọrọ mmasị, n'echiche anyị, akụkụ.
Enwere ike ịchọta nkọwa zuru oke nke usoro ikpo okwu dị iche iche ebe a.
Kedu isiokwu ga-amasị gị n'isiokwu ndị dị n'ihu?

Kedu otu esi etinye usoro mkpanaka 1C?
Nkọwa nke nhazi ime nke onye ahịa weebụ?
Ma ọ bụ ma eleghị anya, ị nwere mmasị na usoro nke ịhọrọ atụmatụ maka mwepụta ọhụrụ, mmepe na ule?

Dee na nkọwa!

isi: www.habr.com

Tinye a comment