私はASP.NET Webフォームを使用して構築された大規模なレガシープロジェクトで作業しており、同じプロジェクトにMVCライブラリを追加するという考えはあちこちに放棄されています。私はこれが可能であることを知っています(たくさんの記事が利用可能です)が、これが同様のことをした人に推奨されないのはなぜでしょうか。
新しいMVCパターンを使用してアプリケーションの新しい領域を構築し、レガシーページを常に実行し続けることができるという考えです。
編集:明確にするために、MVPパターンはこのプロジェクトの一部ですでに使用されているため、この記事で説明されているものと同様のことを行うことは考慮していません: https://www.simple-talk。 com/dotnet/asp.net/mixing-web-forms-and-asp.net-mvc /
これは、アプリケーションを書き直すのに悪い方法ではありません。これは、フェーズで発生する長期の書き換えに特に役立ちます。
CodedUIテスト(またはWatinまたはSelenium)を利用する「テストプロジェクト」を追加して、ブラウザーを介してWebFormsアプリケーションをテストします。 SpecFlowを使用してテストケースを定義することもできます。これを使用して、WebFormsアプリケーションに大きな影響を与えました。
WebFormsアプリケーションの適切なテストカバレッジが得られたら、リファクタリングの次のフェーズである、共通コンポーネントを別のクラスライブラリに移動することができます。ここで、モデルとデータアクセスレイヤーを作成できます。このライブラリへの参照をWebFormsアプリケーションに追加できます。フェーズ1で作成したテストは、既存のビジネスルールを破らないことを確認します
機能をMVCアプリケーションに移植し、WebFormsアプリではなくMVCアプリを使用するようにテストを変更します。
ステップ1と2は同時に取り組むことができます。機能全体をテストし、その共通コンポーネントをWebFormsアプリケーションから切り離したら、ステップ3から始めることもできます。
作業を主な機能に分割します。 MVCアプリケーションで機能がサポートされたら、WebFormsアプリケーションでシャットダウンします。コードをすべて削除できるようになるまで、最終的には元の自己の空洞になります。