Platform "1C: Enterprise" - he aha ka mea ma lalo o ka pā?

E Habr!
Ma kēia ʻatikala e hoʻomaka mākou i ka moʻolelo e pili ana i ka hana o loko kahua "1C:Enterprise 8" a he aha nā ʻenehana i hoʻohana ʻia i kona hoʻomohala ʻana.

Platform "1C: Enterprise" - he aha ka mea ma lalo o ka pā?

No ke aha mākou i manaʻo ai he mea hoihoi kēia? ʻO ka mea mua, no ka mea, ʻo ka 1C: Enterprise 8 platform kahi noi nui (ʻoi aku ma mua o 10 miliona mau laina code) ma C ++ (mea kūʻai aku, server, etc.), JavaScript (mea kūʻai aku pūnaewele), a, hou aku, A Iawa. Hiki ke hoihoi i nā papahana nui ma muli o ko lākou pālākiō, no ka mea, e kū mai ana nā pilikia i ʻike ʻole ʻia i loko o kahi waihona code liʻiliʻi me ka ikaika piha i ia mau papahana. ʻO ka lua, "1C:Enterprise" he huahana hou, "pahu", a he liʻiliʻi loa nā ʻatikala e pili ana i ia mau hanana ma Habré. He mea hoihoi nō hoʻi ke ʻike i ke ʻano o ke ola ma nā hui a me nā ʻoihana ʻē aʻe.

No laila e hoʻomaka kākou. Ma kēiaʻatikala e hāʻawi mākou i kahi hiʻohiʻona o kekahi o nā ʻenehana i hoʻohana ʻia i ka paepae a kuhikuhi i ka ʻāina, me ka ʻole o ka luʻu ʻana i ka hoʻokō. ʻOiaʻiʻo, no nā mīkini he nui, pono kahi moʻolelo kikoʻī i kahi ʻatikala kaʻawale, a no kekahi, he puke holoʻokoʻa!
I ka hoʻomaka ʻana, pono e hoʻoholo i nā mea maʻamau - he aha ka 1C: Enterprise platform a me nā ʻāpana o ia mea. ʻAʻole maʻalahi ka pane i kēia nīnau, no ka mea, ʻo ka huaʻōlelo "Platform" (no ka pōkole, e kapa mākou iā ia ʻo ia ala) e pili ana i kahi ala no ka hoʻomohala ʻana i nā noi ʻoihana, kahi kaiapuni holo, a me nā mea hana hoʻokele. Hiki ke hoʻokaʻawale ʻia nā ʻāpana i lalo:

  • pūʻulu kikowaena
  • Hiki i ka mea kūʻai aku "thin" ke hoʻopili i ke kikowaena ma o http a me kāna protocol binary ponoʻī
  • mea kūʻai aku no ka hana ʻana i kahi papa hana ʻelua me kahi waihona i loaʻa ma kahi paʻa paʻa a i ʻole waihona pūnaewele
  • mea kūʻai pūnaewele
  • nā mea hana hoʻokele kikowaena polokalamu
  • kaiapuni hoʻomohala (ʻike ʻia ʻo Configurator)
  • kaiapuni holo manawa no IOS, Android a me Windows Phone (pūnaewele kelepona 1C)

Ua kākau ʻia kēia mau ʻāpana āpau, koe wale ka mea kūʻai aku ma C++. Eia kekahi, aia ka mea i hoʻolaha hou ʻia Mea hoʻonohonoho hanauna hou, kākau ʻia ma Java.

Nā polokalamu ʻōiwi

Hoʻohana ʻia ʻo C++03 e hoʻomohala i nā noi maoli. No Windows, hoʻohana ʻia ʻo Microsoft Visual C++ 12 (kahi ʻōlelo pili me Windows XP) ma ke ʻano he compiler, a no Linux a me Android - gcc 4.8, no iOS - clang 5.0. ʻO ka waihona maʻamau i hoʻohana ʻia he like ia no nā ʻōnaehana hana a me nā mea hoʻopili - STLPort. Hoʻemi kēia hoʻonā i ka likelika o nā hewa kikoʻī hoʻokō STL. Ke hoʻolālā nei mākou i kēia manawa e neʻe i ka hoʻokō STL i hoʻouna ʻia me CLang, no ka mea, ua hoʻopau ʻia ʻo STLPort a ʻaʻole kūpono me ke ʻano hana C++11 o gcc.
He 99% maʻamau ka waihona code o ka server, ʻo ka mea kūʻai aku - 95%. Eia kekahi, ʻo ke kahua kelepona hoʻohana i ka code C ++ like me ka "nui", ʻoiai ʻoi aku ka haʻahaʻa o ka pākēneka o ka hui ʻana.
E like me ka hapa nui o nā mea hoʻohana C++, ʻaʻole mākou e koi e hoʻohana i ka 100% o nā mana o ka ʻōlelo a me kāna mau waihona. No laila, ʻaʻole mākou e hoʻohana i ka Boost, a ʻo kekahi o nā hiʻohiʻona ʻōlelo ʻo ia ka hoʻolei ʻana i ke ʻano. I ka manawa like, hoʻohana ikaika mākou:

  • STL (nā aho, nā ipu a me nā algorithms)
  • hoʻoilina lehulehu, incl. hoʻoilina hoʻokō lehulehu
  • hoʻohālike
  • ʻokoʻa
  • nā kuhikuhi akamai (hoʻokō maʻamau)

Ma ka hoʻohana ʻana i nā hoʻoilina he nui o nā pilina (nā papa abstract holoʻokoʻa), hiki ke hiki ke hoʻohālikelike ʻia, e kūkākūkā ʻia ma lalo nei.

Nā Components

No ka hōʻoia ʻana i ka modularity, ua māhele ʻia nā hana āpau i nā ʻāpana, ʻo ia nā hale waihona puke (*.dll no Windows, *.so no Linux). ʻOi aku ma mua o hoʻokahi haneli a me kanalima mau ʻāpana; eia nā wehewehe ʻana o kekahi o lākou.

hoʻihoʻi
Loaʻa i ka ʻenekini metadata platform

accnt
Nā mea i hoʻohana ʻia e nā mea hoʻomohala noi no ke kūkulu ʻana i nā moʻolelo moʻohelu kālā (nā palapala o nā moʻokāki a me nā papa inoa helu helu)

bsl
ʻEnekini hoʻokō ʻōlelo i hoʻokomo ʻia

nuke
Hoʻokō maʻamau o ka hoʻokaʻawale hoʻomanaʻo

dbeng8
mīkini waihona waihona waihona. ʻO kahi mīkini waihona waihona waihona waihona maʻalahi e pili ana i ka ISAM, kahi pū kekahi mea hana SQL maʻalahi

wbase
Loaʻa nā papa kumu a me nā hana no ka hoʻokō ʻana i ka mea hoʻohana Windows - nā papa puka makani, ke komo ʻana o GDI, etc.

He mea pono ka hoʻokaʻawale ʻana i nā ʻāpana he nui mai kekahi mau manaʻo:

  • Hoʻoikaika ka hoʻokaʻawale ʻana i ka hoʻolālā maikaʻi, ʻoi aku ka maikaʻi o ka hoʻokaʻawale code
  • Mai kahi pūʻulu o nā ʻāpana hiki iā ʻoe ke hōʻuluʻulu i nā koho hoʻouna like ʻole:
    • No ka laʻana, loaʻa ka wbase i kahi hoʻonohonoho mea kūʻai lahilahi, akā ʻaʻole ia he backend
    • akā, ma ka wbase server, ma kahi ʻē, ʻaʻole ia
    • Loaʻa nā koho ʻelua i ka nuke a me bsl

Hoʻouka ʻia nā ʻāpana āpau i koi ʻia no kēia koho hoʻomaka ke hoʻomaka ka papahana. Pono kēia, no ka hoʻopaʻa inoa ʻana i nā papa SCOM, e kūkākūkā ʻia ma lalo nei.

SCOM

No ka decomposition ma kahi haʻahaʻa, hoʻohana ʻia ka ʻōnaehana SCOM, kahi waihona e like me ka manaʻo me ATL. No ka poʻe i hana ʻole me ATL, papa inoa pōkole mākou i nā mea nui a me nā hiʻohiʻona.
No kahi papa SCOM i hoʻolālā kūikawā ʻia:

  • Hāʻawi i nā ʻano hana hana e hiki ai iā ʻoe ke hana i kahi papa mai kahi ʻāpana ʻē aʻe me ka ʻike wale i kona inoa (me ka ʻole o ka hōʻike ʻana i ka hoʻokō)
  • Hāʻawi i kahi hoʻolālā kuhikuhi akamai helu kuhikuhi. ʻAʻole pono ke nānā lima ʻia ke ola o ka papa SCOM
  • ʻAe iā ʻoe e ʻike inā hoʻokō kekahi mea i kahi kikowaena kikoʻī a hoʻololi ʻokoʻa i kahi kuhikuhi i ka mea i kahi kuhikuhi i ka interface
  • E hana i kahi mea lawelawe i hiki ke loaʻa ma o ke ala get_service, etc.

No ka laʻana, hiki iā ʻoe ke wehewehe i kahi papa no ka heluhelu ʻana iā JSON (no ka laʻana, JSONStreamReader) ma ka ʻāpana json.dll.
Hiki ke hana ʻia nā papa a me nā manawa mai nā ʻāpana ʻē aʻe; pono lākou e hoʻopaʻa inoa ma ka mīkini SCOM:

SCOM_CLASS_ENTRY(JSONStreamReader)

E wehewehe ana kēia macro i kahi papa hoʻopaʻa leo static kūikawā, e kapa ʻia ka mea hana i ka wā e hoʻouka ʻia ai ka mea i loko o ka hoʻomanaʻo.
Ma hope o kēia, hiki iā ʻoe ke hana i kahi hiʻohiʻona o ia mea ma kahi ʻāpana ʻē aʻe:

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

No ke kākoʻo ʻana i nā lawelawe, hāʻawi ʻo SCOM i kahi ʻoihana hou a paʻakikī. ʻO ke kikowaena o ia ka manaʻo o kahi kaʻina hana SCOM, kahi pahu no ka holo ʻana i nā lawelawe (ʻo ia hoʻi, ke kuleana o Service Locator), a loaʻa pū kekahi i kahi paʻa i nā kumuwaiwai kūloko. Hoʻopili ʻia ke kaʻina hana SCOM i ka pae OS. Mahalo i kēia, i loko o ka noi hiki iā ʻoe ke loaʻa nā lawelawe e like me kēia:

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

Eia kekahi, ma ka hoʻololi ʻana i nā kaʻina logical (SCOM) i hoʻopaʻa ʻia i kahi kaula, hiki iā ʻoe ke kiʻi i nā noi kūʻokoʻa kūʻokoʻa mai ka manaʻo o ka wahi ʻike, e holo ana i loko o ka pae hoʻokahi. ʻO kēia ke ʻano o ka hana ʻana o kā mākou mea kūʻai lahilahi me kahi waihona waihona - i loko o kahi kaʻina OS ʻelua mau kaʻina SCOM, pili kekahi me ka mea kūʻai aku, a ʻo ka lua me ke kikowaena. ʻO kēia ala e hiki ai iā mākou ke hoʻohui i ke kākau ʻana o ke code e hana ʻelua ma ka waihona waihona waihona kūloko a ma ka ʻaoʻao "ʻoiaʻiʻo" client-server. ʻO ke kumukūʻai no ia ʻano like ʻole ma luna o ke poʻo, akā hōʻike ka hoʻomaʻamaʻa he kūpono ia.

Ma muli o ke kumu hoʻohālike SCOM, ua hoʻokō ʻia ka loiloi ʻoihana a me ka ʻāpana interface o 1C: Enterprise.

Mea hoʻohana pūnaewele

Ma ke ala, e pili ana i nā interface. ʻAʻole mākou hoʻohana i nā mana Windows maʻamau; ua hoʻokō pololei ʻia kā mākou mau mana ma ka Windows API. No ka mana Linux, ua hana ʻia kahi papa e hana ana ma o ka waihona wxWidgets.
ʻAʻole hilinaʻi ka waihona o nā mana i nā ʻāpana ʻē aʻe o 1C: Enterprise a hoʻohana ʻia e mākou i kekahi mau pono liʻiliʻi liʻiliʻi.

I loko o nā makahiki o ka hoʻomohala ʻana o 1C: Enterprise, ua loli ke ʻano o nā mana, akā ua hoʻololi ʻia kahi hoʻololi koʻikoʻi i nā loina, i ka makahiki 2009, me ka hoʻokuʻu ʻana o ka mana 8.2 a me ka hiki ʻana mai o nā "managed forms". Ma kahi o ka hoʻololi ʻana i ka hiʻohiʻona, ua loli maoli ke kumumanaʻo o ka hoʻolālā ʻano - aia ka hōʻole ʻana i ke kūlana pixel-by-pixel o nā mea e makemake ai i ka kahe-layout o nā mea. Eia kekahi, i ka hoʻohālike hou, ʻaʻole hana pololei nā mana me nā mea domain, akā me nā DTO kūikawā (Nā mea hoʻoili ʻikepili).
Ua hiki i kēia mau hoʻololi ke hana i kahi mea kūʻai pūnaewele 1C: Enterprise e hoʻopiʻi i ka loiloi C++ o nā mana JavaScript. Ke ho'āʻo nei mākou e mālama i ka like o ka hana ma waena o nā mea kūʻai aku a me ka pūnaewele. I nā hihia i hiki ʻole ai kēia, no ka laʻana ma muli o nā palena o ka JavaScript API i loaʻa (no ka laʻana, ka hiki ke hana me nā faila i kaupalena ʻia), hoʻokō pinepine mākou i ka hana pono me ka hoʻohana ʻana i nā hoʻonui polokalamu i kākau ʻia ma C++. Kākoʻo mākou iā Internet Explorer a me Microsoft Edge (Windows), Google Chrome (Windows), Firefox (Windows a me Linux) a me Safari (MacOS).

Eia kekahi, hoʻohana ʻia ka ʻenehana hana hoʻokele e hana i kahi interface no nā noi kelepona ma ka paepae 1C. Ma nā polokalamu kelepona, hoʻokō ʻia ka hoʻololi ʻana i nā mana me ka hoʻohana ʻana i nā ʻenehana maoli i ka ʻōnaehana hana, akā no ke ʻano hoʻolālā hoʻolālā a me ka pane o ka interface, hoʻohana ʻia ke code like e like me ka "nui" 1C: Enterprise platform.

Platform "1C: Enterprise" - he aha ka mea ma lalo o ka pā?
1C interface ma Linux OS

Platform "1C: Enterprise" - he aha ka mea ma lalo o ka pā?
1C interface ma kahi polokalamu kelepona

1C interface ma nā kahua ʻē aʻe Platform "1C: Enterprise" - he aha ka mea ma lalo o ka pā?
1C interface ma Windows OS

Platform "1C: Enterprise" - he aha ka mea ma lalo o ka pā?
Interface 1C - mea kūʻai pūnaewele

Open kumu

ʻOiai ʻaʻole mākou e hoʻohana i nā hale waihona puke maʻamau no nā mea hoʻomohala C++ ma lalo o Windows (MFC, nā mana mai WinAPI), ʻaʻole mākou e kākau i nā ʻāpana āpau iā mākou iho. Ua ʻōlelo ʻia ka waihona wxMakemake, a hoʻohana pū mākou:

  • hoʻohuli no ka hana me HTTP a me FTP.
  • OpenSSL no ka hana ʻana me ka cryptography a me ka hoʻokumu ʻana i nā pilina TLS
  • libxml2 a me libxslt no ka wehe ʻana i ka XML
  • libetpan no ka hana ʻana me nā protocol leka uila (POP3, SMTP, IMAP)
  • mimike e hoʻokaʻawale i nā leka uila
  • sqllite no ka mālama ʻana i nā moʻolelo hoʻohana
  • ICU no ka hoʻonaʻauao honua

Ke hele nei ka papa inoa.
Eia hou, hoʻohana mākou i kahi mana i hoʻololi nui ʻia Hōʻike Google и Google hoʻomāʻewaʻewa i ka hoʻomohala ʻana i nā hoʻokolohua ʻāpana.
Pono nā hale waihona puke i ka hoʻololi ʻana i kūpono me ke kumu hoʻohālike o ka hui ʻāpana SCOM.
ʻO ka laha ʻana o 1C e hoʻāʻo maikaʻi loa i ka paepae no nā hale waihona puke i hoʻohana ʻia i loko. Hōʻike koke nā ʻano mea hoʻohana a me nā hiʻohiʻona i nā hewa ma nā wahi i hoʻohana ʻole ʻia o ke code. Hoʻoponopono mākou iā mākou iho a hoʻāʻo e hoʻihoʻi iā lākou i nā mea kākau waihona. ʻOkoʻa loa ka ʻike o ka launa pū ʻana.
Nā mea hoʻolālā hoʻohuli и libetpan pane koke i ka huki-noi, akā, i ka patch, no ka laʻana, i OpenSSL ʻAʻole hiki iā mākou ke hoʻihoʻi.

hopena

Ma ka ʻatikala ua hoʻopā mākou i kekahi mau mea nui o ka hoʻomohala ʻana o ka 1C: Enterprise platform. Ma ka palena palena o ka ʻatikala, ua hoʻopā mākou i kekahi mau mea hoihoi, i ko mākou manaʻo, nā ʻano.
Hiki ke ʻike ʻia kahi wehewehe maʻamau o nā ʻano ʻenehana platform like ʻole maanei.
He aha nā kumuhana e hoihoi iā ʻoe i nā ʻatikala e hiki mai ana?

Pehea e hoʻokō ʻia ai ka 1C mobile platform?
ʻO ka wehewehe ʻana i ke ʻano o loko o ka mea kūʻai aku pūnaewele?
A i ʻole makemake paha ʻoe i ke kaʻina o ke koho ʻana i nā hiʻohiʻona no nā hoʻokuʻu hou, hoʻomohala a hoʻāʻo?

E kākau i nā manaʻo!

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka