最初にはっきりさせておきたいのですが、私は「私の技術はあなたの技術よりも優れている」タイプの投稿を探しているわけではありません。これは実際のシナリオであり、私はこの決定に直面しています。これを念頭に置いて、次のように説明します。
WinForms アプリケーションがあります。初期の .NET 1.0 で開始されましたが、最初に出荷されたバージョンは .NET 1.1 を使用していました。レイヤー (BusinessLayer.dll、Datalayer.dll、Framework.DLL など) がありますが、このアプリケーションの「長い」開発サイクルのある時点で、「プレゼンテーション」レイヤー (Win フォーム) が何らかのコードに感染しました。したがって、「コードとコードビハインドを含むプレゼンテーションとの分離」は、ある種の神話です。悪い慣行であろうとなかろうと、真実はアプリケーションがそこにあり、それが機能するということです。
何年も経ち、.NET 2.0 ができました。ゆっくりと移行しましたが、ほとんど問題なく機能し、あちこちでいくつかの呼び出しを変更する必要がありました。最後のバージョンでも同じことが行われましたが、.NET 3.5sp1. ある種の Web サービスが必要だったため、代わりに WCF を使用することにしました。それは正常に動作します。しかし、これらすべての .NET アップグレードにもかかわらず、アプリケーションのコードベースのほとんどは、5 年前と同じ古いロックンロールのままです。データオブジェクトには Gentle.NET (古くてメンテナンスされていません) を使用しています (5 年前はありがたいことでした!)。
私たちのプレゼンテーション レイヤーである winform は、完全に gdi+ カスタム コントロールの 90% を採用しているため、「見栄えが良い」ものです。(可能な限り、WinAPI をハッキングする必要はありません)。アプリケーションはタッチ ベースです (つまり、インクを使用しますが、それに依存しません) が、ボタン、ラベルなど、すべてが触覚デバイスで使用するように「設計」されています。(TabletPC またはタッチスクリーン)。もちろん、キーボード/マウスを使用するユーザーもいます。
これらすべてを念頭に置いて、このすべての web2.0 とインターネットの混乱 (および Jeff の投稿 ;)) を考慮して、Web テクノロジを使用してアプリケーションを書き直す可能性を検討しています。このアイデアは明らかに、お客様により多くの可用性をもたらし (いつでもどこでも好きなときにシステムを使用できる)、メンテナンスを減らします (アップグレードすることができ、すべてのお客様が即座にアップグレードされます) などです。ご存知のように、通常のインターネット対WinAppのもの。
問題は、これがヘルスケア業界であることを考えると、すべての顧客がデータベースをサーバーに「移動」することに前向きであるとは限らないことです。サーバーなので、独自のコピーがあります。大きな問題ではありません (ただし、手動で更新する必要がありますが、win32 アプリを 5 年間更新してきたことを考えると、それは問題ではありません!)。
さて、メインの「質問」に戻ります。
チームは ASP.NET の経験がほとんどなく、ASP 2.0 (1999/2000 年) で多くのプログラミングを行いましたが、それは HTML+VBScript+CSS のスパゲッティでした。すべての経験 (インターネット バブル!) の後、私たちは VB6 に戻り、次に C#.NET 1x に戻りました。私たちは、WinForms の C# 開発者の小さなチームです。前回の .NET 3.5 ライドで、Linq To SQL の経験をいくつか獲得し、気に入りました。とても自然で、「5年前にこれがあったら…」という感じでした。
これらすべてを考えると、アプリケーションの書き直しは「単純な作業」ではなく (既知の C#.NET でやりたいと思っていたとしても)、時間と計画が必要ですが、数十の間違いを修正することができ、5 年かかりました。アプリケーションを使用した経験から、顧客がソフトウェアをどのように使用したいか、および現在のアプリを設計したときに (自分たちで) どのような制限を作成したかについて、より良いアイデアを持っていると言えます。アプリケーションとビジネスの仕組みに関するすべての「知識」を適用して、設計、コード、および使いやすさの点ではるかに優れたアプリケーションを作成できます。.NET 1.1 にはジェネリックさえなかったのを思い出してください! ;) (ここにたくさんの ArrayList がぶら下がっているのを見るでしょう)。
追加のメモとして、Crystal Reports を使用しています (そして、いつものように、Crystal Reports は嫌いです)。インク コントロールも「必須」ではないと思います。HTML/CSS は、HTML が WinForms ではない (したがって、再現できないものがある) ことを認識していますが、私たちが望むように見えるように形作ることができます。
これを MVC (または WebForms) で計画するのはクレイジーだと思いますか? 私は MVC (Ruby on Rails のような) のアイデアが好きです (本の基本を超えて Ruby でプログラミングしたことはありません)。それは「ロケット科学」ではないはずですよね?
この質問全体が少し主観的であることは承知していますが、老朽化した Winforms アプリケーションを新しい ASP/MVC/XXX Web アプリケーションに置き換えませんか? あなたは経験がありますか、または試みました(そして成功したか失敗しましたか)?
使用者が何をすべきかをより適切に決定するのに役立つ洞察をいただければ幸いです。
前もって感謝します!
アップデート: 回答してくれたすべての人に感謝します。これが良い動きであるかどうかを評価します。確かに大変な作業ですが、デスクトップ アプリが古くなっており (古いネット 1.1 ハックを使用)、 Vista と W7 ではほぼ問題なく動作していましたが、将来のアップデートで壊れる可能性があります。また、アプリケーションの「多かれ少なかれコア」部分の多くは、設計が不適切なアイデアを露呈しているため、特定のタスクを達成するためにあちこちでハッキングする必要がありました。一部は経験不足であり、一部はビジネスがどのように機能したかについての 100% の知識の欠如です (そして、顧客は自分が何を望んでいるのかわかりません)。新しいアプリケーション (どのような形式であっても) により、すべてのユーザーの知識を保持しながら、より優れた基盤を作成できます。しかし、それは大変な作業です :) したがって、ここではこれらすべてのオプションを検討します。一部の方がおっしゃっているように、
もう一度、すべてに感謝します!