0

ASP.NET 3.5 を使用して作成された大規模な ASP.NET Web フォームを持っている企業の顧客がいます。彼らは、8 か月の作業に相当する新しい機能 (大きな機能) を追加して、この Web サイトを強化したいと考えています。

基本的に、彼らの今後の技術戦略は、JQUERY や HTML5 などを使用してすべてを MVC 4.0 に移行することです....今のところ、彼らは最新の MVC 4.0 BETA を使用してこの新しい機能を開発したいと考えています (プロジェクトの準備が整うまでに MVC 4.0 は外れます)。

私の質問は、ユーザーの観点からの違いに気付かずに、ASP.NET と MVC.NET の両方のアプリケーションを同じ Web サイトでホストできるということです。たとえば、すべてのナビゲーションは同じままにする必要がありますが、新しい機能はすべて同じにする必要があります (クライアント ベースの json、jquery、moderniz など)。

この問題をどのように解決できるかについて、誰かが私を正しい方向に導くことができれば、それは素晴らしいことです.

4

1 に答える 1

3

簡単に言えば、はい、できます

非常にトリッキーな点があるため、長い答えはもう少し詳しくなります。

私が働いている会社でも、よく似たプロジェクトを開始しました。私がお伝えするのは、当時の特定のコンテキストと知識に応じて、私たちが行った方法です. たぶん、それを行うためのいくつかのより良い方法があります。

Web サイトが大きすぎてトラフィックが非常に多いため、「ビッグ バン」プロジェクト (古い Web サイトを破棄して新しい Web サイトを設置する) を行うことはできませんでした。そこで、実行可能なソリューションを調べました。移行はまだ行われていますが、次の点に注意してください。

ルーティング

  • 制約の 1 つは、従来の URL をサポートすることでした。当社は IIS の書き換えモジュールを使用していたので、書き換えルールを MVC の新しいページに向けるだけでした。書き換えモジュールを使用せず、従来の URL (たとえばhttp://www.server.com/Users/Login.aspxなど) を保持したい場合は、独自の を定義することで実現できますIRouteHandler。ここでそれについて読むことができます: http://www.eworldui.net/blog/post/2008/04/ASPNET-MVC---Legacy-Url-Routing.aspx

。ネットフレームワーク

  • 私たちの古い ASP.NET Web サイトは、3.5 フレームワークを中心に構築されていました。すべてをフレームワーク 4 に更新することはできませんでした。1.0、1.1、2.0、および 3.5 で変更されたライブラリがまだいくつかあります。確かに更新する必要があるのは、IIS で実行しているアプリケーションの ApplicationPool です。同じ Web アプリケーションで MVC を実行する場合、古いものは .NET 2.0 で、新しいものは .NET 4.0 である必要があります。ページにコードビハインドがない可能性がありました。コード ビハインドはすべてライブラリ (.NET 2.0) にあるため、影響は小さくなります (新しい 4.0 フレームワークでコード ビハインドをコンパイルできるようにするため)。.NET 4.0 で .aspx および .ascx ページを実行し、web.config に次の行を追加するだけです。<compilation targetFramework="4.0">. .NET 4.0 アプリケーションは、.NET 2.0 ライブラリを .NET 4.0 ランタイム環境に直接ロードします。明示的に要求しない限り、並列実行は使用されません。アプリケーションによって (直接参照または Assembly.Load を介して) 直接読み込まれたライブラリは、それを読み込んでいるアプリケーションのランタイムと AppDomain に直接読み込まれ続けます。これは、アプリケーションが .NET Framework 4 ランタイムに対して実行するように再コンパイルされ、.NET 2.0 に対してビルドされた依存アセンブリがまだある場合、それらの依存アセンブリも .NET 4 ランタイムに読み込まれることを意味します。詳細については、こちらをご覧ください: https://stackoverflow.com/a/6216650/261950

ビューエンジン

  • すべての MVC フォルダー (Views、Controllers など) を Web サイトのルート ディレクトリに配置すると、問題は発生しません。新しいサブディレクトリ (例: ~/NewWebSite/Controllers、~/NewWebSite/Views など) に配置する場合、ビューのデフォルトの検索パスが変更され、mvc ランタイムが無効になるため、ビュー エンジンを再定義する必要があります。読み込めません。

他の問題が発生したかどうかは覚えていませんが、私が説明した 3 つは、今のところ覚えている主な問題です。

これが役に立てば幸いです。

トーマス

于 2012-04-20T15:00:54.783 に答える