Platform "1C: Enterprise" - ke eng e ka tlas'a hood?

Hey Habr!
Sehloohong sena re tla qala pale ea hore na e sebetsa joang ka hare sethala "1C:Enterprise 8" le hore na ke mahlale afe a sebelisoang ntlafatsong ea eona.

Platform "1C: Enterprise" - ke eng e ka tlas'a hood?

Ke hobane'ng ha re nahana hore see sea thahasellisa? Taba ea pele, hobane sethala sa 1C:Enterprise 8 ke sesebelisoa se seholo (ho feta limilione tse 10 tsa likhoutu) ho C++ (mosebetsi, seva, joalo-joalo), JavaScript (mosebetsi oa marang-rang), le haufinyane tjena. Java. Merero e meholo e ka ba e thahasellisang bonyane ka lebaka la tekanyo ea bona, hobane litaba tse sa bonahaleng ka mokhoa o monyenyane oa khoutu li hlaha ka botlalo mererong e joalo. Taba ea bobeli, "1C:Enterprise" ke sehlahisoa sa "boxed", mme ho na le lingoliloeng tse fokolang haholo mabapi le nts'etsopele e joalo ho Habré. Hape hoa thahasellisa kamehla ho tseba hore na bophelo bo joang lihlopheng tse ling le lik'hamphani.

Kahoo a re qaleng. Sehloohong sena re tla fana ka kakaretso ea tse ling tsa mahlale a sebelisoang sethaleng le ho hlalosa sebopeho sa naha, ntle le ho qoela ka botebo ts'ebetsong. Ka sebele, bakeng sa mekhoa e mengata, pale e qaqileng e ka hloka sehlooho se arohaneng, ’me ho ba bang, buka eohle!
Taba ea pele, ho bohlokoa ho etsa qeto ka lintho tsa mantlha - hore na sethala sa 1C:Enterprise ke eng le hore na se na le likarolo life. Karabo ea potso ena ha e bonolo hakaalo, hobane lentsoe "Platform" (bakeng sa bokhutšoanyane, re tla e bitsa ka tsela eo) ​​e bolela mokhoa oa ho ntlafatsa likopo tsa khoebo, tikoloho ea nako ea ho sebetsa, le lisebelisoa tsa tsamaiso. Likarolo tse latelang li ka khetholloa ka mokhoa o batlang:

  • sehlopha sa seva
  • "Mosesane" moreki ea khonang ho hokela ho seva ka http le protocol ea eona ea binary
  • moreki bakeng sa ho sebetsa moahong oa mekhahlelo e 'meli e nang le database e fumanehang ho hard drive kapa foldareng ea marang-rang
  • moreki oa marang-rang
  • lisebelisoa tsa tsamaiso ea seva ea kopo
  • tikoloho ea nts'etsopele (e tsejoang e le Configurator)
  • tikoloho ea nako ea ho sebetsa bakeng sa iOS, Android le Windows Phone (sethala sa mohala sa 1C)

Likarolo tsena kaofela, ntle le moreki oa marang-rang, li ngotsoe ka C++. Ho feta moo, ho na le tse sa tsoa phatlalatsoa configurator ea moloko o mocha, e ngotsoeng ka Java.

Lisebelisoa tsa matsoalloa

C++03 e sebelisoa ho hlahisa lisebelisoa tsa tlhaho. Bakeng sa Windows, Microsoft Visual C++ 12 (profaele e lumellanang le Windows XP) e sebelisoa e le moqapi, le bakeng sa Linux le Android - gcc 4.8, bakeng sa iOS - clang 5.0. Laeborari e tloaelehileng e sebelisoang e tšoana bakeng sa litsamaiso tsohle tsa ts'ebetso le li-compilers - STLPort. Tharollo ena e fokotsa monyetla oa liphoso tse ikhethileng tsa ts'ebetsong ea STL. Hajoale re ntse re rera ho fallela ts'ebetsong ea STL e rometsoeng ka Clang, kaha STLPort e khaolitsoe 'me ha e lumellane le mokhoa oa gcc oa C++11 o lumelletsoeng.
Motheo oa khoutu ea seva ke 99% e tloaelehileng, ea bareki - 95%. Ho feta moo, esita le sethala sa mohala se sebelisa khoutu e tšoanang ea C ++ joalo ka "e kholo", leha peresente ea kopano e batla e le tlase.
Joalo ka basebelisi ba bangata ba C++, ha re ipolele hore re sebelisa 100% ea bokhoni ba puo le lilaeborari tsa eona. Kahoo, ha re sebelise Boost, 'me e' ngoe ea likarolo tsa puo ke mofuta o matla oa ho hlahisa. Ka nako e ts'oanang, re sebelisa ka mafolofolo:

  • STL (haholo-holo likhoele, lijana le li-algorithms)
  • lefa tse ngata, ho kenyeletsa. ngata phethahatso lefa
  • litempele
  • tse fapaneng
  • li-smart pointers (ts'ebetso ea tloaelo)

Ka ho sebelisa lefa la li-interfaces tse ngata (lihlopha tse sa utloahaleng ka ho felletseng), mohlala oa karolo oa khoneha, o tla tšohloa ka tlase.

Lihlopha

Ho netefatsa hore ho na le modularity, ts'ebetso eohle e arotsoe ka likarolo, e leng lilaebrari tse matla (*.dll bakeng sa Windows, *.so bakeng sa Linux). Ho na le likarolo tse fetang lekholo le mashome a mahlano ka kakaretso; mona ke litlhaloso tsa tse ling tsa tsona:

backend
E na le enjine ea metadata ea sethala

accnt
Lintho tseo baetsi ba lits'ebetso ba li sebelisang ho theha lirekoto tsa liak'haonte (lichate tsa liak'haonte le lirekoto tsa accounting)

bsl
Enjene ea ho phethahatsa puo e kenelletseng

nuke
Ts'ebetso e tloaelehileng ea allocator ea memori

dbeng8
Enjine ea database ea faele. Enjine e bonolo ea database ea seva e thehiloeng ho ISAM, e kenyelletsang processor e bonolo ea SQL

wbase
E na le litlelase tsa mantlha le mesebetsi ea ho kenya tšebetsong sebopeho sa basebelisi ba Windows - litlelase tsa fensetere, phihlello ea GDI, jj.

Ho arola likarolo tse ngata ho molemo ho latela lintlha tse 'maloa:

  • Karohano e khothaletsa moralo o betere, haholo ho itšehla thajana ho betere
  • Ho tsoa ho sete ea likarolo u ka khona ho kopanya likhetho tse fapaneng tsa ho tsamaisa:
    • Mohlala, ts'ebetso e nyane ea bareki e tla ba le wbase, empa e ke ke ea ba le backend
    • empa ho seva sa wbase, ho fapana le hoo, e ke ke ea ba teng
    • likhetho ka bobeli li tla ba le nuke le bsl

Likarolo tsohle tse hlokahalang bakeng sa khetho ena ea ho qala li kentsoe ha lenaneo le qala. Sena, haholo-holo, sea hlokahala bakeng sa ho ngolisa lihlopha tsa SCOM, tse tla tšohloa ka tlase.

SCOM

Bakeng sa ho bola boemong bo tlaase, ho sebelisoa tsamaiso ea SCOM, laebrari e tšoanang le ea maikutlo ho ATL. Bakeng sa ba sa sebetseng le ATL, re thathamisa ka bokhutšoanyane bokhoni le likarolo tsa mantlha.
Bakeng sa sehlopha se entsoeng ka ho khetheha sa SCOM:

  • E fana ka mekhoa ea feme e u lumellang hore u thehe sehlopha ho tsoa karolong e 'ngoe u tseba lebitso la sona feela (ntle le ho senola ts'ebetsong)
  • E fana ka lisebelisoa tsa ho bala litšupiso tse bohlale. Nako ea bophelo ba sehlopha sa SCOM ha e hloke ho behoa leihlo ka letsoho
  • E u lumella ho fumana hore na ntho e sebelisa sebopeho se itseng ebe e fetolela pointer ho ntho hore e be pointer ho interface.
  • Theha ntho ea litšebeletso e fumanehang kamehla ka mokhoa oa get_service, joalo-joalo.

Mohlala, o ka hlalosa sehlopha sa ho bala JSON (mohlala, JSONStreamReader) karolong ea json.dll.
Litlelase le maemo li ka etsoa ho tsoa ho likarolo tse ling; li hloka ho ngolisoa mochining oa SCOM:

SCOM_CLASS_ENTRY(JSONStreamReader)

Macro ena e tla hlalosa sehlopha se ikhethileng sa rekoto e tsitsitseng, eo moetsi oa eona a tla bitsoa ha karolo e kenngoa mohopolong.
Ka mor'a sena, o ka etsa mohlala oa eona karolong e 'ngoe:

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

Ho ts'ehetsa lits'ebeletso, SCOM e fana ka lisebelisoa tse ling tse rarahaneng. Bohareng ba eona ke mohopolo oa ts'ebetso ea SCOM, e sebetsang e le setshelo sa lits'ebeletso tse tsamaisang (ke hore, e bapala karolo ea Sebaka sa Ts'ebeletso), hape e na le tlamo ho lisebelisoa tsa lehae. Ts'ebetso ea SCOM e tlameletsoe ho khoele ea OS. Ka lebaka la sena, ka har'a sesebelisoa u ka fumana litšebeletso tse kang tsena:

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

Ho feta moo, ka ho fetola mekhoa e utloahalang (SCOM) e tlamelletsoeng khoele, u ka fumana likopo tse batlang li ikemetse ho tloha sebakeng sa tlhahisoleseding, tse sebetsang ka har'a khoele e le 'ngoe. Ena ke tsela eo moreki oa rona ea mosesaane a sebetsang ka polokelo ea lifaele - ka har'a ts'ebetso e le 'ngoe ea OS ho na le lits'ebetso tse peli tsa SCOM, e' ngoe e amahanngoa le moreki, 'me ea bobeli le seva. Mokhoa ona o re lumella ho kopanya ho ngoloa ha khoutu e tla sebetsa ka bobeli polokelong ea lifaele tsa lehae le ho mofuta oa "sebele" oa li-client-server. Theko ea ho tšoana ho joalo e phahame haholo, empa ho itloaetsa ho bontša hore ke habohlokoa.

Ho ipapisitsoe le mofuta oa karolo ea SCOM, mohopolo oa khoebo le karolo ea 1C: Khoebo lia kengoa tšebetsong.

Sesebelisoa sa mosebelisi

Ka tsela, ka li-interfaces. Ha re sebelise li-control tse tloaelehileng tsa Windows; litaolo tsa rona li kengoa tšebetsong ka kotloloho ho Windows API. Bakeng sa mofuta oa Linux, ho entsoe lesela le sebetsang ka laeborari ea wxWidgets.
Laeborari ea litsamaiso ha e itšetlehe ka likarolo tse ling tsa 1C: Enterprise mme e sebelisoa ke rona lits'ebetsong tse ling tse nyane tsa kahare.

Ho theosa le lilemo tsa nts'etsopele ea 1C: Khoebo, ponahalo ea taolo e fetohile, empa phetoho e tebileng ea melao-motheo e etsahetse hang feela, ka 2009, ka ho lokolloa ha mofuta oa 8.2 le ho hlaha ha "liforomo tse laoloang". Ntle le ho fetola ponahalo, molao-motheo oa sebopeho sa sebopeho o fetohile haholo - ho bile le ho hanoa ha pixel-by-pixel boemo ba likarolo molemong oa phallo-peakanyo ea likarolo. Ntle le moo, mofuteng o mocha, litsamaiso ha li sebetse ka kotloloho le lintho tsa marang-rang, empa ka li-DTO tse khethehileng (Lintho tsa Phetiso ea Lintlha).
Liphetoho tsena li entse hore ho khonehe ho theha 1C: sebatli sa marang-rang sa Enterprise se phetang mohopolo oa C++ oa li-control tsa JavaScript. Re leka ho boloka ts'ebetso e lekanang pakeng tsa bareki ba basesaane le ba marang-rang. Maemong ao sena se sa khoneheng, ka mohlala ka lebaka la mefokolo ea JavaScript API e fumanehang (mohlala, bokhoni ba ho sebetsa ka lifaele bo fokotsehile haholo), hangata re kenya ts'ebetsong ts'ebetso e hlokahalang ka ho sebelisa lisebelisoa tsa sebatli tse ngotsoeng ho C ++. Hajoale re tšehetsa Internet Explorer le Microsoft Edge (Windows), Google Chrome (Windows), Firefox (Windows le Linux) le Safari (MacOS).

Ntle le moo, theknoloji ea mefuta e laoloang e sebelisoa ho theha sehokelo bakeng sa lits'ebetso tsa mehala sethaleng sa 1C. Ho lisebelisoa tsa thelefono, ho fana ka litsamaiso ho sebelisoa ho sebelisoa mahlale a hlahang tsamaisong ea ts'ebetso, empa bakeng sa sebopeho sa sebopeho sa sebopeho le karabelo ea sebopeho, khoutu e ts'oanang e sebelisoa joalo ka "1C" e kholo: sethala sa Khoebo.

Platform "1C: Enterprise" - ke eng e ka tlas'a hood?
1C interface ho Linux OS

Platform "1C: Enterprise" - ke eng e ka tlas'a hood?
Khokahano ea 1C sesebelisoa sa mohala

1C segokanyimmediamentsi sa sebolokigolo sethaleng tse ling Platform "1C: Enterprise" - ke eng e ka tlas'a hood?
1C interface ho Windows OS

Platform "1C: Enterprise" - ke eng e ka tlas'a hood?
Interface 1C - sebatli sa webo

Open mohloli o

Le hoja re sa sebelise lilaebrari tse tloaelehileng bakeng sa baetsi ba C++ ba tlas'a Windows (MFC, li-control tse tsoang ho WinAPI), ha re ingolle likarolo tsohle ka borona. Laeborari e se e boletsoe wxWidgets, hape re sebelisa:

  • cURL bakeng sa ho sebetsa le HTTP le FTP.
  • OpenSSL bakeng sa ho sebetsa ka cryptography le ho theha likhokahano tsa TLS
  • libxml2 le libxslt bakeng sa tlhahlobo ea XML
  • libetpan bakeng sa ho sebetsa ka liprothokholo tsa mangolo (POP3, SMTP, IMAP)
  • etsisa ho hlalosa melaetsa ea imeile
  • sqllite bakeng sa ho boloka litlaleho tsa basebelisi
  • ICU bakeng sa machaba

Lenane le tsoela pele.
Ho feta moo, re sebelisa mofuta o fetotsoeng haholo Google Test и Google Mock ha ho etsoa liteko tsa lihlopha.
Lilaebrari li ne li hloka ho ikamahanya le maemo hore li tsamaisane le mohlala oa mokhatlo oa karolo oa SCOM.
Ho ata ha 1C ho etsa hore sethala e be teko e babatsehang ea matla bakeng sa lilaebrari tse sebelisoang ho eona. Mefuta e fapaneng ea basebelisi le maemo a senola liphoso ka potlako esita le libakeng tse sa sebelisoeng haholo tsa khoutu. Re li lokisa le ho leka ho li khutlisetsa ho bangoli ba laeborari. Boiphihlelo ba ho sebelisana bo fetoha bo fapaneng haholo.
Bahlahisi cURL и libetpan araba ka potlako ho likopo tsa ho hula, empa patch, mohlala, ho OpenSSL Ha rea ​​ka ra khona ho e khutlisa.

fihlela qeto e

Sehloohong seo re ammeng lintlha tse 'maloa tsa mantlha tsa nts'etsopele ea 1C: Sethala sa Khoebo. Boemong bo fokolang ba sengoloa, re amme feela likarolo tse ling tse khahlisang, ho ea ka maikutlo a rona,.
Tlhaloso e akaretsang ea mekhoa e fapaneng ea sethala e ka fumanoa mona.
Ke lihlooho life tse ka u khahlang lihloohong tse tlang?

Sethala sa mohala sa 1C se kengoa tšebetsong joang?
Tlhaloso ea sebopeho sa kahare sa moreki oa webo?
Kapa mohlomong u thahasella mokhoa oa ho khetha likarolo bakeng sa litokollo tse ncha, ho nts'etsapele le liteko?

Ngola litlhalosong!

Source: www.habr.com

Eketsa ka tlhaloso