Metti funzionalità nello stesso eseguibile con il flag della riga di comando, o mettilo in un file eseguibile separato?

2

Sfondo : sto lavorando a un servizio in cui la logica del dominio esiste come una libreria, e quindi l'eseguibile effettivo è costruito su un framework web come un wrapper attorno alla libreria logica del dominio. Non è garantito che due clienti eseguano la stessa versione di questo servizio.

Attività : mi è stato chiesto di creare un modo per stampare lo schema per rappresentare un sottocomponente della logica del dominio.

La mia soluzione : l'ho implementata come indicatore della riga di comando sul file eseguibile del servizio. Cioè se si passa --dump-schema X durante l'esecuzione del servizio, verrà semplicemente scaricato lo schema previsto di X e quindi uscito. Se non passi alcun flag, non stamperà nulla ma inizierà ad accettare le richieste come al solito.

Logica : l'ho fatto in questo modo per garantire che l'output del dump dello schema rimanga sincronizzato con quello che il servizio effettivo si aspetta quando viene eseguito dallo stesso binario. Inoltre, è mia personale convinzione che se una richiesta al servizio ha senso come un'invocazione da riga di comando one-shot, allora raramente è una cattiva idea consentirlo.

Esamina i commenti : quando discuti con un membro senior del team, hanno sostenuto che l'intera segnalazione della riga di comando è un passo indietro rispetto a come hanno fatto le cose prima - e potrebbe confondere come risultato. Preferirebbe se ci fosse un% eseguibile separatodump_schema che ha emesso il comando.

Controversia : posso capire l'argomento; sono un negozio Microsoft / Windows, quindi la CLI non è il modo in cui interagiscono naturalmente con i loro computer. Tuttavia, si stanno lentamente spostando verso un ambiente Linux / Unix, quindi secondo me è una specie di punto controverso.

La mia esitazione : tuttavia, riflettendo su questo punto, mi rendo conto che non ho argomenti validi per stabilire se sia preferibile un approccio (flag CLI o eseguibile separato). Sono praticamente la stessa cosa, tranne uno multiplex nella procedura main e l'altro nella shell.

Quindi c'è qualche possibilità che i geni siano in grado di confrontare e confrontare i due approcci? O è veramente un lavaggio?

    
posta kqr 05.11.2018 - 12:47
fonte

1 risposta

5

Non andare con eseguibili separati se significa duplicare roba che ora deve essere mantenuta sincronizzata. Se qualcosa crea "front-end" diversi per accedervi.

Ho risolto esattamente questo problema offrendo un collegamento di Windows che contiene l'opzione della riga di comando.

    
risposta data 05.11.2018 - 23:36
fonte