Rosci "1C: Inceptum" - quid sub cucullo?

Heus Habr!
In hoc articulo fabulam incipiemus quomodo intus operatur suggestum "1C:Inceptum 8" et quaenam technologiae in eius progressu adhibeantur.

Rosci "1C: Inceptum" - quid sub cucullo?

Cur hoc interesting cogitamus? Primo, quia 1C:Intraprise 8 suggestum magnum est (plus quam 10 decies centena milia linearum Codicis) applicationis in C++ (clientis, servo, etc.), JavaScript (cliens interreti), ac recentius, Et Java. Magnae incepta interesting saltem propter eorum scalam esse possunt, quia quaestiones quae in parvo basi parvae notae invisibiles sunt, plena vi in ​​talibus inceptis oriuntur. Secundo, "1C: Inceptum" est replicabile, "coectum" productum, et paucissimi sunt articuli de talibus explicationibus in Habre. Etiam semper interest scire quomodo vita in aliis iugis et societatibus sit.

Sic incipias. In hoc articulo perspectum dabimus nonnullarum technologiarum quae in suggestu adhibitae sunt ac notae notae, sine sollicitudine penitus in exsequendum. Re vera, per multas machinas, narratio singillatim unum articulum egeret, et per aliquot totum librum!
Incipere, de rebus fundamentalibus diiudicare valet - quid sit 1C:Inceptivum suggestum est et quid constet. Responsio huic quaestioni non tam simplex est, quod vocabulum "rostris" (brevitatis modo sic appellabimus) significat medium ad applicationes negotiorum explicandas, ambitus cursus, et instrumenta administrationis. Sequentia partes dure distingui possunt;

  • server botrum portassent
  • "Tenuis" clientem potest connectens cum servo per http ac suum binarii protocol
  • clientis ad opus in duos ORDO architectura cum database sita in ferreus coegi vel network folder
  • web client
  • applicationem servo administratio instrumenta
  • progressionem environment (quae Configurator)
  • runtime ambitus iOS, Android et Fenestra Phone (mobilis suggestus 1C)

Omnes hae partes, excepta cliens interreti, in C++ scripta sunt. Accedit nuper nuntiatum Novae generationis conformatorscripta in Java.

patria apps

C++03 ad applicationes indigenas explicandas adhibetur. Pro Fenestra, Microsoft Visual C++ 12 (profile compatibilis cum XP Fenestra) pro compilator adhibetur, et pro Linux et Android - gcc 4.8, pro iOS - clang 5.0. Vexilla bibliotheca adhibita eadem est omnium systematum operantium et compilariorum - STLPort. Haec solutio verisimilitudinis STL errores specialium exsecutionis minuit. Nos nunc molimur migrare ad exsecutionem STL cum CLang navigio, sicut STLPort discontinuata est et repugnat cum GCC ++11 capacitatis modus.
Basis codicis servitoris est 99% communis, huius - 95%. Quin etiam suggestum mobile eodem C++ codice utatur ac "magnum" unum, cum tamen recipis adunationem aliquanto inferiorem sit.
Sicut plurimi C++ utentes, non vindicamus uti 100% facultatibus linguae eiusque bibliothecae. Ita nos Boost propemodum non utimur, et una lineamenta linguae dynamica est genus mittentes. Eodem tempore naviter utimur;

  • STL (specialis chordarum, vasorum et algorithmorum)
  • multiplex hereditas, ind. multa implementation hΓ¦reditatem
  • templates
  • dictarum excepcionium
  • dolor indicibusque (custodo implementation)

Per plures hereditates interfaces (classes omnino abstractas), exemplum componentis fieri potest, de quo infra dicetur.

components

Ut modularity cura, omnis functionalitas dividitur in partes, quae sunt bibliothecae dynamicae (*.dll pro Fenestra, *.sic pro Linux). Sunt plura quam centum quinquaginta in summa, hic nonnulla eorum descriptiones;

backend
Metadata engine continet platform

accnt
Obiecta quae applicationes electronicae utuntur ad ratihabitionem monumentorum aedificare (chartae rationum et tabularum rationum)

BSL
Lingua embedded engine supplicium

nulla
Consuetudo exsecutionis memoriae allocator

dbeng8
Fasciculi database machinam. Simplex fasciculus server datorum machinam secundum ISAM, quae etiam simplex SQL processor includit

wbase
Bases classes et functiones continet ad exsequendam usuram interfaciei Windows - classes fenestrae, accessum GDI, etc.

Dividere in plures partes utile est ex pluribus respectibus;

  • Separatio melius consilium promovet, praesertim in meliori codice solitario
  • Ex copia partium molliter diversas optiones partus convenire potes:
    • Exempli gratia, installation tenuis clientis wbasam continebit, sed backend non habebit
    • sed servo e contra non erit
    • et bene habet utique nulla et bsl

Omnes components ad hanc optionem launchendi requisiti sunt, cum programma incipit. Hoc imprimis necessarium est in classibus SCOM perscriptis, de quibus infra dicetur.

SCOM

Pro compositione in inferiore gradu, systema SCOM adhibitum est, bibliotheca similis in doetrina cum ATL. Pro iis qui cum ATL non laboraverunt, praecipuas facultates et lineamenta breviter enumeramus.
Nam SCOM genus speciale dispositum est:

  • Modi officinas praebet qui te permittunt creare genus ab alio componente cognoscens solum nomen suum (sine exsecutione revelans)
  • Relationem computationis praebet infrastructuram smarter monstratorem. SCOM genus vita non indiget monitored manually
  • Permittit tibi explorare an objectum instrumenti interfaciei specificati et statim monstratorem objecti ad monstratorem convertat ad interfaciem.
  • Facere servitium objectum quod semper accessibile per modum get_service, etc.

Exempli gratia, classis describere potes ad JSON legendi (exempli gratia JSONStreamReader) in json.dll componente.
Classes et instantiae ex aliis elementis creari possunt, necesse est ut in machina SCOM adscribantur;

SCOM_CLASS_ENTRY(JSONStreamReader)

Haec tortor specialem static recordor classium describet, cuius constructor vocabitur cum component in memoriam oneratur.
Post hoc, in alio componente potest creare exemplum eius;

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

Ad officia sustinenda, SCOM additam, magis compositam infrastructuram praebet. Integrum est notio processus SCOM, quae est continens pro servitiis currentibus (i.e., locum tenet servitii Locatoris), et ligamen continet ad facultates locales. Processus SCOM cum filo OS ligatur. Propter hoc, intra applicationem operas huius modi recipere potes:

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

Praeterea, per switching processus logicales (SCOM) filo alligatos, applicationes accipere potes quae paene independentes sunt a parte spatii informationis, intra idem filum decurrentes. Ita noster cliens tenuis cum fasciculo database - intra unum OS processum duo processus SCOM sunt, unus cum cliente associatus, alter cum servo. Accessus hic nobis permittit ut scripturam codicis augeat quae tam in datorum fasciculorum locali quam in versione "reali" clientis sui. Pretium tantae uniformitatis supra caput est, sed usu pretium esse ostendit.

Ex exemplari componente SCOM, tum negotii logicae pars interfaciendi 1C: Inceptum ad effectum adducitur.

User interface est

Viam interfaces. Vexillum Windows controllis non utimur, potestates nostrae directe in Fenestra API implentur. Pro versione Linux, tabulatum factum est quod per bibliothecam wxWidgets operatur.
Bibliotheca regiminum ab aliis partibus 1C:Inceptis non pendet, et in pluribus aliis parvis utilitatibus internis a nobis adhibetur.

Per annos evolutionis 1C:Incepti, species regiminis mutata est, sed gravis mutatio principiorum semel tantum facta est, anno 2009, emissione versionis 8.2 et adventu "formarum administratarum". Praeter speciem mutandam, principium formae layout fundamentaliter mutavit β€” rejectio pixel-by-pixel positio elementorum in favorem elementorum fluxus-promissionis. Praeterea in novo exemplari moderamina non directe cum obiectis dominicis, sed cum specialibus DTOs operantur.Data serie objecta).
Hae mutationes effecit ut creare 1C:Innterprise clientem interretialem qui replicat logicam C++ JavaScript control. Conamur aequabilitatem functionis ponere inter clientes tenues et telas. In casibus in quibus hoc fieri non potest, exempli gratia propter limitationes JavaScript API in promptu est (exempli gratia, facultas operandi cum lima valde limitata), saepe efficiendum necessariam functionem utens extensiones pasco scriptas in C++. Nos currently suscipe Internet Explorer et Microsoft Edge (Fenestra), Google Chrome (Fenestra), Firefox (Fenestra et Linux) et Safari (MacOS).

Formae technologiae administratae praeterea adhibetur ut instrumenti ad mobiles applicationes in 1C suggestu crearet. In mobilibus machinis, red- ditio regiminum in usu technologiarum indigenarum ad systema operantem perficiendum est, sed ad logicae ratiocinationem et instrumenti responsionis formam, eodem codice usus est ac in "magno" 1C:Incepto suggestu.

Rosci "1C: Inceptum" - quid sub cucullo?
1C interface in Linux OS

Rosci "1C: Inceptum" - quid sub cucullo?
1C interface in mobili fabrica

1C interface in aliis platforms Rosci "1C: Inceptum" - quid sub cucullo?
1C interface in Fenestra OS

Rosci "1C: Inceptum" - quid sub cucullo?
Interface 1C - clientem interretialem

Patefacio Source

Etsi notis bibliothecis C++ tincidunt sub Windows (MFC moderandis WinAPI non utimur), nos omnes partes non scribimus. Bibliotheca iam dicta wxWidgetsatque utimur;

Sequitur elenchus.
Accedit, utimur versio valde mutata Google Test ΠΈ Google Mock unitas cum developing probat.
Bibliothecae aptatio requiritur ut cum exemplari SCOM organizationis componi possit.
Praevalentia 1C suggestum eximium fortitudinis experimentum bibliothecae in eo adhibitae facit. Varietas utentium et missionum cito errata manifestat in locis etiam rarissimis codicis. Nos ipsos corrigimus et auctores bibliothecae eos reddere conamur. Experientia commercii longe alia evadit.
developers cURL ΠΈ libetpan celeriter ad petitiones traho, sed commissura, e.g OpenSSL Nos nunquam id dare curoimus.

conclusio,

In articulo aliquot praecipuas rationes evolutionis 1C: Inceptum suggestum attigimus. In stricto articulo articuli tantum aliquas interesting attigimus, in opinione nostra, aspectus.
Descriptio generalis variarum machinarum suggestuum inveniri potest hic.
Quae argumenta tibi in futurorum articulorum usui forent?

Quomodo suggestum mobile 1C impletur?
Descriptio structurae internae clientis interreti?
Vel fortasse es interested in processu eligendi notas novas emissiones, excolendas et probandas?

Commentaria in scribe!

Source: www.habr.com