

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

# 最新の .NET にリファクタリングして Linux に移行する
<a name="net-refactor-linux"></a>

## 概要:
<a name="net-refactor-linux-overview"></a>

レガシー .NET Framework アプリケーションをモダナイズすると、セキュリティ、パフォーマンス、スケーラビリティを向上させることができます。.NET Framework アプリケーションをモダナイズする効果的な方法は、最新の .NET バージョン (6\+) に移行することです。これらのアプリケーションをオープンソースの .NET に移行する主な利点をいくつか紹介します。
+ Linux オペレーティングシステムで実行することで Windows ライセンスコストを削減する
+ 最新の言語の可用性を活用する
+ Linux で実行するように最適化されたパフォーマンスを得る

多くの組織は、古いバージョンの .NET Framework をまだ実行しています。古いバージョンの脆弱性は Microsoft によって対処されなくなったため、セキュリティ上のリスクが生じる可能性があります。Microsoft は、.NET Framework の最近のバージョン (4.5.2、4.6、および 4.6.1) のサポートを終了しました。古いバージョンのフレームワークを引き続き実行する場合のリスクと利点を評価することが非常に重要です。リスクを軽減し、コストを削減するには、.NET の最新バージョンへのリファクタリングに時間と労力を費やす価値があります。

## コストへの影響
<a name="net-refactor-linux-cost"></a>

コンピューティング、メモリ、ネットワークリソースのバランスを提供する汎用 EC2 インスタンスタイプ (m5) を検討してください。これらのインスタンスは、ウェブサーバー、中規模のデータベース、ソースコードリポジトリなどのさまざまなアプリケーションに適しています。

例えば、米国東部 (バージニア北部) の Windows Server (ライセンス込み) で 4 つの vCPU と 16 GB のメモリを備えたオンデマンド m5.xlarge インスタンスの料金は、月額 274.48 USD です。Linux サーバー上の同じリソースの料金は、月額 140.16 USD です。この例では、アプリケーションを .NET Framework から最新バージョンの .NET に移行し、Linux サーバーでアプリケーションを実行すると、コストが 49% 削減されます。コストは、[EC2 インスタンス](https://aws.amazon.com/ec2/instance-explorer/?ec2-instances-cards.sort-by=item.additionalFields.category-order&ec2-instances-cards.sort-order=asc&awsf.ec2-instances-filter-category=*all&awsf.ec2-instances-filter-processors=*all&awsf.ec2-instances-filter-accelerators=*all&awsf.ec2-instances-filter-capabilities=*all)の選択時に指定したオプション (インスタンスタイプ、オペレーティングシステム、ストレージなど) によって異なります。[Savings Plans](https://docs.aws.amazon.com/savingsplans/latest/userguide/what-is-savings-plans.html) または[リザーブドインスタンス](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-reserved-instances.html)を使用して、コストをさらに最適化できます。詳細については、[AWS 料金見積りツール](https://calculator.aws/#/)を使用してコスト見積もりを実行します。Windows に含まれるインスタンスの場合、ライセンスコストは、料金モデルに関係なく、[1 時間あたり、vCPU あたり 0.046 USD](https://aws.amazon.com/ec2/dedicated-hosts/pricing/#Pricing_for_Dedicated_Hosts) です。

これらの .NET Framework アプリケーションを最新の .NET に移植するには、開発者の作業が必要です。アプリケーションとその依存関係を評価して、それらがターゲットプラットフォームバージョンと互換性があるかどうかを確認する必要があります。[AWS Porting Assistant for .NET](https://aws.amazon.com/blogs/aws/announcing-the-porting-assistant-for-net/) は、.NET Framework アプリケーションをスキャンして .NET 互換性評価を生成する支援ツールであり、アプリケーションをより迅速に Linux 互換へ移植できるように支援します。Porting Assistant for .NET は、.NET との非互換性を特定し、既知の代替品を見つけて、詳細な互換性評価を生成します。ソリューションを移植した後、依存関係を使用してプロジェクトを正常にコンパイルするには、手動でコードを変更する必要があります。これにより、アプリケーションの Linux へのモダナイズに伴う手動作業が軽減されます。アプリケーションが ARM プロセッサをサポートしている場合、Linux に移行すると、Graviton インスタンスを使用する機能がロック解除されます。これにより、さらに 20% のコスト削減を実現できます。詳細については、 AWS コンピューティングブログの[「Powering .NET 5 with AWS Graviton2: Benchmarks](https://aws.amazon.com/blogs/compute/powering-net-5-with-aws-graviton2-benchmark-results/)」を参照してください。

[AWS Toolkit for .NET Refactoring](https://docs.aws.amazon.com/tk-dotnet-refactoring/latest/userguide/what-is-tk-dotnet-refactoring.html) や [.NET Upgrade Assistant](https://learn.microsoft.com/en-us/dotnet/core/porting/upgrade-assistant-overview) など、レガシー .NET Framework アプリケーションを最新の .NET に移行するのに役立つツールもあります。

## コスト最適化の推奨事項
<a name="net-refactor-linux-rec"></a>

.NET Framework アプリケーションを移行するには、以下を実行します。

1. **前提条件** – Porting Assistant for .NET を使用するには、アプリケーションのソースコードを分析するマシンに .NET 5\+ をインストールする必要があります。マシンのリソースとして、1.8 GHz 以上の処理速度、4 GB のメモリ、5 GB のストレージ容量が必要です。詳細については、Porting Assistant for .NET ドキュメントの「[Prerequisites](https://docs.aws.amazon.com/portingassistant/latest/userguide/porting-assistant-prerequisites.html)」を参照してください。

1. **評価** – Porting Assistant for .NET を[実行可能](https://s3.us-west-2.amazonaws.com/aws.portingassistant.dotnet.download/latest/windows/Porting-Assistant-Dotnet.exe) (ダウンロード) ファイルとしてダウンロードします。ツールをダウンロードしてマシンにインストールし、アプリケーションの評価を開始できます。評価ページには、最新の .NET と互換性のない移植されたプロジェクト、パッケージ、API が含まれています。このため、評価後にソリューションでビルドエラーが発生します。評価結果を表示または CSV ファイルにダウンロードできます。詳細については、Porting Assistant for .NET ドキュメントの「[Port a solution](https://docs.aws.amazon.com/portingassistant/latest/userguide/porting-assistant-port.html)」を参照してください。

1. **リファクタリング** — アプリケーションを評価した後、プロジェクトをターゲットフレームワークバージョンに移植できます。ソリューションを移植すると、プロジェクトファイルと一部のコードが Porting Assistant によって変更されます。ログをチェックして、ソースコードの変更を確認できます。ほとんどの場合、コードは、移行とテストを完了して本番環境の準備を整えるために、追加の作業が必要になります。アプリケーションによっては、エンティティフレームワーク、アイデンティティ、認証などの変更が含まれる場合があります。詳細については、Porting Assistant for .NET ドキュメントの「[Port a solution](https://docs.aws.amazon.com/portingassistant/latest/userguide/porting-assistant-port.html)」を参照してください。

これは、アプリケーションをコンテナにモダナイズするための最初のステップです。.NET Framework アプリケーションを Linux コンテナにモダナイズするビジネス上および技術上の推進要因は数多く考えられます。重要な推進要因の 1 つは、Windows オペレーティングシステムから Linux に移行することで、総保有コストを削減することです。これにより、アプリケーションをクロスプラットフォームバージョンの .NET およびコンテナに移行してリソース使用率を最適化する際のライセンスコストを削減できます。

アプリケーションを Linux に移植したら、[AWS App2Container](https://aws.amazon.com/app2container/) を使用してアプリケーションをコンテナ化できます。App2Container は、直接デプロイできるエンドポイントサービスとして Amazon ECS または Amazon EKS を使用します。App2Container は、アプリケーションを繰り返しコンテナ化するために必要なすべての Infrastructure as Code (IaC) デプロイアーティファクトを提供します。

## その他の考慮事項とリソース
<a name="net-refactor-linux-resources"></a>
+  (2002 年のレガシーフレームワーク) 上に構築されたアプリケーションがあり、それらを .NET 6 に移植する場合は、 AWS ブログの[「Porting Assistant for .NET を使用してレガシー VB.NET アプリケーションを .NET 6.0 に](https://aws.amazon.com/blogs/modernizing-with-aws/port-legacy-vb-net-applications-to-net-6-0-with-porting-assistant-for-net/)移植する」投稿を参照してください。
+ Windows Communication Foundation (WCF) にレガシーアプリケーションがあり、最新の .NET で実行する場合は、CoreWCF を採用できます。詳細については、 AWS ブログの Microsoft Workloads の[「Porting Assistant for .NET を使用した CoreWCF へのレガシー WCF アプリケーションのモダナイズ](https://aws.amazon.com/blogs/modernizing-with-aws/migrate-wcf-apps-to-wcfcore-using-porting-assistant/)」を参照してください。
+ 移植アシスタントを Visual Studio IDE の拡張機能として追加できます。これにより、IDE と Porting Assistant for .NET ツールを切り替えることなく、コードの変換に必要なすべてのタスクを実行できます。詳細については、 AWS ブログの Microsoft Workloads の[「Accelerate .NET application modernization with Porting Assistant for .NET Visual Studio IDE extension](https://aws.amazon.com/blogs/modernizing-with-aws/net-modernization-with-pa-vs-ide-extension/) post」を参照してください。
+ [AWS Porting Assistant for .NET](https://aws.amazon.com/blogs/opensource/open-sourcing-the-porting-assistant-for-net/) は、評価のソースコードと互換性分析コンポーネントを備えたオープンソースツールになりました。これにより、開発者が .NET 移植の知識とベストプラクティスを使用し、共有することが促進されます。
+  AWS Toolkit for .NET リファクタリングを使用して、.NET Framework アプリケーションを最新の .NET on Linux に移植できます。詳細については、ブログの Microsoft Workloads AWS の「[Accelerate .NET modernization with AWS Toolkit for .NET Refactoring](https://aws.amazon.com/blogs/modernizing-with-aws/aws-toolkit-for-net-refactoring-launch/)」の投稿を参照してください。
+ [ASP.NET Core アプリケーションのコンテナ化と AWS を使用した への移行を加速 AWS App2Container](https://aws.amazon.com/blogs/modernizing-with-aws/containerize-asp-net-core-applications-using-aws-app2container/)できます。