Platforma "1C: Enterprise" - di binê kapê de çi ye?

Hey Habr!
Di vê gotarê de em ê dest bi çîrokê bikin ka ew di hundurê de çawa dixebite platforma "1C: Enterprise 8" û çi teknolojiyên di pêşveçûna wê de têne bikaranîn.

Platforma "1C: Enterprise" - di binê kapê de çi ye?

Çima em difikirin ku ev balkêş e? Ya yekem, ji ber ku platforma 1C: Enterprise 8 di C++ (muwekîlê, server, hwd.), JavaScript (muwekîlê malperê), û, herî dawî, û Java. Projeyên mezin bi kêmanî ji ber pîvana xwe dikarin balkêş bin, ji ber ku pirsgirêkên ku di bingehek kodek piçûk de nayên dîtin bi tevahî di projeyên weha de derdikevin. Ya duyemîn, "1C: Enterprise" hilberek dubare, "box" e, û di derheqê pêşkeftinên weha de li ser Habré pir hindik gotar hene. Di heman demê de her gav balkêş e ku hûn zanibin ka jiyan di tîm û pargîdaniyên din de çawa ye.

Ji ber vê yekê em dest pê bikin. Di vê gotarê de em ê hûrguliyek li ser hin teknolojiyên ku di platformê de têne bikar anîn û dîmenê xêz dikin, bêyî ku bi kûrahî di cîbicîkirinê de bigerin, bidin. Bi rastî, ji bo gelek mekanîzmayan, çîrokek berfireh dê gotarek cûda, û ji bo hinan, pirtûkek tevahî hewce bike!
Destpêkê, hêja ye ku meriv li ser tiştên bingehîn biryar bide - platforma 1C: Enterprise çi ye û ji kîjan hêmanan pêk tê. Bersiva vê pirsê ne ew qas hêsan e, ji ber ku têgîna "Platform" (ji bo kurtasî, em ê bi vî rengî jê re bibêjin) ji bo pêşkeftina sepanên karsaziyê, hawîrdorek dema xebitandinê, û amûrên rêveberiyê vedibêje. Hêmanên jêrîn dikarin bi gelemperî têne cûda kirin:

  • koma server
  • Muwekîlê "tenik" ku karibe bi serverê bi http û protokola xweya binary ve were girêdan
  • xerîdar ji bo xebitandina di mîmariya du-qatî de digel databasek ku li ser ajokerek hişk an peldanka torê ye
  • muwekîlê webê
  • Amûrên rêveberiya servera serîlêdanê
  • hawîrdora pêşkeftinê (wekî Configurator tê zanîn)
  • jîngeha xebitandinê ji bo iOS, Android û Windows Phone (platforma mobîl 1C)

Hemî van beşan, ji bilî xerîdarê malperê, bi C++-ê têne nivîsandin. Wekî din, di demên dawî de hat ragihandin jî heye Vesazkera nifşê nû, bi Java hatiye nivîsandin.

Apps Native

C++03 ji bo pêşxistina sepanên xwemalî tê bikar anîn. Ji bo Windows, Microsoft Visual C++ 12 (profîlek ku bi Windows XP-ê re têkildar e) wekî berhevkar, û ji bo Linux û Android - gcc 4.8, ji bo iOS - clang 5.0 tê bikar anîn. Pirtûkxaneya standard a ku tê bikar anîn ji bo hemî pergalên xebitandinê û berhevkeran yek e - STLPort. Ev çareserî îhtîmala xeletiyên pêkanîna STL-taybet kêm dike. Em naha plan dikin ku em koçî pêkanîna STL ya ku bi CLang re hatî şandin, ji ber ku STLPort hate sekinandin û bi moda çalak a C++11 ya gcc re nehevaheng e.
Bingeha koda serverê 99% hevpar e, ya xerîdar - 95%. Wekî din, tewra platforma mobîl heman koda C ++ wekî ya "mezin" bikar tîne, her çend rêjeya yekbûnê li wir hinekî kêmtir e.
Mîna piraniya bikarhênerên C++, em îdia nakin ku 100% ji kapasîteyên ziman û pirtûkxaneyên wî bikar tînin. Ji ber vê yekê, em bi pratîkî Boost bikar naynin, û yek ji taybetmendiyên zimên avêtina celebê dînamîk e. Di heman demê de, em bi awayekî çalak bikar tînin:

  • STL (bi taybetî rêzik, konteynir û algorîtmayan)
  • mîrata piralî, di nav de. mîrateya pêkanîna piralî
  • şêwazên
  • îstîsbarkirin
  • nîşankerên jîr (pêkanîna xwerû)

Bi karanîna mîrasiya pirjimar a navbeynkaran (çînên bi tevahî razber), modelek pêkhatî gengaz dibe, ku dê li jêr were nîqaş kirin.

Components

Ji bo misogerkirina modularîteyê, hemî fonksiyonel li ser pêkhateyan têne dabeş kirin, ku pirtûkxaneyên dînamîkî ne (*.dll ji bo Windows, *.so ji bo Linux). Bi tevahî zêdetirî sed û pêncî pêkhate hene; li vir danasîna hin ji wan hene:

paş- dawî ya
Motora metadata platformê vedihewîne

accnt
Tiştên ku pêşdebirên serîlêdanê ji bo çêkirina tomarên hesabkirinê bikar tînin (nexşeyên hesaban û tomarên hesabkirinê)

bsl
Motora cîbecîkirina zimanê bicîbûyî

nuke
Pêkanîna xwerû ya dabeşkerê bîranînê

dbeng8
Motora databasa pelê. Motorek databasa servera pelê ya hêsan a ku li ser bingeha ISAM-ê ye, ku di heman demê de pêvajoyek hêsan a SQL jî vedihewîne

wbase
Çîn û fonksiyonên bingehîn ji bo pêkanîna navgîniya bikarhêner a Windows-ê digire - çînên pencereyê, gihîştina GDI, hwd.

Dabeşkirina li gelek pêkhateyan ji çend xalan bikêr e:

  • Veqetandin sêwirana çêtir pêş dixe, bi taybetî veqetandina kodê çêtir
  • Ji komek pêkhateyan hûn dikarin bi nermî vebijarkên radestkirinê yên cihêreng berhev bikin:
    • Mînakî, sazkirinek xerîdarek zirav dê wbase hebe, lê dê pişta wê tune be
    • lê li ser servera wbase, berevajî, ew ê nebe
    • her du vebijark dê helbet nuke û bsl hebin

Hemî hêmanên ku ji bo vê vebijarka destpêkirinê hewce ne dema ku bername dest pê dike têne barkirin. Ev, bi taybetî, ji bo qeydkirina dersên SCOM hewce ye, ku dê li jêr were nîqaş kirin.

SCOM

Ji bo hilweşandina di astek jêrîn de, pergala SCOM, pirtûkxaneyek di îdeolojiyê de mîna ATL tê bikar anîn. Ji bo kesên ku bi ATL-ê re nexebitin, em bi kurtasî kapasîteyên sereke û taybetmendiyên sereke navnîş dikin.
Ji bo pola SCOM-a taybetî hatî sêwirandin:

  • Rêbazên kargehê peyda dike ku dihêle hûn ji pêkhateyek din çînek biafirînin ku tenê navê wê dizane (bêyî eşkerekirina pêkanînê)
  • Binesaziyek nîşankera jîr-hejmar-referansê peyda dike. Jiyana pola SCOM ne hewce ye ku bi destan were şopandin
  • Destûrê dide we ku hûn fêr bibin ka neşeyek navbeynek taybetî pêk tîne an na û bixweber nîşankerek ji objektê veguherîne nîşanek ji navbeynê
  • Tiştek karûbar biafirînin ku her gav bi rêbaza get_service ve tê gihîştin, hwd.

Mînakî, hûn dikarin çînek ji bo xwendina JSON (mînak, JSONStreamReader) di beşa json.dll de diyar bikin.
Ders û mînak dikarin ji hêmanên din werin afirandin; ew hewce ne ku di makîneya SCOM de bêne tomar kirin:

SCOM_CLASS_ENTRY(JSONStreamReader)

Ev makro dê çînek tomarkerek statîk a taybetî diyar bike, ku çêkerê wê dema ku pêkhatek di bîranînê de were barkirin, tê gotin.
Piştî vê yekê, hûn dikarin mînakek wê di beşek din de biafirînin:

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

Ji bo piştgirîkirina karûbaran, SCOM binesaziyek zêde, pir tevlihev pêşkêşî dike. Navendî wê têgîna pêvajoyek SCOM-ê ye, ku wekî konteynir ji bo xebitandina karûbarên karûbarê kar dike (ango, rola Locator Karûbarê dilîze), û di heman demê de girêdanek bi çavkaniyên herêmî re jî vedihewîne. Pêvajoya SCOM bi mijara OS-ê ve girêdayî ye. Bi saya vê, di hundurê serîlêdanê de hûn dikarin karûbarên bi vî rengî bistînin:

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

Digel vê yekê, bi guheztina pêvajoyên mentiqî (SCOM) yên ku bi mijarekê ve girêdayî ne, hûn dikarin serîlêdanên ku bi pratîkî ji nihêrîna cîhê agahdariyê serbixwe ne, di nav heman mijarê de dimeşînin bistînin. Bi vî rengî muwekîlê meya nazik bi databasek pelê re dixebite - di hundurê yek pêvajoyek OS-ê de du pêvajoyên SCOM hene, yek bi xerîdar re û ya duyemîn jî bi serverê re têkildar e. Ev nêzîkatî dihêle ku em nivîsandina kodê yek bikin ku dê hem li ser databasa pelê herêmî hem jî di guhertoya muwekîlê-pêşkêşkara "rast" de bixebite. Buhayê ji bo yekrengiya wusa zêde ye, lê pratîk nîşan dide ku ew hêja ye.

Li ser bingeha modela pêkhateya SCOM, hem mantiqa karsaziyê û hem jî beşa navberê ya 1C: Enterprise têne bicîh kirin.

Navrûya bikarhêner

Bi awayê, di derbarê navberan de. Em kontrolên standard ên Windows-ê bikar neynin; kontrolên me rasterast li ser API-ya Windows-ê têne bicîh kirin. Ji bo guhertoya Linux, qatek hatiye çêkirin ku di nav pirtûkxaneya wxWidgets de dixebite.
Pirtûkxaneya kontrolê ne girêdayî beşên din ên 1C: Enterprise ye û ji hêla me ve di gelek karûbarên navxweyî yên piçûk ên din de tê bikar anîn.

Di salên pêşkeftina 1C: Enterprise de, xuyangê kontrolê guherî, lê guherînek cidî di prensîban de tenê carekê, di sala 2009-an de, bi berdana guhertoya 8.2 û hatina "formên birêkûpêk" pêk hat. Digel guheztina xuyangê, prensîba sêwirana formê bi bingehîn guherî - redkirina pozîsyona pîxel-pixel a hêmanan di berjewendiya herikîna hêmanan de heye. Wekî din, di modela nû de, kontrol rasterast bi tiştên domainê re, lê bi DTO-yên taybetî re dixebitin (Objects Veguheztina Daneyên).
Van guhertinan gengaz kir ku meriv xerîdarek webê ya 1C: Enterprise biafirîne ku mantiqa C++ ya kontrolên JavaScript-ê dubare dike. Em hewl didin ku wekheviya fonksiyonel di navbera xerîdarên zirav û tevneyê de biparêzin. Di rewşên ku ev ne mumkin e, mînakî ji ber sînorkirinên JavaScript API-ya berdest (mînak, şiyana xebata bi pelan re pir sînordar e), em bi gelemperî bi karanîna pêvekên gerokê yên ku di C++-ê de hatine nivîsandin fonksiyona pêwîst pêk tînin. Em niha piştgirî didin Internet Explorer û Microsoft Edge (Windows), Google Chrome (Windows), Firefox (Windows û Linux) û Safari (MacOS).

Wekî din, teknolojiya formên birêvebirî ji bo afirandina navgînek ji bo serîlêdanên mobîl li ser platforma 1C tê bikar anîn. Li ser cîhazên desta, danasîna kontrolê bi karanîna teknolojiyên xwemalî yên pergala xebitandinê ve têne bicîh kirin, lê ji bo mantiqa sêwirana formê û bersiva navbeynê, heman kod wekî di platforma "mezin" 1C: Enterprise de tê bikar anîn.

Platforma "1C: Enterprise" - di binê kapê de çi ye?
Têkiliya 1C li ser Linux OS

Platforma "1C: Enterprise" - di binê kapê de çi ye?
Têkiliya 1C li ser cîhaza mobîl

Têkiliya 1C li ser platformên din Platforma "1C: Enterprise" - di binê kapê de çi ye?
Navbera 1C li ser Windows OS

Platforma "1C: Enterprise" - di binê kapê de çi ye?
Navbera 1C - muwekîlê malperê

çavkaniya vekirî

Her çend em pirtûkxaneyên standard ji bo pêşdebirên C++ yên di bin Windows-ê de (MFC, kontrolên ji WinAPI) bikar neynin jî, em hemî pêkhateyan bi xwe nanivîsin. Jixwe behsa pirtûkxaneyê hatiye kirin wxWidgets, û em jî bikar tînin:

  • Praya ji bo xebatê bi HTTP û FTP.
  • OpenSSL ji bo xebata bi krîptografî û damezrandina girêdanên TLS
  • libxml2 û libxslt ji bo parskirina XML
  • libetpan ji bo xebata bi protokolên nameyê (POP3, SMTP, IMAP)
  • mîmîk ji bo parvekirina peyamên e-nameyê
  • sqllite ji bo hilanîna têketinên bikarhêner
  • ICU ji bo navneteweyîbûnê

Lîsteya berdewam dike.
Wekî din, em guhertoyek pir guhertî bikar tînin Test Google и Google Mock dema ku ceribandinên yekîneyê pêşve dibin.
Ji bo ku bi modela rêxistina pêkhateya SCOM re hevaheng be, pirtûkxane hewcedarî adaptasyonê bûn.
Berbelavbûna 1C platformê ji bo pirtûkxaneyên ku tê de têne bikar anîn ceribandinek hêzek hêja dike. Cûrbecûr bikarhêner û senaryo zû di nav deverên kodê yên herî kêm têne bikar anîn de jî xeletiyan eşkere dike. Em bi xwe wan rast dikin û hewl didin ku wan bidin nivîskarên pirtûkxaneyê. Tecrûbeya danûstendinê pir cûda dibe.
Developers Praya и libetpan zû bersivê bidin daxwazên kişandinê, lê patch, wek nimûne, di nav de OpenSSL Me tu carî nekarî em paşde bidin.

encamê

Di gotarê de me li ser çend aliyên sereke yên pêşkeftina platforma 1C: Enterprise sekinî. Di çarçoveya sînorkirî ya gotarê de, me tenê li ser hin aliyên balkêş, bi dîtina me, sekinî.
Danasînek giştî ya mekanîzmayên cihêreng ên platformê dikare were dîtin vir.
Di gotarên pêşerojê de dê kîjan mijar ji we re eleqedar bin?

Platforma mobîl 1C çawa tête pêkanîn?
Danasîna avahiya hundurîn a xerîdarê malperê?
An jî dibe ku hûn bi pêvajoya hilbijartina taybetmendiyên ji bo berdanên nû, pêşkeftin û ceribandinê re eleqedar in?

Di şîroveyan de binivîsin!

Source: www.habr.com

Add a comment