Ardán "1C: Fiontar" - cad atá faoi na cochall?

Hey Habr!
San Airteagal seo cuirfimid tús leis an scéal faoi conas a oibríonn sé taobh istigh ardán "1C: Enterprise 8" agus cad iad na teicneolaíochtaí a úsáidtear ina fhorbairt.

Ardán "1C: Fiontar" - cad atá faoi na cochall?

Cén fáth a gceapann muid go bhfuil sé seo suimiúil? Ar an gcéad dul síos, toisc go bhfuil an t-ardán 1C:Enterprise 8 ina fheidhmchlár mór (níos mó ná 10 milliún línte cód) i C ++ (cliant, freastalaí, etc.), JavaScript (cliant gréasáin), agus, le déanaí, Agus java. Is féidir le tionscadail mhóra a bheith suimiúil ar a laghad mar gheall ar a scála, toisc go n-eascraíonn saincheisteanna atá dofheicthe i mbonn cód beag i bhfeidhm iomlán i dtionscadail den sórt sin. Ar an dara dul síos, is táirge “i mbosca” macasamhail é “1C:Fiontar”, agus is beag alt atá ar Habré faoi fhorbairtí dá leithéid. Tá sé suimiúil i gcónaí fios a bheith agat conas mar atá an saol i bhfoirne agus i gcomhlachtaí eile.

Mar sin a ligean ar tús a chur leis. San Airteagal seo tabharfaimid forbhreathnú ar roinnt de na teicneolaíochtaí a úsáidtear san ardán agus breac-chuntas ar an tírdhreach, gan tumadóireacht a dhéanamh go domhain isteach sa chur i bhfeidhm. Go deimhin, i gcás go leor meicníochtaí, bheadh ​​alt ar leith ag teastáil le haghaidh scéal mionsonraithe, agus i gcás cuid acu, leabhar iomlán!
Ar dtús, is fiú cinneadh a dhéanamh ar na rudaí bunúsacha - cad é an t-ardán 1C:Fiontar agus cad iad na comhpháirteanna atá ann. Níl freagra na ceiste seo chomh simplí, toisc go dtagraíonn an téarma “Ardán” (go hachomair, ar an mbealach sin) do mhodh chun feidhmchláir ghnó, timpeallacht ama rite agus uirlisí riaracháin a fhorbairt. Is féidir na comhpháirteanna seo a leanas a idirdhealú go garbh:

  • braisle freastalaí
  • cliant “tanaí” atá in ann nascadh leis an bhfreastalaí trí http agus a phrótacal dénártha féin
  • cliant as obair in ailtireacht dhá shraith le bunachar sonraí atá suite ar thiomántán crua nó fillteán líonra
  • cliant gréasáin
  • uirlisí riaracháin freastalaí feidhmchláir
  • timpeallacht forbartha (ar a dtugtar Configurator)
  • timpeallacht rite le haghaidh iOS, Android agus Windows Phone (ardán soghluaiste 1C)

Tá na codanna seo go léir, seachas an cliant gréasáin, scríofa i C++. Ina theannta sin, tá an fógraíodh le déanaí Cumraíocht ghlúin nua, scríofa i Java.

Aipeanna dúchasacha

Úsáidtear C++03 chun feidhmchláir dhúchasacha a fhorbairt. I gcás Windows, úsáidtear Microsoft Visual C++ 12 (próifíl atá comhoiriúnach le Windows XP) mar thiomsaitheoir, agus le haghaidh Linux agus Android - gcc 4.8, le haghaidh iOS - clang 5.0. Tá an leabharlann chaighdeánach a úsáidtear mar an gcéanna do gach córas oibriúcháin agus tiomsaitheoir - STLPort. Laghdaíonn an réiteach seo an dóchúlacht go mbeidh earráidí a bhaineann go sonrach le cur i bhfeidhm STL. Táimid ag pleanáil faoi láthair aistriú chuig cur i bhfeidhm STL a seoladh le Clang, toisc go bhfuil deireadh le STLPort agus nach bhfuil sé ag luí le modh cumasaithe gcc C++11.
Tá bonn cód an fhreastalaí 99% coitianta, an chliaint - 95%. Thairis sin, úsáideann fiú an t-ardán soghluaiste an cód C++ céanna agus an cód “mór”, cé go bhfuil céatadán an aontú beagán níos ísle.
Cosúil le formhór na n-úsáideoirí C++, ní mhaíonn muid go n-úsáidimid 100% de chumas na teanga agus a leabharlann. Mar sin, ní úsáidimid Boost go praiticiúil, agus is é cineál réitigh dinimiciúil ceann de na gnéithe teanga. Ag an am céanna, úsáidimid go gníomhach:

  • STL (teaghráin, coimeádáin agus halgartaim go sonrach)
  • oidhreacht iolrach, lena n-áirítear. oidhreacht forfheidhmithe iolrach
  • teimpléid
  • eisceachtaí
  • leideanna cliste (cur i bhfeidhm saincheaptha)

Trí oidhreacht iolrach comhéadain a úsáid (aicmí teibí go hiomlán), éiríonn múnla comhpháirte indéanta, a phléifear thíos.

Comhpháirteanna

Chun modúlacht a chinntiú, roinntear an fheidhmiúlacht go léir i gcomhpháirteanna, ar leabharlanna dinimiciúla iad (*.dll do Windows, *. mar sin do Linux). Tá níos mó ná céad caoga comhpháirt san iomlán; seo cur síos ar chuid acu:

Inneall
Tá inneall meiteashonraí an ardáin ann

accnt
Cuspóirí a úsáideann forbróirí feidhmchlár chun taifid chuntasaíochta a thógáil (cairteacha cuntas agus cláir chuntasaíochta)

bsl
Inneall forghníomhaithe teanga leabaithe

nuke
Cur i bhfeidhm saincheaptha leithdháilteoir cuimhne

dben8
Inneall bunachar sonraí comhad. Inneall bunachar sonraí freastalaí comhad simplí bunaithe ar ISAM, a chuimsíonn próiseálaí SQL simplí freisin

wbase
Tá na bunranganna agus feidhmeanna ann chun comhéadan úsáideora Windows a chur i bhfeidhm - ranganna fuinneoige, rochtain GDI, etc.

Tá sé úsáideach ó roinnt tuairimí a roinnt ina ilchodanna:

  • Cuireann scaradh dearadh níos fearr chun cinn, go háirithe leithlisiú cód níos fearr
  • Ó thacar comhpháirteanna is féidir leat roghanna seachadta éagsúla a chur le chéile go solúbtha:
    • Mar shampla, beidh wbase i suiteáil tanaí cliant, ach ní bheidh inneall aige
    • ach ar an bhfreastalaí wbase, ar a mhalairt, ní bheidh
    • ar ndóigh beidh nuke agus bsl sa dá rogha

Déantar na comhpháirteanna go léir a theastaíonn don rogha seolta seo a luchtú nuair a thosaíonn an clár. Tá sé seo riachtanach go háirithe chun ranganna SCOM a chlárú, rud a phléifear thíos.

SCOM

Maidir le dianscaoileadh ag leibhéal níos ísle, úsáidtear an córas SCOM, leabharlann atá cosúil ó thaobh idé-eolaíocht le ATL. Dóibh siúd nár oibrigh le ATL, liostaímid go hachomair na príomhchumais agus na príomhghnéithe.
Le haghaidh aicme SCOM atá saindeartha:

  • Soláthraíonn sé modhanna monarchan a ligeann duit aicme a chruthú ó chomhpháirt eile agus gan ach a ainm ar eolas agat (gan an cur i bhfeidhm a nochtadh)
  • Soláthraíonn sé bonneagar pointeoir cliste comhairimh tagartha. Ní gá monatóireacht a dhéanamh de láimh ar shaolré an ranga SCOM
  • Ligeann sé duit a fháil amach an bhfeidhmíonn réad comhéadan ar leith agus go n-iompaíonn sé pointeoir go huathoibríoch go pointeoir don chomhéadan
  • Cruthaigh réad seirbhíse atá inrochtana i gcónaí tríd an modh get_service, etc.

Mar shampla, is féidir leat cur síos a dhéanamh ar rang lena léamh JSON (mar shampla, JSONStreamReader) sa chomhpháirt json.dll.
Is féidir aicmí agus cásanna a chruthú ó chomhpháirteanna eile; ní mór iad a chlárú sa mheaisín SCOM:

SCOM_CLASS_ENTRY(JSONStreamReader)

Déanfaidh an macra seo cur síos ar aicme speisialta taifeadáin statach, ar a dtabharfar an cruthaitheoir nuair a luchtaítear an comhpháirt sa chuimhne.
Tar éis seo, is féidir leat sampla de a chruthú i gcomhpháirt eile:

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

Chun tacú le seirbhísí, cuireann SCOM bonneagar breise casta ar fáil. Lárnach dó tá coincheap an phróisis SCOM, a fheidhmíonn mar choimeádán chun seirbhísí a rith (i.e., a imríonn ról Aimsitheoir Seirbhíse), agus ina bhfuil ceangal ar acmhainní áitiúla freisin. Tá an próiseas SCOM ceangailte leis an snáithe OS. A bhuíochas leis seo, laistigh den fheidhmchlár is féidir leat seirbhísí mar seo a fháil:

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

Thairis sin, trí phróisis loighciúla (SCOM) atá ceangailte le snáithe a athrú, is féidir leat iarratais a fháil atá neamhspleách go praiticiúil ó thaobh an spáis faisnéise, ag rith laistigh den snáithe céanna. Seo mar a oibríonn ár gcliant tanaí le bunachar sonraí comhaid - taobh istigh de phróiseas OS amháin tá dhá phróiseas SCOM, ceann a bhaineann leis an gcliant, agus an dara ceann leis an bhfreastalaí. Ligeann an cur chuige seo dúinn scríobh an chóid a aontú a oibreoidh ar an mbunachar sonraí comhad áitiúil agus sa leagan “fíor” cliant-freastalaí. Tá an praghas le haghaidh aonfhoirmeachta den sórt sin lastuas, ach léiríonn cleachtas gur fiú é.

Bunaithe ar mhúnla comhpháirte SCOM, cuirtear an loighic ghnó agus an chuid comhéadan de 1C: Enterprise i bhfeidhm.

Comhéadan úsáideora

Dála an scéil, faoi comhéadain. Ní úsáidimid rialuithe caighdeánacha Windows; cuirtear ár rialuithe i bhfeidhm go díreach ar Windows API. Maidir leis an leagan Linux, tá ciseal déanta a oibríonn tríd an leabharlann wxWidgets.
Ní bhraitheann leabharlann na rialuithe ar chodanna eile de 1C:Fiontar agus úsáideann muid i roinnt fóntais inmheánacha beaga eile.

Thar na blianta forbartha ar 1C:Fiontar, tá cuma na rialuithe athraithe, ach níor tharla athrú tromchúiseach ar phrionsabail ach uair amháin, in 2009, nuair a scaoileadh leagan 8.2 agus teacht na “foirmeacha bainistithe”. Chomh maith leis an gcuma a athrú, tá athrú bunúsach tagtha ar phrionsabal leagan amach na foirme - diúltaíodh do shuíomh picteilín-ar-picteilín na n-eilimintí i bhfabhar leagan amach sreafa na n-eilimintí. Ina theannta sin, sa tsamhail nua, ní oibríonn rialuithe go díreach le réada fearainn, ach le DTOanna speisialta (Cuspóirí Aistrithe Sonraí).
De bharr na n-athruithe seo bhíothas in ann cliant gréasáin 1C:Enterprise a chruthú a dhéanann macasamhlú ar loighic C++ rialuithe JavaScript. Déanaimid iarracht coibhéis fheidhmiúil a choinneáil idir cliaint tanaí agus gréasáin. I gcásanna nach féidir é seo a dhéanamh, mar shampla mar gheall ar theorainneacha an API JavaScript atá ar fáil (mar shampla, tá an cumas oibriú le comhaid an-teoranta), is minic a chuirimid an fheidhmiúlacht riachtanach i bhfeidhm ag baint úsáide as síntí brabhsálaí scríofa i C ++. Faoi láthair tacaímid le Internet Explorer agus Microsoft Edge (Windows), Google Chrome (Windows), Firefox (Windows agus Linux) agus Safari (MacOS).

Ina theannta sin, úsáidtear teicneolaíocht foirmeacha bainistithe chun comhéadan a chruthú d’fheidhmchláir shoghluaiste ar an ardán 1C. Ar ghléasanna soghluaiste, cuirtear rindreáil rialuithe i bhfeidhm ag baint úsáide as teicneolaíochtaí dúchasacha an chórais oibriúcháin, ach le haghaidh loighic leagan amach na foirme agus freagairt an chomhéadain, úsáidtear an cód céanna agus a úsáidtear san ardán “mór” 1C:Fiontar.

Ardán "1C: Fiontar" - cad atá faoi na cochall?
1C comhéadan ar Linux OS

Ardán "1C: Fiontar" - cad atá faoi na cochall?
1C comhéadan ar gléas soghluaiste

1C comhéadan ar ardáin eile Ardán "1C: Fiontar" - cad atá faoi na cochall?
1C comhéadan ar Windows OS

Ardán "1C: Fiontar" - cad atá faoi na cochall?
Comhéadan 1C - cliant gréasáin saor in aisce,

foinse oscailte

Cé nach n-úsáidimid leabharlanna caighdeánacha d'fhorbróirí C ++ faoi Windows (MFC, rialuithe ó WinAPI), ní scríobhaimid na comhpháirteanna go léir sinn féin. Tá an leabharlann luaite cheana féin wxGiuirléidí, agus úsáidimid freisin:

  • curl chun oibriú le HTTP agus FTP.
  • OpenSSL as oibriú le cripteagrafaíocht agus as naisc TLS a bhunú
  • libxml2 agus libxslt le haghaidh parsáil XML
  • liobáin chun oibriú le prótacail ríomhphoist (POP3, SMTP, IMAP)
  • mimiceach chun teachtaireachtaí ríomhphoist a pharsáil
  • sqllite chun logaí úsáideoirí a stóráil
  • ICU don idirnáisiúnú

Leanann an liosta ar aghaidh.
Ina theannta sin, úsáidimid leagan an-athraithe Tástáil Google и Bréagán Google agus tástálacha aonaid á bhforbairt.
Bhí oiriúnú de dhíth ar na leabharlanna le bheith ag luí le samhail na comheagraíochta SCOM.
Mar gheall ar leitheadúlacht 1C tá an t-ardán ina thástáil shármhaith ar neart do na leabharlanna a úsáidtear ann. Nochtann éagsúlacht úsáideoirí agus cásanna go tapa earráidí i fiú na réimsí cód is annamh a úsáidtear. Ceartaímid iad féin agus déanaimid iarracht iad a thabhairt ar ais do na húdair leabharlainne. Tarlaíonn sé go bhfuil taithí na hidirghníomhaíochta an-difriúil.
Forbróirí curl и liobáin freagairt go tapa ar tarraingt-iarratais, ach an paiste, mar shampla, i OpenSSL Níor éirigh linn é a thabhairt ar ais riamh.

Conclúid

San alt phléamar roinnt príomhghnéithe d'fhorbairt ardán 1C: Fiontar. I raon feidhme teoranta an ailt, níor phléigh muid ach roinnt gnéithe suimiúla, inár dtuairim.
Is féidir cur síos ginearálta a fháil ar na meicníochtaí ardáin éagsúla anseo.
Cad iad na hábhair a mbeadh spéis agat in ailt amach anseo?

Conas a chuirtear ardán soghluaiste 1C i bhfeidhm?
Cur síos ar struchtúr inmheánach an chliaint gréasáin?
Nó b'fhéidir go bhfuil suim agat sa phróiseas maidir le gnéithe a roghnú le haghaidh eisiúintí nua, a fhorbairt agus a thástáil?

Scríobh sna tuairimí!

Foinse: will.com

Add a comment