Àrd-ùrlar "1C: Iomairt" - dè a tha fon chochall?

Hi Habr!
San artaigil seo tòisichidh sinn air an sgeulachd mu mar a tha e ag obair a-staigh àrd-ùrlar "1C: Iomairt 8" agus dè na teicneòlasan a thathas a’ cleachdadh na leasachadh.

Àrd-ùrlar "1C: Iomairt" - dè a tha fon chochall?

Carson a tha sinn a’ smaoineachadh a tha seo inntinneach? An toiseach, leis gu bheil an àrd-ùrlar 1C: Iomairt 8 na thagradh mòr (còrr air 10 millean loidhne de chòd) ann an C ++ (cliant, frithealaiche, msaa), JavaScript (client lìn), agus, o chionn ghoirid, Agus Java. Faodaidh pròiseactan mòra a bhith inntinneach co-dhiù air sgàth an sgèile, oir tha cùisean a tha do-fhaicsinneach ann am bunait còd beag ag èirigh ann an làn chumhachd ann am pròiseactan mar seo. San dàrna h-àite, tha “1C: Iomairt” na thoradh “bogsa” mac-samhail, agus chan eil ach glè bheag de artaigilean ann mu leasachaidhean mar seo air Habré. Tha e an-còmhnaidh inntinneach fios a bhith agad mar a tha beatha ann an sgiobaidhean agus companaidhean eile.

Mar sin leig leinn tòiseachadh. San artaigil seo bheir sinn sealladh farsaing air cuid de na teicneòlasan a thathas a’ cleachdadh san àrd-ùrlar agus bheir sinn cunntas air an t-sealladh-tìre, gun a bhith a’ dàibheadh ​​​​gu domhainn a-steach don bhuileachadh. Gu dearbh, airson iomadh uidheamachd, bheireadh sgeulachd mhionaideach artaigil air leth, agus dha cuid, leabhar slàn!
An toiseach, is fhiach co-dhùnadh a dhèanamh air na rudan bunaiteach - dè a th’ ann an àrd-ùrlar 1C:Enterprise agus dè na pàirtean a th’ ann. Chan eil am freagairt don cheist seo cho sìmplidh, oir tha an teirm “Àrd-ùrlar” (airson giorrad, canaidh sinn e san dòigh sin) a ’toirt iomradh air dòigh airson tagraidhean gnìomhachais a leasachadh, àrainneachd runtime, agus innealan rianachd. Faodar na co-phàirtean a leanas a chomharrachadh gu garbh:

  • brabhsair frithealaiche
  • neach-dèiligidh “tana” comasach air ceangal ris an fhrithealaiche tro http agus a phròtacal dà-chànanach fhèin
  • neach-dèiligidh airson a bhith ag obair ann an ailtireachd dà-ìre le stòr-dàta suidhichte air clàr cruaidh no pasgan lìonra
  • neach-dèiligidh lìn
  • innealan rianachd frithealaiche tagraidh
  • àrainneachd leasachaidh (ris an canar Configurator)
  • àrainneachd runtime airson iOS, Android agus Windows Phone (àrd-ùrlar gluasadach 1C)

Tha na pàirtean sin uile, ach a-mhàin an neach-dèiligidh lìn, sgrìobhte ann an C ++. A bharrachd air an sin, tha an dreach a chaidh ainmeachadh o chionn ghoirid Neach-rèiteachaidh ginealach ùr, sgrìobhte ann an Java.

Aplacaidean dùthchasach

Tha C++03 air a chleachdadh gus tagraidhean dùthchasach a leasachadh. Airson Windows, tha Microsoft Visual C ++ 12 (pròifil a tha co-chosmhail ri Windows XP) air a chleachdadh mar neach-cruinneachaidh, agus airson Linux agus Android - gcc 4.8, airson iOS - clang 5.0. Tha an leabharlann àbhaisteach a thathar a’ cleachdadh an aon rud airson a h-uile siostam obrachaidh agus neach-cruinneachaidh - STLPort. Tha am fuasgladh seo a’ lughdachadh an coltas gum bi mearachdan sònraichte ann an gnìomh STL. Tha sinn an-dràsta an dùil gluasad gu buileachadh STL air a chuir air adhart le CLang, leis gu bheil STLPort air a stad agus nach eil e co-chòrdail ri modh comas C ++11 gcc.
Tha bunait còd an fhrithealaiche 99% cumanta, an neach-dèiligidh - 95%. A bharrachd air an sin, bidh eadhon an àrd-ùrlar gluasadach a’ cleachdadh an aon chòd C ++ ris an fhear “mòr”, ged a tha an àireamh sa cheud de aonachadh an sin beagan nas ìsle.
Coltach ris a’ mhòr-chuid de luchd-cleachdaidh C++, chan eil sinn ag agairt gun cleachd sinn 100% de chomasan a’ chànain agus na leabharlannan aige. Mar sin, cha mhòr nach eil sinn a’ cleachdadh Boost, agus is e seòrsa tilgeadh fiùghantach aon de na feartan cànain. Aig an aon àm, bidh sinn gu gnìomhach a’ cleachdadh:

  • STL (gu sònraichte sreangan, soithichean agus algorithms)
  • oighreachd iomadach, a' gabhail a-steach. oighreachd ioma-buileachaidh
  • teamplaidean
  • eisgeachdan
  • molaidhean snasail (buileachadh àbhaisteach)

Le bhith a 'cleachdadh iomadach oighreachd eadar-aghaidh (clasaichean gu tur eas-chruthach), bidh modal co-phàirteach comasach, a thèid a dheasbad gu h-ìosal.

Components

Gus dèanamh cinnteach à modularity, tha a h-uile gnìomh air a roinn ann an co-phàirtean, a tha nan leabharlannan fiùghantach (*.dll airson Windows, *. mar sin airson Linux). Tha còrr air ceud gu leth pàirt ann uile gu lèir; seo tuairisgeul air cuid dhiubh:

backend
Tha einnsean meata-dàta an àrd-ùrlair ann

acnt
Rudan a bhios luchd-leasachaidh thagraidhean a’ cleachdadh gus clàran cunntasachd a thogail (clàran chunntasan agus clàran cunntasachd)

bsl
Einnsean cur an gnìomh cànan freumhaichte

Nuke
Buileachadh gnàthaichte de riarachadh cuimhne

dben 8
Inneal stòr-dàta faidhle. Einnsean stòr-dàta frithealaiche faidhle sìmplidh stèidhichte air ISAM, a tha cuideachd a’ toirt a-steach pròiseasar SQL sìmplidh

wbase
Tha na clasaichean bunaiteach agus na gnìomhan ann airson eadar-aghaidh cleachdaiche Windows a chuir an gnìomh - clasaichean uinneig, ruigsinneachd GDI, msaa.

Tha e feumail a roinn ann an grunn phàirtean bho ghrunn bheachdan:

  • Bidh dealachadh a’ brosnachadh dealbhadh nas fheàrr, gu sònraichte aonaranachd còd nas fheàrr
  • Bho sheata de cho-phàirtean faodaidh tu diofar roghainnean lìbhrigidh a chruinneachadh gu sùbailte:
    • Mar eisimpleir, bidh wbase ann an stàladh teachdaiche tana, ach cha bhi backend aige
    • ach air an t-seirbheis wbase, air an làimh eile, cha bhi
    • bidh nuke agus bsl anns an dà roghainn gu dearbh

Thèid a h-uile pàirt a tha a dhìth airson an roghainn tòiseachaidh seo a luchdachadh nuair a thòisicheas am prògram. Tha seo, gu sònraichte, riatanach airson clasaichean SCOM a chlàradh, a thèid a dheasbad gu h-ìosal.

SCOM

Airson lobhadh aig ìre nas ìsle, thathas a’ cleachdadh siostam SCOM, leabharlann coltach ri ideòlas ri ATL. Dhaibhsan nach eil air a bhith ag obair le ATL, tha sinn a 'toirt liosta ghoirid de na prìomh chomasan agus fheartan.
Airson clas SCOM a chaidh a dhealbhadh gu sònraichte:

  • A’ toirt seachad dòighean factaraidh a leigeas leat clas a chruthachadh bho phàirt eile gun fhios ach an t-ainm (gun a bhith a’ nochdadh a’ bhuileachadh)
  • A’ toirt seachad bun-structar puing smart cunntais iomraidh. Chan fheum beatha clas SCOM a bhith air a sgrùdadh le làimh
  • A’ leigeil leat faighinn a-mach a bheil nì a’ cur an gnìomh eadar-aghaidh sònraichte agus gu fèin-obrachail a’ tionndadh puing dhan nì gu puing dhan eadar-aghaidh
  • Cruthaich nì seirbheis a tha an-còmhnaidh ruigsinneach tron ​​​​dòigh get_service, msaa.

Mar eisimpleir, faodaidh tu cunntas a thoirt air clas airson JSON a leughadh (mar eisimpleir, JSONStreamReader) anns a’ cho-phàirt json.dll.
Faodar clasaichean agus suidheachaidhean a chruthachadh bho cho-phàirtean eile; feumaidh iad a bhith clàraichte san inneal SCOM:

SCOM_CLASS_ENTRY(JSONStreamReader)

Bheir am macro seo cunntas air clas clàraidh statach sònraichte, agus thèid an neach-togail a ghairm nuair a thèid am pàirt a luchdachadh gu cuimhne.
Às deidh seo, faodaidh tu eisimpleir dheth a chruthachadh ann am pàirt eile:

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

Airson taic a thoirt do sheirbheisean, tha SCOM a’ tabhann bun-structar a bharrachd, caran toinnte. Aig cridhe a’ bhun-bheachd air pròiseas SCOM, a tha na ghobhar airson seirbheisean a ruith (ie, a’ cluich pàirt locator seirbheis), agus cuideachd a’ toirt a-steach ceangal ri goireasan ionadail. Tha am pròiseas SCOM ceangailte ris an t-snàthainn OS. Taing dha seo, taobh a-staigh an aplacaid gheibh thu seirbheisean mar seo:

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

A bharrachd air an sin, le bhith ag atharrachadh pròiseasan loidsigeach (SCOM) ceangailte ri snàithlean, gheibh thu tagraidhean a tha cha mhòr neo-eisimeileach bho shealladh an àite fiosrachaidh, a’ ruith taobh a-staigh an aon snàithlean. Seo mar a bhios an neach-dèiligidh tana againn ag obair le stòr-dàta faidhle - taobh a-staigh aon phròiseas OS tha dà phròiseas SCOM, aon co-cheangailte ris an neach-dèiligidh, agus an dàrna fear leis an fhrithealaiche. Leigidh an dòigh-obrach seo leinn sgrìobhadh còd aonachadh a dh’ obraicheas an dà chuid air an stòr-dàta faidhle ionadail agus anns an dreach “fìor” frithealaiche teachdaiche. Tha a 'phrìs airson a leithid de dh' èideadh os cionn, ach tha cleachdadh a 'sealltainn gur fhiach e.

Stèidhichte air modal co-phàirteach SCOM, tha an dà chuid loidsig gnìomhachais agus pàirt eadar-aghaidh 1C: Iomairt air an cur an gnìomh.

Eadar-aghaidh cleachdaiche

Co-dhiù, mu dheidhinn eadar-aghaidh. Cha bhith sinn a’ cleachdadh smachdan àbhaisteach Windows; tha na smachdan againn air an cur an gnìomh gu dìreach air Windows API. Airson an tionndadh Linux, chaidh còmhdach a dhèanamh a bhios ag obair tron ​​​​leabharlann wxWidgets.
Chan eil an leabharlann smachd an urra ri pàirtean eile de 1C:Iomairt agus tha e air a chleachdadh leinn ann an grunn ghoireasan beaga eile a-staigh.

Thairis air na bliadhnaichean de leasachadh 1C: Iomairt, tha coltas smachdan air atharrachadh, ach cha do thachair atharrachadh mòr ann am prionnsapalan ach aon turas, ann an 2009, nuair a chaidh dreach 8.2 a leigeil ma sgaoil agus teachd “foirmean fo stiùir”. A bharrachd air a bhith ag atharrachadh coltas, tha prionnsapal cruth cruth air atharrachadh gu bunaiteach - chaidh diùltadh suidheachadh picteil-air-piogsail de eileamaidean airson fàbhar dealbhadh sruthadh eileamaidean. A bharrachd air an sin, anns a’ mhodail ùr, chan eil smachdan ag obair gu dìreach le nithean fearainn, ach le DTOn sònraichte (Rudan gluasad dàta).
Rinn na h-atharrachaidhean sin e comasach teachdaiche lìn 1C:Enterprise a chruthachadh a bhios ag ath-aithris loidsig C ++ de smachdan JavaScript. Bidh sinn a’ feuchainn ri co-ionannachd gnìomh a chumail eadar teachdaichean tana agus lìn. Ann an cùisean far nach eil seo comasach, mar eisimpleir air sgàth cuingealachaidhean an API JavaScript a tha ri fhaighinn (mar eisimpleir, tha an comas obrachadh le faidhlichean glè chuingealaichte), bidh sinn gu tric a’ cur an gnìomh an gnìomh riatanach a’ cleachdadh leudachaidhean brabhsair sgrìobhte ann an C ++. Tha sinn an-dràsta a’ toirt taic do Internet Explorer agus Microsoft Edge (Windows), Google Chrome (Windows), Firefox (Windows agus Linux) agus Safari (MacOS).

A bharrachd air an sin, thathas a’ cleachdadh teicneòlas foirmean stiùirichte gus eadar-aghaidh a chruthachadh airson tagraidhean gluasadach air an àrd-ùrlar 1C. Air innealan gluasadach, thathas a ’toirt seachad smachdan a’ cleachdadh theicneòlasan dùthchasach don t-siostam obrachaidh, ach airson loidsig cruth cruth agus freagairt eadar-aghaidh, thathas a ’cleachdadh an aon chòd ris an àrd-ùrlar 1C: Iomairt“ mòr ”XNUMXC: Iomairt.

Àrd-ùrlar "1C: Iomairt" - dè a tha fon chochall?
1C eadar-aghaidh air Linux OS

Àrd-ùrlar "1C: Iomairt" - dè a tha fon chochall?
1C eadar-aghaidh air inneal-làimhe a-nuas

1C eadar-aghaidh air àrd-ùrlaran eile a Àrd-ùrlar "1C: Iomairt" - dè a tha fon chochall?
1C eadar-aghaidh air Windows OS

Àrd-ùrlar "1C: Iomairt" - dè a tha fon chochall?
Eadar-aghaidh 1C - lìn luchd-cleachdaidh

Open source

Ged nach bi sinn a’ cleachdadh leabharlannan àbhaisteach airson luchd-leasachaidh C ++ fo Windows (MFC, smachdan bho WinAPI), cha bhith sinn a’ sgrìobhadh a h-uile pàirt sinn fhìn. Chaidh iomradh a thoirt air an leabharlann mu thràth wxWidgets, agus bidh sinn cuideachd a’ cleachdadh:

  • tionndadh airson a bhith ag obair le HTTP agus FTP.
  • OpenSSL airson obrachadh le cryptography agus stèidheachadh cheanglaichean TLS
  • libxml2 agus libxslt airson parsadh XML
  • liobaidean airson obrachadh le protocolaidhean puist (POP3, SMTP, IMAP)
  • atharrais gus teachdaireachdan post-d a pharsadh
  • sqllite airson clàran luchd-cleachdaidh a stòradh
  • ICU airson eadar-nàiseantachd

Tha an liosta a’ dol air adhart.
A bharrachd air an sin, bidh sinn a’ cleachdadh dreach làn atharraichte Deuchainn Google и Google magadh nuair a thathar a’ leasachadh deuchainnean aonad.
Bha feum aig na leabharlannan air an atharrachadh gus a bhith co-chosmhail ri modal eagrachaidh co-phàirteach SCOM.
Tha tricead 1C a’ fàgail an àrd-ùrlar na dheagh dheuchainn neart dha na leabharlannan a thathas a’ cleachdadh ann. Bidh measgachadh de luchd-cleachdaidh agus shuidheachaidhean gu sgiobalta a’ nochdadh mhearachdan ann an eadhon na raointean còd as annasaiche a chleachdar. Bidh sinn gan ceartachadh fhèin agus a’ feuchainn ri an toirt air ais gu ùghdaran an leabharlainn. Tha an eòlas air eadar-obrachadh a 'tionndadh a-mach gu bhith gu math eadar-dhealaichte.
Luchd-leasachaidh tionndadh и liobaidean freagairt gu sgiobalta ri iarrtasan tarraing, ach tha am paiste, mar eisimpleir, a-steach OpenSSL Cha deach againn a-riamh air a thoirt air ais.

co-dhùnadh

Anns an artaigil thug sinn iomradh air grunn phrìomh thaobhan de leasachadh an àrd-ùrlar 1C: Iomairt. Ann an raon cuibhrichte an artaigil, cha do bhruidhinn sinn ach air cuid de thaobhan inntinneach, nar beachd.
Gheibhear tuairisgeul coitcheann air na diofar uidheamachdan àrd-ùrlair an seo.
Dè na cuspairean a bhiodh inntinneach dhut ann an artaigilean san àm ri teachd?

Ciamar a tha an àrd-ùrlar gluasadach 1C air a chuir an gnìomh?
Tuairisgeul air structar a-staigh an neach-dèiligidh lìn?
No is dòcha gu bheil ùidh agad anns a’ phròiseas airson feartan a thaghadh airson fiosan ùra, leasachadh agus deuchainn?

Sgrìobh anns na beachdan!

Source: www.habr.com

Cuir beachd ann