Best practice per l'archiviazione di blocchi di codice esterno

1

Sto costruendo un wrapper per uno strumento di test del carico che prenderà i file di configurazione e di scenario come yaml e costruirà un file xml grande e ingombrante che verrà distrutto quando non sarà più necessario.

Un file yaml di esempio sarà simile a questo:

# basic.yml
config:
  ip: 127.0.0.1
  rate: 1 
  maximum: 10
  iterations: 75
  email: [email protected]
  repeat: true

scenario:
  - wait 5
  - ping 7
  - wait 5

L'xml contiene una serie di dati specifici per lo strumento sottostante in fase di completamento ma che non devono mai essere visti da un utente finale.

Ad esempio, l'intestazione è come

<send retrans="500">
  <![CDATA[
   <!-- 25 lines of specific configuration that will never change -->
  ]]>
</send>

<recv response="100" optional="true"/>
<recv response="180" optional="true"/>
<recv response="183" optional="true"/>
<recv response="503" optional="true"/>
<recv response="200" rrs="true" rtd="true"></recv>

dove letteralmente nessuno delle informazioni in questo segmento deve essere mai modificato. In effetti, nulla nella sezione config dello yaml effettua l'xml. Ciò che influenza xml è lo scenario. Possiamo pensare allo scenario come un linguaggio specifico del dominio (dsl) in cui wait 5 significa che dobbiamo aggiungere

<pause milliseconds="5000"/> 

dopo l'intestazione e ping 7 significa che dobbiamo aggiungere

<send retrans="500">
  <![CDATA[

    <!-- 12 lines of specific configuration that will never change -->

    Signal=7   <!-- passed from yaml -->

    <!-- 6 lines of specific configuration that will never change -->

  ]]>
</send>

seguito da un finale

<pause milliseconds="5000"/> 

prima di altre 30-40 righe di xml specifici che non cambieranno mai.

Il mio approccio

Ho intenzione di utilizzare Ruby per eseguire questa implementazione, ma ciò è irrilevante per la mia domanda, che riguarda le migliori pratiche nella generazione di xml da un modello dsl. Sto pensando di tenere le mie "unità" xml in una sottodirectory come file di testo:

- header.txt
- wait.txt
- ping.txt
- footer.txt

Dove wait.txt apparirebbe come

<pause milliseconds="#{time}"/>

e il mio parser estrae il file di testo, usa l'interpolazione della stringa per inserire il tempo estratto dallo yaml prima di aggiungere il messaggio al file xml che viene generato. Potremmo pensare a dsl per generare un file xml per questo file yaml come

header
wait 5
ping 7
wait 5
footer

Domanda

Quali sono le migliori pratiche nell'uso di yaml per generare xml? C'è un modo più "rubino" per memorizzare i componenti xml sottostanti? Mi mancano opportunità nell'uso del formato xml?

    
posta Joshua Cook 10.11.2015 - 15:38
fonte

1 risposta

1

La procedura migliore è assicurarsi di poter generare YAML da XML e XML da YAML:

This proposal prescribes an isomorphic rendering in YAML of a subset of the TOSCA v1.0 XML specification ensuring that TOSCA semantics are preserved and can be transformed from XML to YAML or from YAML to XML. Additionally, in order to streamline the expression of TOSCA semantics, the YAML rendering is sought to be more concise and compact through the use of the YAML syntax.

Più il modo di strutturare i file in Ruby è come file .xml in un metadata o supporto directory.

Riferimenti

risposta data 11.09.2018 - 16:07
fonte

Leggi altre domande sui tag