Paerewa "1C: Hinonga" - he aha kei raro i te awhi?

Hei Habr!
I roto i tenei tuhinga ka timata te korero mo te mahi o roto tūāpapa "1C:Enterprise 8" me nga hangarau e whakamahia ana i roto i tona whanaketanga.

Paerewa "1C: Hinonga" - he aha kei raro i te awhi?

Ki ta matou whakaaro he aha tenei mea whakamere? Tuatahi, na te mea he tono nui te 1C:Enterprise 8 (neke atu i te 10 miriona rarangi waehere) i roto i te C++ (kiritaki, tūmau, aha atu), JavaScript (kiritaki paetukutuku), a, tata nei, A Java. Ka taea e nga kaupapa nui te whakamere i te iti rawa na to raatau tauine, na te mea ko nga take e kore e kitea i roto i te turanga waehere iti ka ara ake i roto i nga kaupapa penei. Tuarua, ko te "1C:Enterprise" he hua whakahoki, he "pouaka", he iti noa nga korero mo enei whanaketanga i runga i a Habré. He pai tonu te mohio ki te ahua o te oranga i etahi atu kapa me nga kamupene.

Na kia timata tatou. I roto i tenei tuhinga ka hoatu e matou he tirohanga o etahi o nga hangarau e whakamahia ana i roto i te papaaho me te whakaatu i te whenua, me te kore e ruku hohonu ki te whakatinanatanga. Inaa, mo te maha o nga tikanga, me whai tuhinga motuhake tetahi korero mo etahi, mo etahi, he pukapuka katoa!
Hei timata, he mea tika ki te whakatau i nga mea taketake - he aha te papaaho 1C:Enterprise me nga waahanga kei roto. Ko te whakautu ki tenei patai ehara i te mea tino ngawari, no te mea ko te kupu "Platform" (mo te poto, ka kiia e matou ko tera ara) e pa ana ki tetahi tikanga mo te whakawhanake i nga tono pakihi, te waahi whakahaere, me nga taputapu whakahaere. Ko nga waahanga e whai ake nei ka taea te wehewehe:

  • tautau tūmau
  • Ka taea e te kiritaki “kikokore” te hono atu ki te tūmau mā te http me tana ake kawa rua
  • Kaihoko mo te mahi i roto i te hoahoanga-a-rua me te papaunga raraunga kei runga i te puku puku, i te kōpaki whatunga ranei
  • kiritaki tukutuku
  • taputapu whakahaere tūmau tono
  • taiao whanaketanga (mohiotia ko Configurator)
  • taiao wa mahi mo iOS, Android me te Waea Windows (tuāpapa pūkoro 1C)

Ko enei waahanga katoa, haunga te kiritaki tukutuku, kua tuhia ki te C++. I tua atu, kei reira te panuitanga tata nei Kaiwhakarite reanga hou, tuhia ki Java.

Nga tono Maori

Ka whakamahia te C++03 ki te whakawhanake i nga tono taketake. Mo Windows, ka whakamahia a Microsoft Visual C++ 12 (he kōtaha hototahi ki a Windows XP) hei whakahiato, mo Linux me Android - gcc 4.8, mo iOS - clang 5.0. Ko te whare pukapuka paerewa e whakamahia ana he rite mo nga punaha whakahaere katoa me nga kaitoi - STLPort. Ko tenei otinga ka whakaiti i te tupono o nga hapa-whakamahinga STL. I tenei wa kei te whakamahere matou ki te heke ki te whakatinanatanga STL i tukuna me CLang, i te mea kua whakamutua te STLPort, a, he hototahi ki te aratau C++11 a gcc.
Ko te turanga waehere o te tūmau he 99% noa, ko te kiritaki - 95%. I tua atu, ahakoa ko te papaahi pūkoro e whakamahi ana i te waehere C ++ rite te "nui", ahakoa he iti ake te paheketanga o te whakakotahitanga.
Pērā i te nuinga o ngā kaiwhakamahi C++, kare matou e kii ki te whakamahi i te 100% o nga kaha o te reo me ona whare pukapuka. Na, karekau matou e whakamahi i te Boost, a ko tetahi o nga ahuatanga o te reo ko te maka momo hihiri. I te wa ano, ka kaha taatau ki te whakamahi:

  • STL (nga aho, ipu me nga algorithms)
  • tuku iho maha, incl. tuku iho whakatinanatanga maha
  • tauira
  • Tuhinga
  • tohu tohu atamai (whakamahinga ritenga)

Ma te whakamahi i nga tukunga maha o nga atanga (nga karaehe waitara katoa), ka taea te tauira waahanga, ka korerohia i raro nei.

Tuhinga

Hei whakarite i te whakarereketanga, ka wehewehea nga mahi katoa ki nga waahanga, he whare pukapuka hihiri (*.dll mo Windows, *.so mo Linux). Neke atu i te kotahi rau e rima tekau nga waahanga katoa; koinei nga whakaahuatanga o etahi o enei:

backend
Kei roto te pūkaha metadata pūhara

accnt
Ko nga mea e whakamahia ana e nga kaiwhakawhanake tono ki te hanga rekoata kaute (tutohi o nga kaute me nga rehita kaute)

bsl
Te miihini whakauru reo

nuke
Te whakatinana ritenga o te kaiwhakawehe mahara

dbeng8
Pūkaha pātengi raraunga kōnae. He pūkaha pātengi raraunga tūmau kōnae māmā i runga i te ISAM, kei roto hoki he pūtukatuka SQL ngawari

wbase
Kei roto nga karaehe turanga me nga mahi mo te whakatinana i te atanga kaiwhakamahi Windows - nga karaehe matapihi, te uru GDI, etc.

Ko te wehewehe ki nga waahanga maha ka whai hua mai i te maha o nga tirohanga:

  • Ko te wehewehenga he pai ake te hoahoa, ina koa he pai ake te wehe i te waehere
  • Mai i te huinga o nga waahanga ka taea e koe te whakahiato i nga whiringa tuku rereke:
    • Hei tauira, kei roto i te whakaurunga kiritaki kikokore te wbase, engari karekau he tuara
    • engari i runga i te tūmau wbase, i runga i te anga ke, e kore e waiho
    • Ko nga whiringa e rua ka mau i te nuke me te bsl

Ko nga waahanga katoa e hiahiatia ana mo tenei kowhiringa whakarewatanga ka utaina ina timata te hotaka. Ko tenei, ina koa, he mea tika mo te rehita i nga karaehe SCOM, ka korerohia i raro nei.

HE WAIATA

Mo te pirau i te taumata iti, ka whakamahia te punaha SCOM, he whare pukapuka e rite ana ki te whakaaro ki te ATL. Mo te hunga kaore ano kia mahi tahi me ATL, ka whakarārangihia pototia e matou nga tino kaha me nga ahuatanga.
Mo te karaehe SCOM i hangaia motuhake:

  • Ka whakarato i nga tikanga wheketere e taea ai e koe te hanga karaehe mai i tetahi atu waahanga e mohio ana ki tona ingoa anake (kaore e whakaatu i te whakatinanatanga)
  • Ka whakarato i te hanganga tohu tohutoro-te tatau. Ko te roanga o te karaehe SCOM e kore e tika kia aroturuki-a-ringa
  • Ka taea e koe te kimi mehemea ka whakatinanahia e tetahi ahanoa tetahi atanga motuhake me te huri aunoa i te atatohu ki te ahanoa ki te atatohu ki te atanga
  • Waihangatia he ahanoa ratonga ka uru atu ma te tikanga get_service, etc.

Hei tauira, ka taea e koe te whakaahua i tetahi akomanga mo te panui JSON (hei tauira, JSONStreamReader) i roto i te waahanga json.dll.
Ka taea te hanga karaehe me nga tauira mai i etahi atu waahanga; me rehitatia ki te miihini SCOM:

SCOM_CLASS_ENTRY(JSONStreamReader)

Ma tenei tonotono e whakaatu he karaehe kaiwhakamahara pateko motuhake, ka karangahia te kaihanga ina utaina te waahanga ki te mahara.
I muri i tenei, ka taea e koe te hanga i tetahi tauira ki tetahi atu waahanga:

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

Hei tautoko i nga ratonga, ka tukuna e te SCOM tetahi atu hanganga, engari he uaua. Ko te mea nui ko te kaupapa o te tukanga SCOM, e mahi ana hei ipu mo nga ratonga whakahaere (arā, ko te mahi a te Kaitautoko Ratonga), kei roto hoki he here ki nga rauemi o te rohe. Ko te tukanga SCOM e herea ana ki te miro OS. Na tenei, i roto i te tono ka taea e koe te whiwhi ratonga penei:

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

I tua atu, ma te huri i nga tikanga arorau (SCOM) e herea ana ki tetahi miro, ka taea e koe te tiki tono e tino motuhake ana mai i te tirohanga o te waahi korero, e rere ana i roto i te miro kotahi. He penei te mahi a to tatou kiritaki kikokore me te papaunga raraunga konae - kei roto i tetahi tukanga OS e rua nga tukanga SCOM, kotahi e hono ana ki te kiritaki, me te tuarua ki te tūmau. Ma tenei huarahi ka taea e matou te whakakotahi i te tuhi o te waehere ka mahi i runga i te paataka konae aa-rohe me te "tuuturu" putanga-kiritaki-tumau. Ko te utu mo te ahua rite kei runga ake, engari ko nga mahi e whakaatu ana he pai.

I runga i te tauira waahanga SCOM, ko te arorau pakihi me te waahanga atanga o 1C: Enterprise kua whakatinanahia.

Atanga Kaiwhakamahi

Ma te ara, mo nga atanga. Kare matou e whakamahi ana i nga mana Windows paerewa; ka whakatinanahia o matou mana ki runga i te API Windows. Mo te putanga Linux, kua hangaia he paparanga e mahi ana ma te whare pukapuka wxWidgets.
Ko te whare pukapuka o nga mana whakahaere kaore i te whakawhirinaki ki etahi atu waahanga o 1C:Enterprise ka whakamahia e matou ki etahi atu taputapu iti o roto.

I roto i nga tau o te whakawhanaketanga o 1C:Enterprise, kua rereke te ahua o nga mana whakahaere, engari he huringa nui i roto i nga kaupapa i puta kotahi anake, i te 2009, me te tukunga o te putanga 8.2 me te taenga mai o nga "puka whakahaere". I tua atu i te whakarereketanga o te ahua, kua tino rerekee te maapono o te whakatakotoranga puka - kua whakakorehia te whakatakotoranga pika-a-pika o nga huānga hei pai mo te rere-tahora o nga huānga. I tua atu, i roto i te tauira hou, kaore nga mana whakahaere e mahi tika me nga taonga rohe, engari me nga DTO motuhake (Nga Mea Whakawhiti Raraunga).
Na enei huringa i taea ai te hanga i te 1C:Enterprise kiritaki tukutuku e tukurua ana i te C++ arorau o nga mana JavaScript. Ka ngana matou ki te pupuri i te taurite mahi i waenga i nga kaihoko kikokore me te paetukutuku. I nga keehi kaore e taea, hei tauira na te iti o te JavaScript API e waatea ana (hei tauira, he iti noa te kaha ki te mahi me nga konae), ka whakamahia e matou nga mahi e tika ana ma te whakamahi i nga toronga tirotiro kua tuhia ki te C++. Kei te tautoko matou i a Internet Explorer me Microsoft Edge (Windows), Google Chrome (Windows), Firefox (Windows me Linux) me Safari (MacOS).

I tua atu, ka whakamahia te hangarau puka whakahaere ki te hanga atanga mo nga tono pūkoro i runga i te papaaho 1C. I runga i nga taputapu pūkoro, ka whakatinanahia te whakaputanga o nga mana whakahaere ma te whakamahi i nga hangarau taketake o te punaha whakahaere, engari mo te arorau tahora puka me te whakautu atanga, ka whakamahia te waehere rite ki te "nui" 1C:Tuapapa Enterprise.

Paerewa "1C: Hinonga" - he aha kei raro i te awhi?
1C atanga i runga i te Linux OS

Paerewa "1C: Hinonga" - he aha kei raro i te awhi?
1C atanga i runga i te taputapu pūkoro

1C atanga i runga i etahi atu papaaho Paerewa "1C: Hinonga" - he aha kei raro i te awhi?
1C atanga i runga i Windows OS

Paerewa "1C: Hinonga" - he aha kei raro i te awhi?
Atanga 1C - kiritaki tukutuku

tuwhera pūtake

Ahakoa kaore matou e whakamahi i nga whare pukapuka paerewa mo nga kaiwhakawhanake C++ i raro i te Matapihi (MFC, nga mana whakahaere mai i WinAPI), kaore matou e tuhi i nga waahanga katoa. Kua korerohia te whare pukapuka wxHimihi, ka whakamahia ano hoki e matou:

  • cURL mo te mahi tahi me te HTTP me te FTP.
  • OpenSSL mo te mahi tahi me te tuhi tuhi me te whakarite hononga TLS
  • libxml2 me te libxslt mo te wehewehe XML
  • libetpan mo te mahi me nga kawa mēra (POP3, SMTP, IMAP)
  • tirotirohia ki te tarai i nga karere imeera
  • sqllite mo te penapena i nga raarangi kaiwhakamahi
  • ICU mo te whakahoahoatanga o te ao

Ka haere tonu te rarangi.
I tua atu, ka whakamahia e matou he putanga tino whakarereke Whakamātautau Google и Google Tawai i te wa e whakawhanake ana i nga whakamatautau waahanga.
Ko nga whare pukapuka e hiahia ana ki te urutau kia hototahi ki te tauira whakahaere wahanga SCOM.
Ko te nui o te 1C ka waiho te turanga hei whakamatautau pai mo te kaha mo nga whare pukapuka e whakamahia ana i roto. He maha nga momo kaiwhakamahi me nga ahuatanga ka whakaatu tere i nga hapa i roto i nga waahanga o te waehere tino uaua. Ka whakatikahia e matou, ka ngana ki te whakahoki atu ki nga kaituhi o te whare pukapuka. Ko te wheako o te taunekeneke ka puta he tino rereke.
Kaihanga cURL и libetpan hohoro te whakautu ki nga tono kume, engari ko te papaki, hei tauira, i roto OpenSSL Kaore i taea e matou te whakahoki mai.

mutunga

I roto i te tuhinga i pa atu matou ki etahi waahanga nui o te whanaketanga o te 1C: Te papaaho hinonga. I roto i te waahanga iti o te tuhinga, i pa atu matou ki etahi waahanga whakamere, ki ta matou whakaaro, nga waahanga.
Ka kitea he whakamaarama whanui mo nga momo tikanga papaaho konei.
He aha nga kaupapa ka pai ki a koe i nga tuhinga a muri ake nei?

He pehea te whakatinanatanga o te 1C papaaapapa pūkoro?
Whakaahuatanga o te hanganga o roto o te kiritaki tukutuku?
Kei te pirangi ranei koe ki te kowhiri i nga ahuatanga mo nga putanga hou, te whakawhanake me te whakamatautau?

Tuhia ki nga korero!

Source: will.com

Tāpiri i te kōrero