同じWebプロジェクト内のWebフォームとMVC


8

私はASP.NET Webフォームを使用して構築された大規模なレガシープロジェクトで作業しており、同じプロジェクトにMVCライブラリを追加するという考えはあちこちに放棄されています。私はこれが可能であることを知っています(たくさんの記事が利用可能です)が、同様のことをした人がこれを推奨するのかどうか、またなぜ推奨しないのか疑問に思っています。

新しいMVCパターンを使用してアプリケーションの新しい領域を構築し、レガシーページを常に実行し続けることができるという考えです。

編集:明確にするために、MVPパターンはこのプロジェクトの一部ですでに使用されているので考慮していませんが、この記事で説明されているものと同様のことをしています:https : //www.simple-talk.com/dotnet/ asp.net/mixing-web-forms-and-asp.net-mvc/



1
これは重複ではありません。WebformsとMVCを使用するMVPパターンは同じものではありません。MVPは、サイトをよりテストしやすくし、Webフォームを使用しながらレイヤーをより適切に分離するためのパターンです。MVCは別の動物です。
quaz579 2014年


1
@gnat、これは他の質問の複製ではありません。もう1つの質問は、MVCについては触れていません。慎重に読まないことを選択したため、質問を編集して明確にするように指示しているように見えます。
キラレッサ2014年

回答:


5

これは、アプリケーションを書き直すのに悪い方法ではありません。これは、フェーズで発生する長期的な書き換えに特に役立ちます。

  1. CodedUIテスト(またはWatinまたはSelenium)を利用する「テストプロジェクト」を追加して、ブラウザーを介してWebFormsアプリケーションをテストします。SpecFlowを使用してテストケースを定義することもできます。これを使用して、WebFormsアプリケーションに大きな影響を与えました。

  2. WebFormsアプリケーションの適切なテストカバレッジが得られたら、リファクタリングの次のフェーズ、つまり共通コンポーネントを別のクラスライブラリに移動する段階を開始できます。ここで、モデルとデータアクセスレイヤーを作成できます。このライブラリへの参照をWebFormsアプリケーションに追加できます。フェーズ1で作成したテストは、既存のビジネスルールを破らないことを確認します

  3. 機能をMVCアプリケーションに移植し、WebFormsアプリではなくMVCアプリを使用するようにテストを変更します。

ステップ1と2は同時に取り組むことができます。機能全体をテストし、その共通コンポーネントをWebFormsアプリケーションから切り離したら、ステップ3から始めることもできます。

作業を主な機能に分割します。MVCアプリケーションで機能がサポートされたら、WebFormsアプリケーションでシャットダウンします。コードをまとめて削除できるようになるまで、最終的には元の自己の空洞になります。


1
これは概念的には優れた戦略ですが、このサイズのアプリケーションからすべての機能を段階的に廃止するには、おそらく数年かかります(このコードベースは少なくとも8歳で、開発者は20人以上のチームです)。同じプロジェクトでWebformsとMVCがいかにうまく連携するかに興味があります。
quaz579 2014
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.