web-dev-qa-db-ja.com

クラシックASP to ASP.netまたはASP.net MVC

クラシックASPで開発されたWebアプリケーションがあり、5年間で100数ページ、巨大なデータベース、1万人以上のアクティブユーザーが毎日少なくとも10ページ以上を通過する現在の形式に発展しました。

今、それを最新バージョンの.netにアップグレードしたかったのです。最初はアプリ全体を書き直すことを考えていましたが、シナリオを分析したところ、これは実行可能なオプションではないことがわかりました。これも多くの専門家によって提案されていません。それ以外の方法についてはまだ決めていませんが、面での書き換えを実現する方法についていくつか考えました。

オプション1:このアプリケーションの主要なモジュールを識別し、アプリケーションをデータベース(既存)、ビジネスロジック、ビューなどの異なるレイヤーに分離することで、1つずつモジュールを書き直すことを考えました。この方法で、新しく開発されたモジュールが既存のシステムに追加され、新しいページがその特定のモジュールの古いページを置き換えます。同時に、古いシステムと一緒に新しいレイヤーをテストし、自信が持てたらリリースすることができます。また、ビジネスロジック用のAPIのような構造を開発することも考えました。これには、外部アプリケーションとしてビューからアクセスします。

オプション2:現時点では、シンプルなモジュールを作成し、IFrameを介してクラシックASPページで使用しましたが、クラシックASPと新しいの間でデータを送信するのは非常に面倒でしたIFrameのページ。

これは、ユーザーベースに影響を与えずにアプリケーション全体の書き換えをどのように実現すべきかについての計画段階です。

このようなシナリオでアプローチする必要があるかどうかについて、他のプログラマーの意見、意見、提案を得たいですか?もし誰かがこの種のシナリオに直面したなら、あなたの意見も共有してください。

また、ASP.net MVCの使用がこれで私を助けてくれることを知りたいですか?

[〜#〜] update [〜#〜]:ご意見をお寄せいただきありがとうございます。アプリケーションをクラシックaspからasp.netまたはasp.net mvcに移行する際に上記で指定した両方のオプションについて、より多くの入力を取得します。 asp.netまたはasp.net mvcを選択するポイントではなく、移行の部分についてのあなたの見解、ポイント、および考えを通してあなたがすべてできれば、それは私にとって大きな助けになるでしょう。

17
JPReddy

「私はあなたの痛みを感じます、ブルタ」と言って始めましょう。私はこれを3年前に経験しましたが、私が設計したWebFormsソリューションは実際にMicrosoftライブラリを作成することなくMVCモデルに非常によく似ているため、MVCがその時点で成熟したことを願っています(もちろん、いくつかの明白な「なぜ地獄があったのですか?私はそれをしましたか?」.

また、iFrameを使用してコンテンツの違いを管理し、.Netを親アプリケーションとして使用し、クラシックASPをスレーブとして使用しました。 .Netでフレームワークアーキテクチャを開発して実装しました。次に、古典的なASPページは、不要なプレゼンテーションの部分(インクルードと何も含まない)から「カリング」され、iFrameにロードされました。次に、データはカスタム暗号化を使用してURLを介して渡されました。認証が簡単になりすまされないようにし、クエリ文字列をクラックしてページにアクセスできるようにするために、IISでワイルドカードハンドラーを使用しました。これにより、.Netは従来のASPページを解析する前に認証を強制されました。

それを考えると、私の推奨はすぐにMVCに向かうことです。

  1. MVCを使用すると、global.asaxレベルでルーティングにアクセスできます。コントローラーを巧妙に操作することで、適切な方法でモデルを開発し、必要に応じてすべての従来のASP要求を処理する共通のコントローラーを持つことができます。
  2. MVCを使用すると、テストプロジェクトを追加するのが非常に簡単になり、適切なテストカバレッジを提供しながら、新しいモデル構造に基づいて個々のアプリケーション部分をリファクタリングして、正しく機能していることを確認できます。どんなリファクタリングでもコードカバレッジは大きな問題なので、これの価値は絶対に計り知れません。
  3. MVCは、Webフォームよりもスクリプト化されたアプローチでプレゼンテーションを行います。 WebFormsは、ある種のステートフルアプリケーション(そうではない)であるかのように、すべてを混ぜ合わせようとします。これは、クラシックASPに慣れている人々にとって、非常にカルチャーショックになる可能性があります。誤解しないでください。あなたの開発者はどちらの方向に行ってもカルチャーショックを受けるでしょうが、そのショックのいくつかをプレゼンテーション層から取り除くことができれば、より大きな成功が見つかるかもしれません。

私はWebFormsとMVCの両方が好きです(Razorの導入で認めるつもりですが、MVCに少し偏っています)。どちらにも場所があり、リファクタリングされたアプリケーションの一部を展開する際に採用する必要がある「時差」の性質を考えると、あなたが説明するようなアプリケーションはMVC実装に理想的に適していると思います。

どちらにしても、認証、承認、ルーティングなどに関して、.Netアプリケーションが常に親アプリケーションであることを確認する必要があると思います。私の同僚は、クラシックaspを親として使用して同様のアプリケーションに移行を実装しましたが、最終的にすべてを統合することになると、多くの問題が発生しました。

9
Joel Etherton

ASP.NET MVCに移行しても、必ずしも移行が容易になるわけではなく、実際には移行がより困難になる場合があります。ただし、この壮大な事業を実施することをすでに選択している場合は、時間をかけて、計画に最適なプラットフォームに移行してみませんか?

ASP.NET(sans MVC)への移行は、多くの特別なことを行わない限り、大規模なリファクタリングを行うことなく既存のロジックのストレートポートを一般的に実行できるという意味で「より簡単」になります。クラシックASP。結果は満足のいくものであり、すでにアプリケーションに精通している人々には比較的馴染みがあります。 クラシックから移植されたすべてのアプリケーションASP ASP.NETにメリットを受け取る という意味で、メリットが得られます。

ASP.NET MVCへの移行はさらに面倒です。 [〜#〜] mvc [〜#〜] パターンに適合するようにアプリケーションモデルを再設計する必要がある可能性があります。これは、懸念の分離などの適切な動作を促進するため、一般的にはGood Thing(tm)です。結果として得られるアプリケーションは、コアロジックピースを除いて、既存のものと似ていない可能性があります。 他の利点も が得られます。これは大きなカルチャーシフトであり、「MVCの記述方法」を適切に理解するには、開発チームの(再)教育が必要です。

注: MicrosoftはWebFormsを放棄していません (1年前の時点で)ScottGuによると、しかし、もし彼らがこれらの1つを段階的に行うことを決定した場合に、その呼び出しを行うことは難しくないと思います2つのテクノロジーが出れば、それはWebFormsになります。

1
Daniel DiPaolo

オプション1)(MVCを使用)はオプション2)よりもはるかに優れています。これは、iFrameのアプローチのように2つのアプリをあまり結合する必要がない一方で、アプリケーションを段階的に進化させることができるためです。

私は古いアプリをASP.Netに移行した経験があり、2つのアプリ間でセッション状態などのリソースを共有することが課題の1つでした。これは、ユーザーのブラウザからのCookie情報を介して、サーバー側で1つのアプリが他のアプリを呼び出すことで解決できます。もちろん、他のアプリ間での情報共有も、MVCの自然なアプローチであるURLルーティングとクエリ文字列を介して行うことができます。

また、最初に移行する適切なモジュールを特定することは困難な場合がありますが、MVCで開発されるすべての新機能から始めて、移行するガレージで多くのものが発生するのを防ぐことができます。次に、MVCアプリがリファクタリングの形式になり、古いシステムを使用して期待どおりの結果を確立するため、次に行うべきリワークまたはバグ修正の重要なバックログがあるセクションを選択します。このリファクタリング中にユニットテストと自動受け入れテスト(SpecFlow/Watinなど)を追加して、MVCのテスト容易性を活用することを忘れないでください。後者のタイプのテストの利点の1つは、テストが古いシステムを通過することを確認し、このテストを今後のリファクタリングのために新しいコードに適用できることです。

1
Turnkey

ASP.NET MVCを使用する方法に同意します。簡単ではありませんが、簡単ではありませんが、Webフォームよりもはるかに将来性があることは確かです。 WebFormsは確かに見捨てられていませんが、アプリケーションがますます大きくなるにつれて、WebFormsを使用するアプリケーションの管理がますます面倒になっています。

「大きな」アプリケーションでのWebFormsの使用はお勧めしません。

1
Andrea Raimondi