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.
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)
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.
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:
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.
1C mawonekedwe pa Linux OS
1C mawonekedwe pa foni yam'manja
1C mawonekedwe pa nsanja zina 1C mawonekedwe pa Windows OS
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:
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?