質問

Visual Studio 2005で既存のDelphi 7ビジネスアプリケーションを.NET 2.0に移行する方法に関するアドバイスはありますか?

Visual Studio 2005は既に購入されているため、Borland / Codegearツールから離れたいと考えています。

アプリケーションは単一のクライアントサーバー実行可能ファイルであり、多数のサードパーティUIコントロールとレポート用のCrystalレポート10を利用します。

多くのSQL Server 2000ストアドプロシージャだけでなく、UIのDelphiタイプにまたがる広範なビジネスロジックがあります。ストアドプロシージャロジックの多くを.NETクラスに移動することも、もう1つの目標です。

顧客への影響を減らすには、可能であれば、完全な再書き込み/変換ではなく、ピースごとのアプローチをお勧めします。事前に感謝します。

[更新]この種のシナリオでマネージVCLを使用した経験はありますか?

役に立ちましたか?

解決

2007年ごろに、DelphiからWPF / .Netに移行する会社で働いていました。痛かった。相互運用機能では、常に微妙なバグが発生していました。 DelphiからWPFまたはWinformsに呼び出して戻るのは苦痛です。アプリケーションのさまざまなUIコントロールとウィンドウが互いに頻繁に呼び出しを行う場合、深刻な成長の痛みが発生すると思います。

一度にすべての変換を行う余裕がある場合は、それを選択します。そうでない場合は、アプリのスタンドアロン部分またはアプリの他の部分とのやり取りが最小限である部分を分割します。

また、.Net 2008に飛び込むことをお勧めします。なぜ4年近く前(VS 2005)のテクノロジーを選ぶのですか? .Net 3.5が非常に安定しているときに.Net 2.0に移行することを選択することは、非常に悪いビジネス上の決定だと思います。 .Net 2.0の管理に私が提示する唯一の正当な理由は、Windows 2000をサポートすることです。Win2kの顧客はまだいますか?変換が完了するまでに、Win2kの顧客はまだいますか? XPまたはVistaに移行できない顧客がいますか? .Net 3.0および3.5は、Win2kではサポートされていません。それは私が考えることができる唯一の欠点です。

.Net 3.5およびC#2008は、企業に大きな利点をもたらします。 C#2.0と比較して開発時間を短縮する多くの言語機能があります。 WPFがあり、Winformsよりもはるかに優れています。 WPFを使用してWinformsで取得するのと同じbatteleship-gray Windowsを開発し、それらをより速く開発でき、見た目が欲しいときは、簡単に提供できるテクノロジーを使用することになります。この変換のための新しいウィンドウプラットフォームを学習している場合、新しいものの学習に投資してみませんか?

また、VS 2005を実際に購入しなかったことを教えてください。 MSDN Universal ライセンスをほぼ同じコストで購入し、Microsoftが開発するすべての開発関連製品を入手します。サードパーティから購入すると、割引が適用されます。

ネガティブになってしまったらごめんなさい。心から、移行に幸運を。 .Net 3.5ですべてのグッズを放棄しなければならないと思うとき、私はただフラッシュバックを持っています。

他のヒント

それは本当に悪い考えのように思えます。

あなたの製品が.NETに含まれることに技術的な利点はありますか、それともMicrosoftショップになるという政治的な決断ですか?クライアントサーバーの場合、Delphiは非常に優れています。私はVS2005 / 8を使用しましたが、それはDelphi for Win32開発ほど優れたものではありません。ただし、将来的にWebに移行する場合、VSには明確な利点があります。

頑固なビジネスマンが単にDelphiの使用を拒否した場合、KiwiBastardは正しい、IMOです。最初にDelphi.NETに変換してから、そこからVS2005に移行します。または2010、それはより現実的なタイムラインなので:)

.NETはすべてかっこよくて輝いているので、以前はDelphiからC#.NETに変換したい会社で働いていました。 C#の経験が豊富な開発者をさらに連れてきて、アプリケーションをC#に移植するのに開発者の3倍の時間がかかり、Delphiで初めて追加のROI(わずかな追加の新しい機能がプロセスに追加されました)。さらに、顧客はアプリケーションのパフォーマンスやUIに満足していませんでした。

ケーススタディ後のケーススタディは、書き換えは悪い考えであることを示しています。 ( kogus へのヒント)

.NETに移行する必要がある場合(ええ、私はあなたが決定を下さなかった、情報が少ないの人はそうしました)、 Delphi for .NET または RemObjects Oxygene 。後者はVisual Studioプラグインです。ただし、 RemObjects Oxygeneのチーフソフトウェアアーキテクトであるmarc hofman でも、完全に機能するアプリケーションを.NETに移行する" just because。"

Delphi Prismを待つことができる場合、これはVisual Studioアドインでもあり、今年後半にリリースされる予定です。

断片的な変換とは、.NET側がDelphiと共存できるように(または、おそらく他のテクノロジを使用するのは難しい)、ネイティブDelphiコードを変更してCOMを使用することです

可能であれば、最初にアプリをDelphi.NETに変換する方が簡単な場合があります。その後、少なくとも.NETビットが少し簡単に通信できるようになります。

考えてみてください。

CodeGear / Borlandツールから離れると、Delphi .NETベースのソリューションとアプリケーションの完全な書き直しが基本的に不要になります。

以下の私の答えがあなたの決定に役立つことを願っています。

経験から(人々のチームでDelphiアプリケーションを書き直した)、それは以下の2つの選択肢のいずれかに要約されます。

ただし、最初に警告が表示されます。現在のDelphiアプリケーションを作成するには、少なくとも総開発努力が必要です。

私たちの場合、古いDelphiアプリケーション(実際はKylixでした)にはさまざまな理由で寿命があったので、この努力は保証されました。 書き換えは、2つの部分で構成されていました。追加の機能が制限された後、多くの追加の機能が続きます(最初の部分の設計では、すでに2番目の部分が考慮されています)。

選択に戻る:

1- C#またはVisual StudioのVB.NETでの完全な書き換え

2- RemObjecsのOxygene(Delphi構文に非常に類似した構文のVisual Studioプラグイン)を使用して、既存のDelphiビジネスレイヤーコードを部分的に再利用します。 CodeGearはすぐに(おそらく2008年末までに)Prismを提供し、これもVisual Studioに統合されます。

.NETデータアクセスとUIはDelphiとはまったく異なるため、これらを最初から行う必要があります(シナリオ1と2の両方)。 Visual Studio 2008は、Visual Studio 2005よりも多くの利点を提供します。

ここでプラットフォームの完全な変更を行うため、この移行を徐々に行うようなことはありません。これは、オールオアナッシングアプローチです。

両方のシナリオにはかなりの時間がかかります(Delphiの経験がある場合でも、.NETの世界に慣れるには時間がかかります)。

Visual StudioはCrystal Reportsとやり取りでき、SQL Serverとの相性が良い。

Visual Studio 2008には多くの利点があります(.NET 3.5だけでなく、生産性の面でも)ので、それをお勧めします。 UI側では、WinForms(別名Windows Forms)とWindows Presentation Foundation(別名WPF)の間でバランスの取れた選択を行う必要があります。

1対1の書き換えの場合は、WinFormsを使い慣れているため、WinFormsを使い続けることをお勧めします。 UIを使用するには、おそらくサードパーティのコンポーネントを使用する必要があります。 DevExpressは、DelphiとVisual Studioに同様のコンポーネントがあるため、ここでは適切な選択です。

しかし、将来の見た目を楽しみたい場合は、WPFを検討してください。ここではWinFormsよりも急な学習曲線に備えてください。これは、慣れているものとは大きく異なります。

Delphiにとどまることにした場合、VCL for the Web(別名IntraWeb)およびDelphi 2009(Delphi 6が6年前に発表されて以来、Delphiの世界では多くのことが変更されています) p>

幸運をお祈りします!

-jeroen

RemObjectsのHydraをご覧になることをお勧めします。基本的にはcomインターフェースをラップし、Delphiと.Netアプリケーションの間のインターフェース用のオブザーバーパターンを提供します。 Delphiアプリ内のパネルに.Netフォームを表示できます。これにより、機能を.Netに移行する際にDelphiコードを少しずつ置き換えるという優れた移行パスが提供されます。

質問は、どの言語を使用しますか? VB.NetではなくC#を願っています。 (このユースケースのすべての厄介な政治では、これは決して明確ではありません。)

次に耳にするのは、これを行うのに役立つコンバーターがあることです。このようなコンバーター(Delphi 7からC#へ)の評価を行ったところ、非常にうまくいきました!がっかり。

妥協案を提案できますか? Delphi Prismはどうですか? VS2008ではDelphiです。確かに、あなたはまだDelphiとCodegearを持っていますが、VSも持っています(あなたの会社があなたに期待しているように)。

ジョン・ブラント、ドン・ロバーツなどによる150万行のDelphiプロジェクトからC#への変換の成功に関する科学報告があります。彼はDelphiパーサー、C#ジェネレーター、およびASTでの多数の変換ルールを作成しました。一連のルールを徐々に拡張し、毎日のビルドを行い、多くの単体テストを実行し、Delphiの難しい部分をいくつか書き直したことで、4人のチームができました。 C#の知識。18か月でソフトウェアを移行します。ジョン・ブラント&リファクタリングブラウザーとSmaCCコンパイラー構築キットの最初の開発者であるドンロバーツは、そんなに速く動くことはできないでしょう。

これは重要な投資でしたが、「元の開発と同じサイズ」ではありません。著者は、Jeroenが述べたように、ツールを使用しないか、単発ツールを使用した簡単な書き直しが、特に新しい要件を考慮に入れる場合、結果として生じる可能性が非常に高いことに注意します。

著者は、異なるプロジェクトのために同じプラットフォームにとどまりながら大規模なリファクタリングを行い、永続性インフラストラクチャを完全に置き換えました。これは、古い(BDE?)ベースのプロジェクトに関連する可能性があります。

ピースごとのアプローチが可能かどうかを本当に判断できるのはあなただけです。たとえば、アプリケーションを簡単に分割したり、すべてのフォームがすべてのビジネスロジックと強く結合しすぎたりする可能性があります。技術的には可能ですが、すべてはコードベースの実際の構造に依存します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top