松村 優大 & 亀川 和史
毎年訪れる .NET の
メジャーバージョン
アップに備えるために
取り組めること
1
2
3
4
Agenda
LOREM IPSUM
.NETの現状とこれから
.NETマイグレーション
DevOpsの活用
アーキテクチャ変更
亀川 和史
Microsoft MVP for Developer
Technologies
(DevOps and GitHub)
@kkamegawa
松村 優大
Microsoft MVP for Developer
Technologies
(.NET and Azure)
@tsubakimoto_s
EOLによるプロダ
クト移行
大きな変革期
クラウド時代 クロスプラット
フォーム対応
リモートワーク中
心による開発作業
の効率化
Visual Studio
Visual Studio 2022
• .NET 6向けの64bit統合IDE
• モバイル/デスクトップ/クラウド
に適応した開発環境
• Preview/Current/LTS複数チャネル
.NET Framework から .NET へ
.NET Framework 2.0
.NET Framework 3.5
(2029/1/9 EOL)
.NET Framework 4.6.1
(2022/4/26 EOL)
Microsoft .NET Framework Support Lifecycle | Microsoft Docs
.NET Framework 4.8
.NET Core 3.1
(2022/4/26 EOL)
Microsoft .NET および .NET Core Support Lifecycle | Microsoft Docs
.NET 5
(2022/5/8 EOL)
.NET 6
.NET Framework 4.8
を使い続けるケース
 マイグレーションが難しい技術を使う
 WCF (Windows Communication Foundation)
 .NET Remoting
 App Domain
 WF (Workflow Foundation)
 リフレクションによるアセンブリの保存
 非互換を伴うクラスライブラリの使用
 過去資産上移行できない
破壊的変更 - .NET Framework から .NET Core | Microsoft Docs
.NET 6 を使う
ケース
 新規開発
 3rdパーティ、OSS 含めて .NET への移行が進んでいる
 クラウドネイティブアプリケーション
 Web, サーバーレス, コンテナー など
 Web+モバイルなど、複数のアプリケーション
を開発する場合 (.NET Standard)
 標準技術(gRPC, HTTP/2, Web Assembly)を活用
.NET Upgrade
Assistant
 .NET Framework から .NET 6 への移行作業を
支援するツール
 対応しているアプリケーションの種類
 Windows Forms
 WPF
 ASP.NET MVC
 コンソール
 クラスライブラリ
※異なる種類のアプリケーションへの移行は不可
.NET アップグレード アシスタントの概要 - .NET Core | Microsoft Docs
マイグレーション&モダナイゼーションのデモ
Legacy Pre Modern Modern
Client-Server System
.NET Framework (WinForms)
.NET Framework (WCF)
Client-Server System
.NET 6 (WinForms)
.NET Framework (WCF)
Web Application
.NET 6 (ASP.NET Core)
Microsoft Azure
題材:GitHub で公開されているサンプルアプリケーション
https://github.com/dotnet-architecture/eShopModernizing/tree/main/eShopLegacyNTier
Legacy sample app
.NET Framework の
よくあるクラサバアプリ
Premodern sample app
.NET Upgrade Assistant を使うことで .NET Framework
から .NET 6 への移行難易度が下がる。
ただし全てのコードが移行されるわけでなく、ビジネス
ロジックは人による移行が必要となる。
https://docs.microsoft.com/ja-
jp/dotnet/core/porting/upgrade-assistant-winforms-
framework
WinForms のみ
.NET 6 にモダナイズ
Premodern sample app
WCFサービスを
Web Appsへデプロイ
WCF を維持する難しさ クライアントサイドの WinForms アプリを .NET
6 に移行することができても、サーバーサイドの
WCF アプリは .NET 6 に移行することができない。
WCF の移行先として gRPC が推奨されているが、
実装方法は大きく異なるため、ビジネスロジッ
クは再実装を前提に考えたほうが良い。
※ CoreWCF を使うという選択肢もあるが、
OSS を扱うスキルを有していることが望ましい。
WCF 開発者向け ASP.NET Core gRPC - WCF 開発者向け gRPC | Microsoft Docs
.NET アプリケーションの移行パス
Console
WinForms / WPF
WCF
ASP.NET Web Forms
ASP.NET MVC
ASP.NET Web API
Console / Generic Host
WinForms / WPF
gRPC
ASP.NET Core Blazor
ASP.NET Core MVC
ASP.NET Core Web API
アプリケーションの形は似ているが
使用技術や開発者に求められるスキルは大きく異なる
クラウドを使った
Web アプリに移行する
WCF を使い続けることは .NET Framework を
使い続けるということである。
.NET Framework は今後大きなアップデートは行
われないため、コンテナー等でインフラも含め
て維持・運用する必要がある。
開発の効率化や運用負担の軽減を考慮すると、
クラウドでの Web アプリケーション構成を
検討することを勧めたい。
 アプリ: .NET 6 + ASP.NET Core
 インフラ: PaaS on Microsoft Azure
Web アプリへの移行の
流れ
アプリケーション形式が異なるため
.NET Upgrade Assistant で移行はできない。
コードを再利用しつつ、新たに設計・実装する
必要があることを理解する。
現実的な移行方法としては…
1. アーキテクチャー:新たに設計する
2. データベース:Data Migration Assistant で移行する
3. モデル:なるべく再利用する
4. ビジネスロジック:なるべく再利用する
5. デザインやUI:新たに実装する
データ Migration Assistant を使用して Azure SQL Database に SQL
Server を移行する - SQL Server | Microsoft Docs
アプリケーション
アーキテクチャーの
見直し
アプリケーションの移行をスムースに行うには
移行前のコードの状態が重要である。
画面 (フォーム) にビジネスロジックが多く実装
されていると、Web アプリ移行の作業量が多く
なることが予想される。
既存アプリケーションにおいても “N 層アーキテ
クチャー”、“クリーンアーキテクチャー” に
リファクタリングを行うことで、再利用できる
コードを明確にすることができる。
アプリケーションアーキテクチャーの最新化
一般的な Web アプリケーション アーキテクチャ | Microsoft Docs
N 層アーキテクチャー クリーンアーキテクチャー
クラウド活用のための
2つのフレームワーク
 Cloud Adaption Framework (CAF)
 組織にクラウドを導入するための 5ステップ の戦略
1. 計画
2. 準備
3. 導入
4. ガバナンス
5. 管理
 Well-Architected Framework (W-A)
 Azure アーキテクチャーの効果的な 5つの設計原則
1. コスト最適化
2. オペレーショナルエクセレンス
3. パフォーマンス効率
4. 信頼性
5. セキュリティ
Microsoft Cloud Adoption Framework for Azure
Microsoft Azure Well-Architected Framework
Modern sample app
Azure + ASP.NET Core
PaaS 中心のアーキテクチャー
Monitor Cache
Database
CI/CD
Web Application
Modern sample app
Azure + ASP.NET Core
Well-Architected Framework: Security
Monitor Cache
Database
CI/CD
Web Application
Secret
スムースな移行
のために必要な
こと
 DevOpsプラクティスを活用して開発速度を上
げる
 Continuous Integration (CI)
 Continuous Delivery (CD)
 負荷テスト
 モニタリング
 移行前後のトラブルを防ぐ
 性能分析
 モニタリング
 Blue / Green デプロイ
DevOpsプラクティスの活用
評価環境 本番環境
コンテナ化 負荷テスト
モニタリング
展開承認
Azure Load Testingを使った負荷テスト
ファイル
コミット
(jmx含む)
CIトリガー
Load Testing
呼び出し
Load Testingで
負荷テスト
性能・エラー確認
本番へ展開
まとめ  .NET Framework 4.8か.NET 6にするか、移行コ
ストを踏まえて見極めましょう
 クラウドで提供されているPaaSを活用して効率
的な開発をしましょう
◼ 本書に記載した情報は、本書各項目に関する発行日現在の Microsoft の見解を表明するものです。Microsoftは絶えず変化する市場に対応しなければならないため、ここに記載した情報に
対していかなる責務を負うものではなく、提示された情報の信憑性については保証できません。
◼ 本書は情報提供のみを目的としています。 Microsoft は、明示的または暗示的を問わず、本書にいかなる保証も与えるものではありません。
◼ すべての当該著作権法を遵守することはお客様の責務です。Microsoftの書面による明確な許可なく、本書の如何なる部分についても、転載や検索システムへの格納または挿入を行うこと
は、どのような形式または手段(電子的、機械的、複写、レコーディング、その他)、および目的であっても禁じられています。これらは著作権保護された権利を制限するものではあり
ません。
◼ Microsoftは、本書の内容を保護する特許、特許出願書、商標、著作権、またはその他の知的財産権を保有する場合があります。Microsoftから書面によるライセンス契約が明確に供給さ
れる場合を除いて、本書の提供はこれらの特許、商標、著作権、またはその他の知的財産へのライセンスを与えるものではありません。
◼ Microsoft, Windows, その他本文中に登場した各製品名は、Microsoft Corporation の米国およびその他の国における登録商標または商標です。
その他、記載されている会社名および製品名は、一般に各社の商標です。

【BS11】毎年訪れる .NET のメジャーバージョンアップに備えるために取り組めること

  • 1.
    松村 優大 &亀川 和史 毎年訪れる .NET の メジャーバージョン アップに備えるために 取り組めること
  • 2.
  • 3.
    亀川 和史 Microsoft MVPfor Developer Technologies (DevOps and GitHub) @kkamegawa 松村 優大 Microsoft MVP for Developer Technologies (.NET and Azure) @tsubakimoto_s
  • 4.
  • 5.
    Visual Studio Visual Studio2022 • .NET 6向けの64bit統合IDE • モバイル/デスクトップ/クラウド に適応した開発環境 • Preview/Current/LTS複数チャネル
  • 6.
    .NET Framework から.NET へ .NET Framework 2.0 .NET Framework 3.5 (2029/1/9 EOL) .NET Framework 4.6.1 (2022/4/26 EOL) Microsoft .NET Framework Support Lifecycle | Microsoft Docs .NET Framework 4.8 .NET Core 3.1 (2022/4/26 EOL) Microsoft .NET および .NET Core Support Lifecycle | Microsoft Docs .NET 5 (2022/5/8 EOL) .NET 6
  • 7.
    .NET Framework 4.8 を使い続けるケース マイグレーションが難しい技術を使う  WCF (Windows Communication Foundation)  .NET Remoting  App Domain  WF (Workflow Foundation)  リフレクションによるアセンブリの保存  非互換を伴うクラスライブラリの使用  過去資産上移行できない 破壊的変更 - .NET Framework から .NET Core | Microsoft Docs
  • 8.
    .NET 6 を使う ケース 新規開発  3rdパーティ、OSS 含めて .NET への移行が進んでいる  クラウドネイティブアプリケーション  Web, サーバーレス, コンテナー など  Web+モバイルなど、複数のアプリケーション を開発する場合 (.NET Standard)  標準技術(gRPC, HTTP/2, Web Assembly)を活用
  • 9.
    .NET Upgrade Assistant  .NETFramework から .NET 6 への移行作業を 支援するツール  対応しているアプリケーションの種類  Windows Forms  WPF  ASP.NET MVC  コンソール  クラスライブラリ ※異なる種類のアプリケーションへの移行は不可 .NET アップグレード アシスタントの概要 - .NET Core | Microsoft Docs
  • 10.
    マイグレーション&モダナイゼーションのデモ Legacy Pre ModernModern Client-Server System .NET Framework (WinForms) .NET Framework (WCF) Client-Server System .NET 6 (WinForms) .NET Framework (WCF) Web Application .NET 6 (ASP.NET Core) Microsoft Azure 題材:GitHub で公開されているサンプルアプリケーション https://github.com/dotnet-architecture/eShopModernizing/tree/main/eShopLegacyNTier
  • 11.
    Legacy sample app .NETFramework の よくあるクラサバアプリ
  • 12.
    Premodern sample app .NETUpgrade Assistant を使うことで .NET Framework から .NET 6 への移行難易度が下がる。 ただし全てのコードが移行されるわけでなく、ビジネス ロジックは人による移行が必要となる。 https://docs.microsoft.com/ja- jp/dotnet/core/porting/upgrade-assistant-winforms- framework WinForms のみ .NET 6 にモダナイズ
  • 13.
  • 14.
    WCF を維持する難しさ クライアントサイドのWinForms アプリを .NET 6 に移行することができても、サーバーサイドの WCF アプリは .NET 6 に移行することができない。 WCF の移行先として gRPC が推奨されているが、 実装方法は大きく異なるため、ビジネスロジッ クは再実装を前提に考えたほうが良い。 ※ CoreWCF を使うという選択肢もあるが、 OSS を扱うスキルを有していることが望ましい。 WCF 開発者向け ASP.NET Core gRPC - WCF 開発者向け gRPC | Microsoft Docs
  • 15.
    .NET アプリケーションの移行パス Console WinForms /WPF WCF ASP.NET Web Forms ASP.NET MVC ASP.NET Web API Console / Generic Host WinForms / WPF gRPC ASP.NET Core Blazor ASP.NET Core MVC ASP.NET Core Web API アプリケーションの形は似ているが 使用技術や開発者に求められるスキルは大きく異なる
  • 16.
    クラウドを使った Web アプリに移行する WCF を使い続けることは.NET Framework を 使い続けるということである。 .NET Framework は今後大きなアップデートは行 われないため、コンテナー等でインフラも含め て維持・運用する必要がある。 開発の効率化や運用負担の軽減を考慮すると、 クラウドでの Web アプリケーション構成を 検討することを勧めたい。  アプリ: .NET 6 + ASP.NET Core  インフラ: PaaS on Microsoft Azure
  • 17.
    Web アプリへの移行の 流れ アプリケーション形式が異なるため .NET UpgradeAssistant で移行はできない。 コードを再利用しつつ、新たに設計・実装する 必要があることを理解する。 現実的な移行方法としては… 1. アーキテクチャー:新たに設計する 2. データベース:Data Migration Assistant で移行する 3. モデル:なるべく再利用する 4. ビジネスロジック:なるべく再利用する 5. デザインやUI:新たに実装する データ Migration Assistant を使用して Azure SQL Database に SQL Server を移行する - SQL Server | Microsoft Docs
  • 18.
    アプリケーション アーキテクチャーの 見直し アプリケーションの移行をスムースに行うには 移行前のコードの状態が重要である。 画面 (フォーム) にビジネスロジックが多く実装 されていると、Webアプリ移行の作業量が多く なることが予想される。 既存アプリケーションにおいても “N 層アーキテ クチャー”、“クリーンアーキテクチャー” に リファクタリングを行うことで、再利用できる コードを明確にすることができる。
  • 19.
    アプリケーションアーキテクチャーの最新化 一般的な Web アプリケーションアーキテクチャ | Microsoft Docs N 層アーキテクチャー クリーンアーキテクチャー
  • 20.
    クラウド活用のための 2つのフレームワーク  Cloud AdaptionFramework (CAF)  組織にクラウドを導入するための 5ステップ の戦略 1. 計画 2. 準備 3. 導入 4. ガバナンス 5. 管理  Well-Architected Framework (W-A)  Azure アーキテクチャーの効果的な 5つの設計原則 1. コスト最適化 2. オペレーショナルエクセレンス 3. パフォーマンス効率 4. 信頼性 5. セキュリティ Microsoft Cloud Adoption Framework for Azure Microsoft Azure Well-Architected Framework
  • 21.
    Modern sample app Azure+ ASP.NET Core PaaS 中心のアーキテクチャー Monitor Cache Database CI/CD Web Application
  • 22.
    Modern sample app Azure+ ASP.NET Core Well-Architected Framework: Security Monitor Cache Database CI/CD Web Application Secret
  • 23.
    スムースな移行 のために必要な こと  DevOpsプラクティスを活用して開発速度を上 げる  ContinuousIntegration (CI)  Continuous Delivery (CD)  負荷テスト  モニタリング  移行前後のトラブルを防ぐ  性能分析  モニタリング  Blue / Green デプロイ
  • 24.
  • 25.
    Azure Load Testingを使った負荷テスト ファイル コミット (jmx含む) CIトリガー LoadTesting 呼び出し Load Testingで 負荷テスト 性能・エラー確認 本番へ展開
  • 26.
    まとめ  .NETFramework 4.8か.NET 6にするか、移行コ ストを踏まえて見極めましょう  クラウドで提供されているPaaSを活用して効率 的な開発をしましょう
  • 27.
    ◼ 本書に記載した情報は、本書各項目に関する発行日現在の Microsoftの見解を表明するものです。Microsoftは絶えず変化する市場に対応しなければならないため、ここに記載した情報に 対していかなる責務を負うものではなく、提示された情報の信憑性については保証できません。 ◼ 本書は情報提供のみを目的としています。 Microsoft は、明示的または暗示的を問わず、本書にいかなる保証も与えるものではありません。 ◼ すべての当該著作権法を遵守することはお客様の責務です。Microsoftの書面による明確な許可なく、本書の如何なる部分についても、転載や検索システムへの格納または挿入を行うこと は、どのような形式または手段(電子的、機械的、複写、レコーディング、その他)、および目的であっても禁じられています。これらは著作権保護された権利を制限するものではあり ません。 ◼ Microsoftは、本書の内容を保護する特許、特許出願書、商標、著作権、またはその他の知的財産権を保有する場合があります。Microsoftから書面によるライセンス契約が明確に供給さ れる場合を除いて、本書の提供はこれらの特許、商標、著作権、またはその他の知的財産へのライセンスを与えるものではありません。 ◼ Microsoft, Windows, その他本文中に登場した各製品名は、Microsoft Corporation の米国およびその他の国における登録商標または商標です。 その他、記載されている会社名および製品名は、一般に各社の商標です。