La migrazione di un Delphi 7 applicazione .NET

Qualche consiglio su come eseguire la migrazione di un esistente Delphi 7 applicazioni di business .NET 2.0 in Visual Studio 2005?

Visual Studio 2005 è già stato acquistato, l’azienda vuole allontanarsi dalla Borland/Codegear strumenti.

L’applicazione è un client unico eseguibile del server, utilizzando un numero di 3 ° parti i controlli dell’interfaccia utente e Crystal reports 10 per la segnalazione.

C’è un’ampia logica di business diffusione attraverso Delphi tipi di interfaccia utente, così come molti di SQL Server 2000 stored procedure. Spostare gran parte della stored proc logica .NET classi è un altro obiettivo.

Per ridurre l’impatto sui clienti, pezzo per pezzo, con un approccio piuttosto che un completo re-write/conversione sarebbe preferibile, se possibile. Grazie in anticipo.

[Aggiornamento] qualcuno Ha avuto esperienza, buono, cattivo o brutto, Gestito VCL per questo tipo di scenario?

Approccio RAD, cioè di miscelazione interfaccia utente e la logica, e l’uso di stored procedure rende la migrazione difficile. Devi idenfy “cuciture”, cioè la parte di codice che possono essere migrati e testato, e di farlo a poco a poco. Dai un’occhiata a Lavorare Efficacemente con il Codice Legacy. La pena di leggere questo libro di grande. E passare alla SOA approccio alla migrazione della Logica di Business dalla UI stored procedure e ai server.

OriginaleL’autore Ash | 2008-10-16

9 Replies
  1. 8

    Ho lavorato presso una società che è stata la migrazione da Delphi a WPF/.Netto circa 2007. Abbiamo provato un pezzo approccio. E ‘ stato doloroso. Siamo stati sempre in esecuzione in bachi in interoperabilità. Chiamando da Delfi a WPF o Winforms e ritorno doloroso. Se i vari controlli dell’interfaccia utente e le finestre della tua applicazione chiamata a vicenda un sacco, penso che una significativa esperienza dolori della crescita.

    Se si può permettersi di fare la conversione tutto in una volta vorrei andare per esso. Se non, divisi in parti da app che sono stand-alone o avere un minimo di interazione con il resto dell’applicazione.

    Vorrei anche suggerire di saltare in .Net 2008. Perché te la prendi una tecnologia che è quasi 4 anni (VS 2005)? Penso che è un molto, molto brutto affare decisione di scegliere di saltare in .Net 2.0 .Net 3.5 è molto stabile. L’unico motivo valido che mi sarebbe sempre presente per la gestione .Net 2.0 sarebbe per il supporto di Windows 2000. Hai ancora i clienti su Win2k? Avrai ancora i clienti su Win2k con il tempo la conversione è completa? Avete clienti che non si può ottenere per passare a XP o Vista? .Net 3.0 e 3.5 non sono supportati in Win2k. Che è l’unico aspetto negativo che posso pensare.

    .Net 3.5 e C# 2008 offrire significativi vantaggi per la vostra azienda. Avete un certo numero di caratteristiche del linguaggio che accelerare i tempi di sviluppo rispetto a C# 2.0. Hai WPF, che è di gran lunga superiore a Winforms. Direi che si può sviluppare la stessa batteleship-grigio Windows si potrebbe ottenere nel form di windows con WPF, a sviluppare più velocemente, e quando vuoi un pò di eye-candy si prevede di utilizzare una tecnologia in grado di fornire facilmente. Se stai imparando una nuova windowing piattaforma per questa conversione, perché non investire nell’apprendimento di cose nuove?

    Inoltre, la prego di dirmi che non hai effettivamente acquistare i VS 2005. È possibile acquistare un MSDN Universal licenza per circa lo stesso costo, e ogni legate allo sviluppo del prodotto di Microsoft. Acquistare da un 3rd party e si otterrà un buono sconto.

    Scusa se mi è venuto fuori negativo. Cordiali saluti, buona fortuna per la migrazione. Ho solo flashback quando penso di dover rinunciare a tutte le chicche .Net 3.5.

    Grazie per le vostre esperienze. Il business hanno ora deciso di mettere la decisione in attesa fino a quando il nuovo anno. Ora è probabile che si sposta .NET3.5. La decisione originaria .NET 2.0 è stato di 90 MB quadro esigenza di installazione.
    quindi, soggiorno con Delphi, e per la migrazione utilizzando modelli moderni. Hai un sacco di buone strutture e componenti in tutto, in puro Delphi, per la migrazione a n-Tier, ORM, SOA o DDD.

    OriginaleL’autore Jason Jackson

  2. 9

    Che suona come un davvero una pessima idea per me.

    C’è qualche vantaggio tecnologico per il vostro prodotto .NET, o è soprattutto una decisione politica di Microsoft shop? Client-server, Delphi è piuttosto difficile da battere. Ho usato VS2005/8 ed è veramente e autenticamente e sinceramente non è buono come Delphi per Win32 sviluppo. Ma se avete intenzione di migrare verso il web, quindi VS ha indubbi vantaggi.

    Se testardo commerciale gente semplicemente si rifiutano di utilizzare Delphi più, quindi KiwiBastard è corretto, IMO. La conversione prima di Delphi.NET, quindi eseguire la migrazione da lì a VS2005. O 2010, dal momento che è più realistico 🙂

    Business vedere la mancanza di sviluppo web in Delphi come un grosso rischio. Vogliono una piattaforma che consente la flessibilità nella scelta di diversi livelli UI (Web, Desktop, ecc).

    OriginaleL’autore JosephStyons

  3. 8

    Ho già lavorato in una società che ha voluto per la conversione da Delfi a C#.NET perché .NET è tutto fresco e lucido. Hanno portato in alcuni di più gli sviluppatori che aveva un sacco di C# esperienza e finiva con l’assumere 3 volte gli sviluppatori il doppio del tempo per porto l’applicazione in C#, e poi ha fatto scrivere per la prima volta in Delphi per pochissimo ROI (un paio di nuove caratteristiche sono state aggiunte nel processo). Più i clienti non erano felici con le prestazioni di un’applicazione o l’interfaccia utente.

    Caso di studio dopo studio di caso dimostra che la riscrittura è una cattiva idea. (Hat tip per kogus)

    Se si deve spostare .NET (sì, lo so, non prendere la decisione, qualcuno con meno informazioni fatto) quindi mi sento di suggerire l’utilizzo di Delphi per .NET o RemObjects Oxygene. Quest’ultimo è un plug-in Visual Studio. Ma anche marc hofman, il Chief Software Architect di RemObjects Oxygene ha detto che è una cattiva idea per eseguire la migrazione di una perfettamente funzionante applicazione .NET “solo perché.”

    Se si può aspettare per Delphi Prism, che è anche un componente aggiuntivo di Visual Studio, che dovrebbe essere entro la fine dell’anno.

    Buoni punti e grazie per il link. Completa ri-scrivere è certamente l’ultima opzione. Con tanto di logica nel database anche se gran parte di esso non ha bisogno di cambiare, almeno inizialmente.

    OriginaleL’autore Jim McKeeth

  4. 3

    Pezzo di conversione significherebbe cambiare il nativo Delphi codice da utilizzare COM in modo che il .NET lato possono co-esistere con Delphi (o magari utilizzando qualche altra tecnologia – difficile da dire)

    Se è possibile, potrebbe essere più facile per convertire l’app per Delphi.NET prima, almeno la .NET bit sarà in grado di comunicare un po ‘ più facile.

    Solo un pensiero.

    Grazie, sono appassionato di allontanarsi da Delphi/Borland interamente. Sembra frammentario sta per essere l’approccio utilizzato.

    OriginaleL’autore JamesSugrue

  5. 2

    Allontanarsi da CodeGear/Borland strumenti di base, elimina qualsiasi Delphi .NETTO a base di soluzione e una riscrittura totale della vostra applicazione.

    Spero che la mia risposta qui sotto aiuta a prendere delle decisioni.

    Esperienza (avendo riscritto Delphi applicazione con un team di persone) si riduce a una delle due opzioni di seguito.

    Ma prima un avvertimento: si prende almeno il totale sviluppo sforzo impiegato per scrivere il tuo attuale Delphi applicazione.

    Nel nostro caso, questo sforzo è stato garantito, dato che il vecchio Delphi applicazione (che in realtà era la Kylix) aveva un fine-di-vita a causa di vari motivi.
    Il nostro riscrivere componeva di due parti: riscrivere con limitata funzionalità extra seguita da un sacco di funzionalità extra (il design della prima parte già preso la seconda parte in conto).

    Indietro per le tue scelte:

    1 – una totale riscrittura in C# o VB.NET in Visual Studio

    2 – un parziale riutilizzo dell’esistente Delphi codice a livello aziendale utilizzando Oxygene da RemObjecs (Visual Studio plugin con una sintassi molto simile a Delphi sintassi). CodeGear offrirà Prisma presto (probabilmente entro la fine del 2008), che potrà anche essere integrato in Visual Studio.

    Perché .NETTO di accesso ai dati e l’interfaccia utente sono completamente diversi da Delphi, dovrete fare queste da zero (sia per lo scenario 1 e 2). Visual Studio 2008, che offre un sacco di vantaggi, qui su Visual Studio 2005.

    Non c’è nessuna tale cosa come fare questa migrazione graduale, dato che si fanno una piattaforma completa cambiare da qui, è un tutto o niente approccio.

    Scenario sia la volontà di richiedere una considerevole quantità di tempo (anche se si dispone di Delphi esperienza, farti abituati .NET world vorrà del tempo).

    Visual Studio può interagire con Crystal Reports, e va bene con SQL Server.

    Da Visual Studio 2008, che offre un sacco di vantaggi (non solo .NET 3.5, ma anche la produttività saggio), è meglio andare con quella.
    Sul lato dell’interfaccia utente, è necessario fare una scelta equilibrata tra WinForms (aka Windows Form) e Windows Presentation Foundation (aka WPF).

    Se si tratta di una 1-a-1 riscrittura, si potrebbe desiderare di attaccare con WinForms come familiarità per quello che hai. Probabilmente la necessità di utilizzare 3 componenti di terze parti per ottenere la vostra UI andando, DevExpress è una buona scelta qui come hanno componenti simili in Delphi e Visual Studio.

    Ma se si vuole andare per il futuro eye candy, allora si potrebbe prendere in considerazione di WPF. Essere preparati per una ripida curva di apprendimento qui di WinForms, in quanto è molto diverso da quello a cui siete abituati.

    Se si decide di rimanere con Delphi, si potrebbe desiderare di guardare in VCL per il Web (aka IntraWeb) e in Delphi 2009 (molto è cambiato in Delphi mondo da Delphi 7 è stato annunciato 6 anni fa).

    Buona fortuna per fare le vostre scelte!

    –jeroen

    OriginaleL’autore Jeroen Wiert Pluimers

  6. 2

    Vorrei suggerire Hydra da RemObjects. Fondamentalmente, raps l’interfaccia com e fornisce un pattern observer per l’interfacciamento tra Delphi e .Net applicazione. Si può avere .Forme nette apparire sui pannelli all’interno di Delphi app. Un bel percorso di migrazione in cui è possibile sostituire il vostro Delphi codice un po ‘ come si esegue la migrazione di funzionalità .Net.

    OriginaleL’autore Bob McCabe

  7. 1

    Per me la domanda sarebbe: quale lingua vorresti utilizzare? Spero di C# e non VB.Net. (Con tutte le imbarazzante la politica in questo esempio di utilizzo: questo non è chiaro.)

    Il prossimo sarà probabilmente sentire è che ci sono convertitori là fuori che vi aiuterà a fare questo. Siamo andati tramite una valutazione dei convertitori (Delphi 7, C#) e sono stati molto! deluso.

    Posso suggerire un compromesso? Come circa Delphi Prism? È Delphi in VS2008. Certo, è ancora Delphi e quindi Codegear, ma hai anche la VS (in quanto la società si aspetta da voi).

    Il business vuole allontanarsi da Borland/Codegear interamente. Vogliono anche più flessibili opzioni di interfaccia utente, Web, Desktop, mobile, servizi (in questo ordine).

    OriginaleL’autore Ralph M. Rickenbach

  8. 1

    C’è stata una relazione scientifica di una riuscita la trasformazione di 1,5 milioni di euro linea di Delphi Progetto in C#, da Giovanni Brant, Non Roberts et al. Ha scritto un Delphi parser, C# generatore e un sacco di regole di trasformazione sull’AST. Estendere gradualmente l’insieme di regole, di fare una daily build, un sacco di test di unità, e alcune riscrittura di difficile Delphi parti ha permesso con un team di 4 persone, tra cui alcuni degli sviluppatori originali, con profonda Delphi & C# conoscenza, per migrare il software in 18 mesi. Giovanni Brant & Non Roberts essere gli sviluppatori originali di refactoring del browser e la SmaCC compilatore kit di costruzione, è improbabile che siano in grado di andare più veloce.

    Se questo è stato un investimento importante, non è per nulla ‘la stessa dimensione dell’originale di sviluppo’. Gli autori fanno notare che una semplice riscrittura, senza strumenti o con un colpo singolo strumento, come notato da Jeroen, è molto probabile risultato che, in particolare se i nuovi requisiti sono presi in considerazione.

    Gli autori hanno fatto grande scala rifattorizzazione rimanendo sulla stessa piattaforma per un progetto diverso, sostituire completamente la persistenza delle infrastrutture. Questo potrebbe essere rilevante per anziani (BDE?) base di progetti.

    +1 Per le info. Sito Web refactory.com Enorme di lavoro e tutto dipenderà da come il Delphi è stato scritto: ad esempio, se il RAD è stato utilizzato e UI, DB e la logica sono misti, sarà abbastanza doloroso/impossibile essere automatizzato, in quanto si avrebbe bisogno di trasformare tutta la VCL gerarchia di classi. E qual è il vantaggio di una 1-a-1 di traduzione? La modifica di algoritmi e modelli (ad esempio l’introduzione di Domain-Driven Design) può essere valsa la pena. Non “tradurre” il codice esistente da un ambiente ad un altro.
    Le parti della VCL gerarchia che sono stati utilizzati weer tradotto, sì. Spendono un sacco di tempo di mappatura da vcl .net framework

    OriginaleL’autore Stephan Eggermont

  9. 0

    Solo si può davvero decidere se un pezzo approccio è possibile. Per esempio, l’applicazione può essere diviso facilmente o sono tutte le forme troppo fortemente accoppiati con tutta la logica di business. Tecnicamente è possibile, ma tutto dipende da come la base di codice è strutturato davvero.

    OriginaleL’autore Craig

Lascia un commento