Platform "1C: Enterprise" - ndi chiyani chomwe chili pansi pa hood?

Pa Habr!
M'nkhaniyi tiyamba nkhani ya momwe zimagwirira ntchito mkati nsanja "1C:Enterprise 8" ndi matekinoloje ati omwe amagwiritsidwa ntchito pakukula kwake.

Platform "1C: Enterprise" - ndi chiyani chomwe chili pansi pa hood?

N’chifukwa chiyani tikuganiza kuti zimenezi n’zosangalatsa? Choyamba, chifukwa nsanja ya 1C:Enterprise 8 ndi pulogalamu yayikulu (mizere yopitilira 10 miliyoni) mu C++ (kasitomala, seva, ndi zina), JavaScript (kasitomala wapaintaneti), ndipo posachedwa, Ndipo Java. Ma projekiti akuluakulu amatha kukhala osangalatsa chifukwa cha kuchuluka kwawo, chifukwa nkhani zomwe siziwoneka pamakina ang'onoang'ono zimatuluka mwamphamvu m'mapulojekiti oterowo. Kachiwiri, "1C:Enterprise" ndi chinthu chongobwerezabwereza, "chopangidwa ndi bokosi", ndipo pali zolemba zochepa zokhuza izi pa Habré. Zimakhalanso zosangalatsa nthawi zonse kudziwa momwe moyo ulili m'magulu ena ndi makampani.

Choncho tiyeni tiyambe. M'nkhaniyi tifotokoza mwachidule za matekinoloje ena omwe amagwiritsidwa ntchito papulatifomu ndikuwonetsa malo, osadumphira mozama pakukhazikitsa. Zowonadi, pamakina ambiri, nkhani yatsatanetsatane ingafune nkhani ina, ndipo kwa ena, buku lathunthu!
Poyamba, ndi bwino kusankha pa zinthu zofunika - kuti 1C:Enterprise nsanja ndi chiyani ndi zigawo zake. Yankho la funsoli silophweka, chifukwa mawu oti "Platform" (mwachidule, tidzayitcha motere) amatanthauza njira yopangira ntchito zamabizinesi, malo ogwiritsira ntchito nthawi, ndi zida zoyendetsera. Zigawo zotsatirazi zitha kusiyanitsa pafupifupi:

  • gulu la seva
  • Makasitomala "woonda" omwe amatha kulumikizana ndi seva kudzera pa http ndi protocol yake ya binary
  • kasitomala pogwira ntchito yomanga yamitundu iwiri yokhala ndi database yomwe ili pa hard drive kapena foda ya netiweki
  • web kasitomala
  • zida zoyendetsera seva
  • malo otukuka (otchedwa Configurator)
  • malo othamanga a iOS, Android ndi Windows Phone (pulatifomu yam'manja 1C)

Magawo onsewa, kupatula kasitomala wapaintaneti, amalembedwa mu C++. Kuphatikiza apo, pali zomwe zalengezedwa posachedwa Mbadwo watsopano configurator, yolembedwa mu Java.

Mapulogalamu amtundu

C++03 imagwiritsidwa ntchito kupanga mapulogalamu akomweko. Kwa Windows, Microsoft Visual C++ 12 (mbiri yogwirizana ndi Windows XP) imagwiritsidwa ntchito ngati compiler, ndi Linux ndi Android - gcc 4.8, ya iOS - clang 5.0. Laibulale yokhazikika yomwe imagwiritsidwa ntchito ndi yofanana pamakina onse ogwiritsira ntchito ndi ophatikiza - STLPort. Yankholi limachepetsa kuthekera kwa zolakwika za kukhazikitsa kwa STL. Pakali pano tikukonzekera kusamukira ku STL kukhazikitsa komwe kumatumiza ndi Clang, popeza STLPort yathetsedwa ndipo ndiyosemphana ndi mawonekedwe a gcc C++11.
Ma code a seva ndi 99% wamba, kasitomala - 95%. Komanso, ngakhale nsanja yam'manja imagwiritsa ntchito kachidindo komweko ka C ++ ngati "yayikulu", ngakhale kuchuluka kwa mgwirizano komweko kuli kochepa.
Monga ogwiritsa ntchito ambiri a C++, sitinena kuti timagwiritsa ntchito 100% ya kuthekera kwa chilankhulo ndi malaibulale ake. Chifukwa chake, sitigwiritsa ntchito Boost, ndipo chimodzi mwazinenelo zake ndikusintha kwamitundu. Nthawi yomweyo, timagwiritsa ntchito mwachangu:

  • STL (makamaka zingwe, zotengera ndi ma aligorivimu)
  • multiple cholowa, kuphatikizapo. zambiri kukhazikitsa cholowa
  • mawonekedwe
  • kupatula
  • zolozera zanzeru (kukhazikitsa mwamakonda)

Pogwiritsa ntchito cholowa chambiri (makalasi ang'onoang'ono), mtundu wachigawo umakhala wotheka, womwe udzakambidwe pansipa.

Zida

Kuti zitsimikizire modularity, magwiridwe antchito onse amagawidwa m'magawo, omwe ndi malaibulale osinthika (*.dll ya Windows, *.so ya Linux). Pali zigawo zoposa zana limodzi ndi makumi asanu pamodzi; Nazi mafotokozedwe a zina mwa izo:

kumbuyo
Muli injini ya metadata ya nsanja

accnt
Zinthu zomwe opanga mapulogalamu amagwiritsa ntchito popanga zolemba zamaakaunti (ma chart amaakaunti ndi zolembera zowerengera)

bsl
Injini yolumikizira chilankhulo

nuke
Kukhazikitsa mwamakonda kwa memory allocator

dbeng8
Injini ya database ya fayilo. Injini ya database ya seva yosavuta yotengera ISAM, yomwe imaphatikizanso purosesa yosavuta ya SQL

wbase
Lili ndi makalasi oyambira ndi ntchito zogwiritsira ntchito mawonekedwe a Windows - makalasi a zenera, kupeza kwa GDI, ndi zina.

Kugawanika m'magulu angapo kumathandiza kuchokera kumagulu angapo:

  • Kupatukana kumalimbikitsa mapangidwe abwino, makamaka kudzipatula kwa code
  • Kuchokera pamagulu angapo, mutha kupanga zosankha zosiyanasiyana zoperekera:
    • Mwachitsanzo, kuyika kwa kasitomala wocheperako kumakhala ndi wbase, koma sikudzakhala ndi backend
    • koma pa seva ya wbase, m'malo mwake, sizikhala
    • zosankha zonsezi zidzakhala ndi nuke ndi bsl

Zida zonse zomwe zimafunikira pakukhazikitsa izi zimayikidwa pulogalamu ikayamba. Izi, makamaka, ndizofunikira pakulembetsa makalasi a SCOM, omwe tikambirana pansipa.

Mtengo wa magawo SCOM

Pakuwola pamlingo wotsika, dongosolo la SCOM limagwiritsidwa ntchito, laibulale yofanana ndi malingaliro a ATL. Kwa iwo omwe sanagwirepo ntchito ndi ATL, tikulemba mwachidule maluso ndi mawonekedwe ake.
Kwa kalasi ya SCOM yopangidwa mwapadera:

  • Amapereka njira zamafakitale zomwe zimakupatsani mwayi wopanga kalasi kuchokera kugawo lina kudziwa dzina lake lokha (popanda kuwulula kukhazikitsa)
  • Imapereka maziko owerengera ma pointer anzeru. Nthawi zonse kalasi ya SCOM sifunika kuyang'aniridwa pamanja
  • Imakulolani kuti mudziwe ngati chinthu chimagwiritsa ntchito mawonekedwe enaake ndikusintha cholozera kukhala chinthucho kukhala cholozera ku mawonekedwe.
  • Pangani chinthu chautumiki chomwe chimapezeka nthawi zonse kudzera munjira ya get_service, ndi zina.

Mwachitsanzo, mutha kufotokoza kalasi yowerengera JSON (mwachitsanzo, JSONStreamReader) mu gawo la json.dll.
Makalasi ndi zochitika zitha kupangidwa kuchokera kuzinthu zina; ziyenera kulembetsedwa pamakina a SCOM:

SCOM_CLASS_ENTRY(JSONStreamReader)

Macro iyi ifotokoza za gulu lapadera lojambulira, womanga yemwe adzatchedwa chigawocho chikasungidwa kukumbukira.
Pambuyo pake, mukhoza kupanga chitsanzo cha izo mu chigawo china:

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

Kuti zithandizire ntchito, SCOM imapereka zina zowonjezera, zovuta kwambiri. Pakatikati mwa izo ndi lingaliro la ndondomeko ya SCOM, yomwe imakhala ngati chidebe choyendetsera ntchito (ie, imagwira ntchito ya Service Locator), komanso imakhala ndi zomangira kuzinthu zomwe zilipo. Njira ya SCOM imamangirizidwa ku ulusi wa OS. Chifukwa cha izi, mkati mwa pulogalamuyi mutha kulandira ntchito monga izi:

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

Kuphatikiza apo, posintha njira zomveka (SCOM) zomangika ku ulusi, mutha kupeza mapulogalamu omwe ali odziyimira pawokha pakuwona malo a chidziwitso, akuyenda mkati mwa ulusi womwewo. Umu ndi momwe kasitomala wathu woonda amagwirira ntchito ndi database ya mafayilo - mkati mwa njira imodzi ya OS pali njira ziwiri za SCOM, imodzi yolumikizidwa ndi kasitomala, ndipo yachiwiri ndi seva. Njirayi imatithandiza kugwirizanitsa kulembedwa kwa kachidindo komwe kungagwire ntchito pazithunzithunzi zamtundu wamba komanso mu "real" kasitomala-server version. Mtengo wa kufanana koteroko ndi wapamwamba, koma machitidwe amasonyeza kuti ndizofunika.

Kutengera mtundu wa gawo la SCOM, malingaliro onse abizinesi ndi mawonekedwe a 1C: Enterprise amakhazikitsidwa.

Wosuta mawonekedwe

Mwa njira, za interfaces. Sitigwiritsa ntchito zowongolera za Windows; zowongolera zathu zimakhazikitsidwa mwachindunji pa Windows API. Kwa mtundu wa Linux, wosanjikiza wapangidwa womwe umagwira ntchito kudzera mu library ya wxWidgets.
Laibulale ya zowongolera sizitengera magawo ena a 1C:Enterprise ndipo imagwiritsidwa ntchito ndi ife pazinthu zina zazing'ono zamkati.

Kwa zaka za chitukuko cha 1C:Enterprise, maonekedwe a maulamuliro asintha, koma kusintha kwakukulu kwa mfundo kunachitika kamodzi kokha, mu 2009, ndi kutulutsidwa kwa Baibulo 8.2 ndi kubwera kwa "mafomu oyendetsedwa". Kuphatikiza pa kusintha mawonekedwe, mfundo yosinthira mawonekedwe yasintha kwambiri - panali kukana kwa pixel-by-pixel kuyika kwa zinthu mokomera mawonekedwe oyenda azinthu. Kuphatikiza apo, muchitsanzo chatsopano, zowongolera sizigwira ntchito mwachindunji ndi zinthu zamtundu, koma ndi ma DTO apadera (Zinthu Zosamutsa Data).
Zosinthazi zidapangitsa kuti pakhale 1C: kasitomala wapaintaneti wamakampani omwe amatengera malingaliro a C++ a zowongolera za JavaScript. Timayesa kusunga kufanana kwa magwiridwe antchito pakati paonda ndi makasitomala apa intaneti. Muzochitika zomwe sizingatheke, mwachitsanzo chifukwa cha malire a JavaScript API yomwe ilipo (mwachitsanzo, kuthekera kogwira ntchito ndi mafayilo kumakhala kochepa), nthawi zambiri timagwiritsira ntchito zofunikira pogwiritsa ntchito zowonjezera za msakatuli zolembedwa mu C ++. Panopa timathandizira Internet Explorer ndi Microsoft Edge (Windows), Google Chrome (Windows), Firefox (Windows ndi Linux) ndi Safari (MacOS).

Kuphatikiza apo, ukadaulo wamitundu yoyendetsedwa umagwiritsidwa ntchito kupanga mawonekedwe ogwiritsira ntchito mafoni papulatifomu ya 1C. Pazida zam'manja, kuperekera kwa maulamuliro kumayendetsedwa pogwiritsa ntchito matekinoloje omwe amachokera ku makina ogwiritsira ntchito, koma pamawonekedwe a mawonekedwe a mawonekedwe ndi kuyankha kwa mawonekedwe, kachidindo komweko kumagwiritsidwa ntchito ngati "chachikulu" 1C: nsanja yamakampani.

Platform "1C: Enterprise" - ndi chiyani chomwe chili pansi pa hood?
1C mawonekedwe pa Linux OS

Platform "1C: Enterprise" - ndi chiyani chomwe chili pansi pa hood?
1C mawonekedwe pa foni yam'manja

1C mawonekedwe pa nsanja zina Platform "1C: Enterprise" - ndi chiyani chomwe chili pansi pa hood?
1C mawonekedwe pa Windows OS

Platform "1C: Enterprise" - ndi chiyani chomwe chili pansi pa hood?
Chiyankhulo 1C - kasitomala wapaintaneti

Open gwero

Ngakhale sitigwiritsa ntchito malaibulale okhazikika kwa opanga C ++ pansi pa Windows (MFC, zowongolera kuchokera ku WinAPI), sitilemba tokha zigawo zonse. Laibulale yatchulidwa kale wxWidgets, ndipo timagwiritsanso ntchito:

  • cURL ntchito ndi HTTP ndi FTP.
  • OpenSSL pogwira ntchito ndi cryptography ndikukhazikitsa kulumikizana kwa TLS
  • libxml2 ndi libxslt kwa XML parsing
  • libetpan pogwira ntchito ndi ma protocol (POP3, SMTP, IMAP)
  • kutengera kusanthula ma imelo
  • sqliti posungira zolemba za ogwiritsa ntchito
  • ICU za internationalization

Mndandanda ukupitirira.
Kuphatikiza apo, timagwiritsa ntchito mtundu wosinthidwa kwambiri Mayeso a Google и Google Mock popanga mayeso a unit.
Ma library amafunikira kusintha kuti agwirizane ndi mtundu wa bungwe la SCOM.
Kuchuluka kwa 1C kumapangitsa nsanja kukhala mayeso abwino kwambiri amphamvu zama library omwe amagwiritsidwa ntchito momwemo. Ogwiritsa ntchito osiyanasiyana komanso zochitika zimawulula zolakwika m'malo omwe sagwiritsidwa ntchito kawirikawiri. Timazikonza tokha ndikuyesera kuzibwezera kwa olemba mabuku. Zochitika za kuyanjana zimakhala zosiyana kwambiri.
Madivelopa cURL и libetpan Yankhani mwachangu pazopempha, koma chigambacho, mwachitsanzo, mkati OpenSSL Sitinathe kubwezera.

Pomaliza

M'nkhaniyi tidakhudza mbali zingapo zazikulu zakukula kwa 1C: nsanja ya Enterprise. Pakuchepa kwa nkhaniyo, tangokhudza mbali zina zosangalatsa, m'malingaliro athu.
Kufotokozera mwachidule kwa njira zosiyanasiyana zamapulatifomu kungapezeke apa.
Kodi ndi nkhani ziti zomwe zingakusangalatseni m'nkhani zamtsogolo?

Kodi nsanja yam'manja ya 1C imayendetsedwa bwanji?
Kufotokozera za mkati mwa kasitomala kasitomala?
Kapena mwina muli ndi chidwi ndi momwe mukusankhira zinthu zatsopano, kukulitsa ndi kuyesa?

Lembani mu ndemanga!

Source: www.habr.com

Kuwonjezera ndemanga