Cookie の設定を選択する

当社は、当社のサイトおよびサービスを提供するために必要な必須 Cookie および類似のツールを使用しています。当社は、パフォーマンス Cookie を使用して匿名の統計情報を収集することで、お客様が当社のサイトをどのように利用しているかを把握し、改善に役立てています。必須 Cookie は無効化できませんが、[カスタマイズ] または [拒否] をクリックしてパフォーマンス Cookie を拒否することはできます。

お客様が同意した場合、AWS および承認された第三者は、Cookie を使用して便利なサイト機能を提供したり、お客様の選択を記憶したり、関連する広告を含む関連コンテンツを表示したりします。すべての必須ではない Cookie を受け入れるか拒否するには、[受け入れる] または [拒否] をクリックしてください。より詳細な選択を行うには、[カスタマイズ] をクリックしてください。

ASP.NET ウェブフォームアプリケーションを AWS で最新化 - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

ASP.NET ウェブフォームアプリケーションを AWS で最新化

作成者:Vijai Anand Ramalingam (AWS) と Sreelaxmi Pai (AWS)

概要

このパターンでは、レガシーのモノリス ASP.NET Web Forms アプリケーションを AWS の ASP.NET Core に移植してモダナイズする手順について説明します。

ASP.NET ウェブフォームアプリケーションを ASP.NET Core に移行すると、Linux のパフォーマンスの利点、コスト削減、Linuxの強固なエコシステムを活用できます。ただし、これは手作業による多大な労力がかかる可能性があります。このパターンでは、レガシーアプリケーションは段階的なアプローチを使用して段階的に最新化され、その後 AWS クラウドにコンテナ化されます。

ショッピングカートのレガシー全体のアプリケーションを検討します。ASP.NET Web フォームアプリケーションとして作成され、コードビハインド (aspx.cs) ファイルを含む[.aspx]ページで構成されていると仮定してみましょう。最新化プロセスには、3 つのステップがあります。

  1. 適切な分解パターンを使用して、モノリスをマイクロサービスに分割します。詳細については、AWS 規範ガイダンスのウェブサイトにある「モノリスをマイクロサービスに分解する」ガイドを参照してください。

  2. レガシー ASP.NET ウェブフォーム (.NET フレームワーク) アプリケーションを.NET 5 以降の ASP.NET Core に移行します。このパターンでは、Porting Assistant for .NET でASP.NET Web フォームアプリケーションをスキャンし、ASP.NET Core との非互換性を確認します。これにより、手動での移行作業が軽減されます。

  3. React を使用して Web Forms UI layer を再開発します。このパターンには UI の再開発が含まれていません。手順については、「React のドキュメント」の「React アプリを作成」を参照してください。

  4. ウェブフォームのコードビハインドファイル (ビジネスインターフェース) を ASP.NET Core web API として再開発します。このパターンでは、NDepend レポートで必要なファイルと依存関係を識別しやすくなります。

  5. Porting Assistant for .NET で、レガシーアプリケーション内のビジネスロジックやデータアクセスなどの共有プロジェクトや共通プロジェクトを .NET 5 以降にアップグレードします。 

  6. AWS サービスを追加してアプリケーションを補完します。たとえば、「Amazon CloudWatch Logs」を使用して、アプリケーションのログのモニタリング、保存、アクセスを行うことができます。また、「AWS Systems Manager」を使用して、アプリケーションの設定を保存できます。

  7. 最新のASP.NET Core Applicationsをコンテナ化します。このパターンでは、Visual Studio の Linux を対象とする Docker ファイルを作成し、Docker Desktop でローカルでテストします。このステップは、レガシーアプリケーションがオンプレミスまたは Amazon Elastic Compute Cloud (Amazon EC2) Windows インスタンスですでに実行されていることを前提としています。詳細については、「Amazon EC2 Linux インスタンスで ASP.NET Core web API Docker コンテナを実行する」というパターン」を参照してください。

  8. 最新の ASP.NET Core アプリケーションを、Amazon Elastic Container Service (Amazon ECS) にデプロイします。このパターンはデプロイステップには適用されません。手順については、「Amazon ECS Workshop」を参照してください。

注記

このパターンは、UI 開発、データベースのモダナイゼーション、またはコンテナデプロイのステップには適用されません。

前提条件と制限

前提条件

アーキテクチャ

ショッピングカートアプリケーションの最新化

次の図は、従来の ASP.NET ショッピングカートアプリケーションの最新化プロセスを示しています。

レガシーショッピングカートアプリケーションの最新化

ターゲットアーキテクチャ

次の図は、AWS の最新のショッピングカートアプリケーションのアーキテクチャを示しています。ASP.NET Core Web API は、Amazon ECS クラスターにデプロイされます。記録と設定サービスは Amazon CloudWatch Logs と AWS Systems Manager により、提供されています。

AWS 上の ASP.NET ウェブフォームアプリケーションのターゲットアーキテクチャ

ツール

AWS サービス

  • Amazon ECS」— Amazon Elastic Container Service (Amazon ECS) は、クラスターでコンテナの実行、停止、管理に使用される、高度にスケーラブルで高速のコンテナ管理サービスです。AWS Fargate が管理するサーバーレスインフラ上でタスクやサービスを実行できます。または、インフラストラクチャをより詳細に制御するために、管理する EC2 インスタンスのクラスターでタスクとサービスを実行できます。

  • Amazon CloudWatch Logs」— Amazon CloudWatch Logs により、使用中のすべてのシステム、アプリケーション、AWS のサービスからのログを、一元管理することができます。ログを表示したり、特定のエラーコードやパターンを検索したり、特定のフィールドに基づいてフィルタリングしたり、将来の分析のために安全にアーカイブしたりできます。

  • AWS Systems Manager」— AWS Systems Manager は、AWS でインフラストラクチャの表示と制御に使用できる AWS サービスです。Systems Manager コンソールを使用すると、複数の AWS サービスからの運用データを表示し、AWS リソース全体の運用タスクを自動化できます。Systems Manager は、マネージドインスタンスをスキャンし、検出されるポリシー違反を報告(または是正措置を講じる)して、セキュリティとコンプライアンスを維持できます。

ツール

  • Visual Studio」または「Visual Studio Code」— .NET アプリケーション、ウェブ APIおよびその他のプログラムを構築するためのツール。

  • AWS Toolkit for Visual Studio」— AWS サービスを使用する .NET アプリケーションの開発、デバッグ、デプロイに役立つ Visual Studio の拡張機能。

  • Docker Desktop」— コンテナ化されたアプリケーションの構築とデプロイを簡単にするツール。

  • NDepend」— .NET コードの依存関係、品質問題、コード変更をモニタリングするアナライザー。

  • Porting Assistant for .NET」— .NET コードをスキャンして.NET Core との非互換性を特定し、移行作業を見積もる分析ツール。

エピック

タスク説明必要なスキル

.NET Framework のレガシーアプリケーションを.NET 5 にアップグレードします。

Porting Assistant for .NET で、従来の ASP.NET Web フォームアプリケーションを.NET 5 以降に変換できます。「Porting Assistant for .NET のドキュメント」の指示に従ってください。

アプリ開発者

NDepend レポートを生成します。

ASP.NET Web フォームアプリケーションをマイクロサービスに分解して最新化すると、レガシーアプリケーションのすべての[.cs]ファイルが必要なくなる場合があります。NDepend を使用すると、任意のコードビハインド (.cs) ファイルのレポートを生成して、すべての呼び出し元と呼び出し先を取得できます。このレポートは、マイクロサービス内の必要なファイルのみを特定して使用するのに役立ちます。

NDepend をインストールしたら (「前提条件」セクションを参照)、Visual Studio でレガシーアプリケーションのソリューション (.sln ファイル) を開き、次の手順に従います。

  1. Visual Studio でレガシーアプリケーションを構築します。

  2. Visual Studio のメニューバーで nDepend と新しい NDepend ロジェクトを現在の VS ソリューションに添付を選択します。 

  3. .NET アセンブリの分析を選択します。 

  4. 分析が完了したら、Solution Explorer でプロジェクトに移動します。レポートを生成したいコードビハインドファイル (listproducts.aspx.cs など) を右クリックして、Show on Dependency Graph を選択します。 

  5. ナビゲーションバーで[呼び出し元と呼び出し先]を選択して、コードクエリの編集を選択します。 

  6. クエリとルール編集ペインで、ダウンロード矢印を選択して、Excel にエクスポートを選択します。

このプロセスにより、すべての呼び出し元と呼び出し先を一覧表示するコードビハインドファイルのレポートが生成されます。ディペンデンシーグラフについて、詳細は、「NDepend のドキュメント」を参照してください。

アプリ開発者

新しい .NET 5 ソリューションを作成します。

最新の ASP.NET Core web API 用の新しい .NET 5 (またはそれ以降) 構造を作成するには:

  1. Visual Studio を開きます。

  2. 新しい空のソリューションを作成します。

  3. レガシーアプリケーションに基づき、.NET 5 (またはそれ以降) をターゲットとする新しいプロジェクトを作成します。ショッピングカートアプリケーションのレガシープロジェクトと新しいプロジェクトの例については、「追加情報」セクションを参照してください。

  4. 前のステップで説明した NDepend レポートを使用して、必要なファイルをすべて識別してください。以前にアップグレードしたアプリケーションからこれらのファイルをコピーし、新しいソリューションに追加します。

  5. ソリューションを構築し、すべての問題を見直します。

プロジェクトとソリューションの作成について、詳細は、「Visual Studio のドキュメント」を参照してください。

注記

ソリューションを構築し、機能を検証するときに、NDepend が識別したファイルに加えて、ソリューションに追加するいくつかの追加ファイルを特定できます。

アプリ開発者

レガシーアプリケーションを .NET 5 以降のバージョンに移行

タスク説明必要なスキル

.NET Framework のレガシーアプリケーションを.NET 5 にアップグレードします。

Porting Assistant for .NET で、従来の ASP.NET Web フォームアプリケーションを.NET 5 以降に変換できます。「Porting Assistant for .NET のドキュメント」の指示に従ってください。

アプリ開発者

NDepend レポートを生成します。

ASP.NET Web フォームアプリケーションをマイクロサービスに分解して最新化すると、レガシーアプリケーションのすべての[.cs]ファイルが必要なくなる場合があります。NDepend を使用すると、任意のコードビハインド (.cs) ファイルのレポートを生成して、すべての呼び出し元と呼び出し先を取得できます。このレポートは、マイクロサービス内の必要なファイルのみを特定して使用するのに役立ちます。

NDepend をインストールしたら (「前提条件」セクションを参照)、Visual Studio でレガシーアプリケーションのソリューション (.sln ファイル) を開き、次の手順に従います。

  1. Visual Studio でレガシーアプリケーションを構築します。

  2. Visual Studio のメニューバーで nDepend と新しい NDepend ロジェクトを現在の VS ソリューションに添付を選択します。 

  3. .NET アセンブリの分析を選択します。 

  4. 分析が完了したら、Solution Explorer でプロジェクトに移動します。レポートを生成したいコードビハインドファイル (listproducts.aspx.cs など) を右クリックして、Show on Dependency Graph を選択します。 

  5. ナビゲーションバーで[呼び出し元と呼び出し先]を選択して、コードクエリの編集を選択します。 

  6. クエリとルール編集ペインで、ダウンロード矢印を選択して、Excel にエクスポートを選択します。

このプロセスにより、すべての呼び出し元と呼び出し先を一覧表示するコードビハインドファイルのレポートが生成されます。ディペンデンシーグラフについて、詳細は、「NDepend のドキュメント」を参照してください。

アプリ開発者

新しい .NET 5 ソリューションを作成します。

最新の ASP.NET Core web API 用の新しい .NET 5 (またはそれ以降) 構造を作成するには:

  1. Visual Studio を開きます。

  2. 新しい空のソリューションを作成します。

  3. レガシーアプリケーションに基づき、.NET 5 (またはそれ以降) をターゲットとする新しいプロジェクトを作成します。ショッピングカートアプリケーションのレガシープロジェクトと新しいプロジェクトの例については、「追加情報」セクションを参照してください。

  4. 前のステップで説明した NDepend レポートを使用して、必要なファイルをすべて識別してください。以前にアップグレードしたアプリケーションからこれらのファイルをコピーし、新しいソリューションに追加します。

  5. ソリューションを構築し、すべての問題を見直します。

プロジェクトとソリューションの作成について、詳細は、「Visual Studio のドキュメント」を参照してください。

注記

ソリューションを構築し、機能を検証するときに、NDepend が識別したファイルに加えて、ソリューションに追加するいくつかの追加ファイルを特定できます。

アプリ開発者
タスク説明必要なスキル

ASP.NET Core でウェブ API を実装します。

従来のモノリスショッピングカートアプリケーションで特定したマイクロサービスの 1 つが製品だと仮定しましょう。前のエピックで製品用の ASP.NET Core Web API プロジェクトを新規作成しました。このステップでは、製品に関連するすべての Web フォーム (.aspx ページ) を識別して最新化します。前述の「アーキテクチャ」セクションで説明したように、[製品]が 4 つのウェブフォームで構成されていると仮定します。

  • 製品の一覧表示

  • 製品の表示

  • 製品の追加/編集

  • 製品の削除

各 ウェブフォームを分析し、何らかのロジックを実行するためにデータベースに送信されるすべてのリクエストを識別し、応答を取得する必要があります。各リクエストをウェブ API エンドポイントとして実装できます。ウェブフォームを考慮すると、製品には以下のエンドポイントを設定できます。

  • /api/products

  • /api/products/{id}

  • /api/products/add

  • /api/products/update/{id}

  • /api/products/delete/{id}

前述のように、ビジネスロジック、データアクセス、共有/共通プロジェクトなど、.NET 5 にアップグレードした他のすべてのプロジェクトを再利用できます。

アプリ開発者

Amazon CloudWatch Logs を設定します。

Amazon CloudWatch Logs」を使用して、アプリケーションのログのモニタリング、保存、アクセスを行うことができます。AWS SDK で Amazon CloudWatch Logs にデータを記録できます。また、「NLog」、「Log4Net」、「ASP.NET Core ロギングフレームワーク」など一般的な.NET ロギングフレームワークを使用して、.NET アプリケーションを CloudWatch Logs と統合することもできます。

このステップの詳細については、ブログ記事の「Amazon CloudWatch Logs と.NET ロギングフレームワーク」を参照してください。

アプリ開発者

AWS Systems Manager Parameter Store を設定します。

AWS Systems Manager Parameter Store」で、接続文字列などのアプリケーション設定をアプリケーションコードとは別に保存できます。NuGet パッケージ「Amazon.Extensions.Configuration.SystemsManager」を使用すると、アプリケーションがこれらの設定を AWS Systems Manager Parameter Store から .NET Core 設定システムにロードする方法が簡単になります。 

このステップの詳細については、ブログ記事の「AWS Systems Manager向けの.NET Core 設定」を参照してください。

アプリ開発者

アプリケーションコードを更新します。

タスク説明必要なスキル

ASP.NET Core でウェブ API を実装します。

従来のモノリスショッピングカートアプリケーションで特定したマイクロサービスの 1 つが製品だと仮定しましょう。前のエピックで製品用の ASP.NET Core Web API プロジェクトを新規作成しました。このステップでは、製品に関連するすべての Web フォーム (.aspx ページ) を識別して最新化します。前述の「アーキテクチャ」セクションで説明したように、[製品]が 4 つのウェブフォームで構成されていると仮定します。

  • 製品の一覧表示

  • 製品の表示

  • 製品の追加/編集

  • 製品の削除

各 ウェブフォームを分析し、何らかのロジックを実行するためにデータベースに送信されるすべてのリクエストを識別し、応答を取得する必要があります。各リクエストをウェブ API エンドポイントとして実装できます。ウェブフォームを考慮すると、製品には以下のエンドポイントを設定できます。

  • /api/products

  • /api/products/{id}

  • /api/products/add

  • /api/products/update/{id}

  • /api/products/delete/{id}

前述のように、ビジネスロジック、データアクセス、共有/共通プロジェクトなど、.NET 5 にアップグレードした他のすべてのプロジェクトを再利用できます。

アプリ開発者

Amazon CloudWatch Logs を設定します。

Amazon CloudWatch Logs」を使用して、アプリケーションのログのモニタリング、保存、アクセスを行うことができます。AWS SDK で Amazon CloudWatch Logs にデータを記録できます。また、「NLog」、「Log4Net」、「ASP.NET Core ロギングフレームワーク」など一般的な.NET ロギングフレームワークを使用して、.NET アプリケーションを CloudWatch Logs と統合することもできます。

このステップの詳細については、ブログ記事の「Amazon CloudWatch Logs と.NET ロギングフレームワーク」を参照してください。

アプリ開発者

AWS Systems Manager Parameter Store を設定します。

AWS Systems Manager Parameter Store」で、接続文字列などのアプリケーション設定をアプリケーションコードとは別に保存できます。NuGet パッケージ「Amazon.Extensions.Configuration.SystemsManager」を使用すると、アプリケーションがこれらの設定を AWS Systems Manager Parameter Store から .NET Core 設定システムにロードする方法が簡単になります。 

このステップの詳細については、ブログ記事の「AWS Systems Manager向けの.NET Core 設定」を参照してください。

アプリ開発者
タスク説明必要なスキル

認証には共有 Cookie を使用してください。

従来のモノリスアプリケーションの最新化は反復的なプロセスであり、モノリスと最新化されたバージョンが共存する必要があります。共有 Cookie を使用すると、2 つのバージョン間でシームレスな認証を実現できます。最新の ASP.NET Core アプリケーションが Cookie を検証している間、従来の ASP.NET アプリケーションは引き続きユーザーの認証情報を検証して Cookie を発行します。 

手順とサンプルコードについては、「サンプル GitHub プロジェクト」を参照してください。

アプリ開発者

認証と認可の追加

タスク説明必要なスキル

認証には共有 Cookie を使用してください。

従来のモノリスアプリケーションの最新化は反復的なプロセスであり、モノリスと最新化されたバージョンが共存する必要があります。共有 Cookie を使用すると、2 つのバージョン間でシームレスな認証を実現できます。最新の ASP.NET Core アプリケーションが Cookie を検証している間、従来の ASP.NET アプリケーションは引き続きユーザーの認証情報を検証して Cookie を発行します。 

手順とサンプルコードについては、「サンプル GitHub プロジェクト」を参照してください。

アプリ開発者
タスク説明必要なスキル

Visual Studio を使用して Docker イメージを作成します。

このステップでは、Visual Studio for .NET Core web API を使用して Docker ファイルを作成します。

  1. Visual Studio を開きます。 

  2. Solution Explorer でお客様のプロジェクトのコンテキスト(右クリック)メニューから、Add/Docker Support を選択します。

  3. ターゲットオペレーティングシステムとして Linux を選択します。

Visual Studio はお客様のプロジェクト用の Docker ファイルを作成します。サンプル Docker ファイルについては、Microsoft のウェブサイトで「Docker 用 Visual Studio Container Tools」を参照してください。

アプリ開発者

Docker Desktop を使用してコンテナを構築して実行します。

これで Docker Desktop でコンテナを構築、作成、実行できるようになりました。

  1. [コマンドプロント] ウィンドウを開きます。Docker ファイルが存在するソリューションフォルダーに移動します。次のコマンドを実行して Docker イメージを作成します。

    docker build -t aspnetcorewebapiimage -f Dockerfile .
  2. 次のコマンドを実行して、すべての Docker イメージを表示します。

    docker images
  3. 次のコマンドを実行して、コンテナを作成し、実行します。

    docker run -d -p 8080:80 --name aspnetcorewebapicontainer aspnetcorewebapiimage
  4. Docker Desktop を開き、Containers/Apps を選択します。aspnetcorewebapicontainer  実行中という新しいコンテナが表示されます。

アプリ開発者

コンテナをローカルで構築して実行

タスク説明必要なスキル

Visual Studio を使用して Docker イメージを作成します。

このステップでは、Visual Studio for .NET Core web API を使用して Docker ファイルを作成します。

  1. Visual Studio を開きます。 

  2. Solution Explorer でお客様のプロジェクトのコンテキスト(右クリック)メニューから、Add/Docker Support を選択します。

  3. ターゲットオペレーティングシステムとして Linux を選択します。

Visual Studio はお客様のプロジェクト用の Docker ファイルを作成します。サンプル Docker ファイルについては、Microsoft のウェブサイトで「Docker 用 Visual Studio Container Tools」を参照してください。

アプリ開発者

Docker Desktop を使用してコンテナを構築して実行します。

これで Docker Desktop でコンテナを構築、作成、実行できるようになりました。

  1. [コマンドプロント] ウィンドウを開きます。Docker ファイルが存在するソリューションフォルダーに移動します。次のコマンドを実行して Docker イメージを作成します。

    docker build -t aspnetcorewebapiimage -f Dockerfile .
  2. 次のコマンドを実行して、すべての Docker イメージを表示します。

    docker images
  3. 次のコマンドを実行して、コンテナを作成し、実行します。

    docker run -d -p 8080:80 --name aspnetcorewebapicontainer aspnetcorewebapiimage
  4. Docker Desktop を開き、Containers/Apps を選択します。aspnetcorewebapicontainer  実行中という新しいコンテナが表示されます。

アプリ開発者

関連リソース

追加情報

次の表は、従来のショッピングカートアプリケーションのサンプルプロジェクトと、最新の ASP.NET Core アプリケーションの同等のプロジェクトの例を示します。

レガシーソリューション:

[Project name] (プロジェクト名)

プロジェクトテンプレート

Target framework

ビジネスインターフェイス

クラスライブラリ

特定のランタイムライブラリまたは .NET Framework の最小バージョンが必要です。

BusinessLogic

クラスライブラリ

特定のランタイムライブラリまたは .NET Framework の最小バージョンが必要です。

WebApplication

ASP.NET フレームワークアプリケーション

特定のランタイムライブラリまたは .NET Framework の最小バージョンが必要です。

UnitTests

NUnit Test Project

特定のランタイムライブラリまたは .NET Framework の最小バージョンが必要です。

共有 -> 共通

クラスライブラリ

特定のランタイムライブラリまたは .NET Framework の最小バージョンが必要です。

共有-> フレームワーク

クラスライブラリ

特定のランタイムライブラリまたは .NET Framework の最小バージョンが必要です。

新しいソリューション:

[Project name] (プロジェクト名)

プロジェクトテンプレート

Target framework

BusinessLogic

クラスライブラリ

.NET 5.0

<WebAPI>

ASP.NET Core Web API

.NET 5.0

<WebAPI>.UnitTests

NUnit 3 Test Project

.NET 5.0

共有 -> 共通

クラスライブラリ

.NET 5.0

共有-> フレームワーク

クラスライブラリ

.NET 5.0

プライバシーサイト規約Cookie の設定
© 2025, Amazon Web Services, Inc. or its affiliates.All rights reserved.