Devo duplicare il codice attraverso le lingue?

4

Dove lavoro, usiamo un linguaggio per il nostro sviluppo di software desktop (Delphi) e un altro per applicazioni web (asp.net/c#). I miei capi vogliono che implementi una funzione su un sito Web, ma mi chiedono di svilupparla in Delphi perché pensano che un giorno potrebbero averne bisogno per uno dei nostri software.

Quando la stessa situazione è accaduta in passato, il mio collega ha chiamato la DLL Delphi nel suo codice C #, ma abbiamo avuto più problemi nel tentativo di eseguire il debug di quel codice.

È meglio riscrivere la funzione in C # o chiamare una DLL?

    
posta The herald of bad news 18.04.2018 - 17:17
fonte

2 risposte

9

Qual è la natura del codice? Se è per es. calcolo numerico, come la crittografia o l'elaborazione delle immagini, è probabile che sia facile inserirlo in una DLL. Se è qualcosa con ad es. I / O multi-thread, è probabile che sia molto più coinvolto.

Nel caso complesso, invece di una DLL, preferirei considerare un processo server, con alcune API (REST, json-rpc, protobufs, parsimonia, ecc.). La parte del web server potrebbe chiamarla tramite quell'API.

Lo sviluppo e il debug di ogni parte diventa molto più semplice, perché puoi farlo in separazione.

La duplicazione del codice è in genere una cattiva idea. Le implementazioni tendono a divergere nel tempo e ad avere discrepanze secondarie dovute alle differenze della piattaforma.

    
risposta data 18.04.2018 - 17:24
fonte
1

La duplicazione del codice è accettabile solo se il mantenimento e l'evoluzione sia dell'originale che del duplicato sono indipendenti l'uno dall'altro e se apportare una modifica su un lato non richiede automaticamente di cambiare l'altro lato.

Tuttavia, anche se vengono forniti questi prerequisiti, è comunque possibile sprecare alcuni effetti di sinergia creando un duplicato.

Ma se il tuo scenario di utilizzo principale è "Asp.net/c#", perché non ti avvicini questo all'opposto come hai fatto? Sviluppa la funzionalità in una DLL C # separata e rendi questa DLL abilitata al COM (come descritto qui ), che è piuttosto semplice in C #? Quindi puoi riutilizzarlo in un programma Delphi più tardi (si presume che "un giorno o l'altro arriverà mai).

    
risposta data 18.04.2018 - 22:08
fonte

Leggi altre domande sui tag