これは、関連する学習リソースへのリンクを備えた.NETエンジニアになるための段階的なガイドです。
.NET Technologiesの詳細については、必ず私のニュースレターを購読してください。
このリポジトリが役立つと思う場合は、Patreonで私をサポートすることを検討してください。

このロードマップは、風景についてのアイデアを提供することを目的としています。ロードマップは、誇大広告でトレンディなものを選ぶように奨励するのではなく、次に学ぶべきことを明確にする必要がある場合に導きます。 1つのツールが他のツールよりもいくつかのケースに適している理由をある程度理解し、誇大広告とトレンディが仕事に最適なことを意味することを覚えておいてください。
このプロジェクトが好きまたは使用してソリューションを学習または起動している場合は、スターを渡してください。ありがとう!
年功序列レベルでは、それは次のことを意味します。
?ジュニア:基本概念
?中央値:高度な概念
?シニア:専門家の概念

PDFバージョンをダウンロードします。
以下に、すべてのジュニア.NET開発者が知る必要がある最小限のバージョンを見つけることができます。PDFバージョンには、学習資料が含まれており、クリック可能です。

PDFバージョンをダウンロードします。
詳細に入る前に、 .NETエコシステムを確実に理解する必要があります。ここにあなたが理解する必要があるいくつかがあります:
このセクションでは、メインの.NETランタイムを確認します。 .NETランタイムは、.NETのECMA-335標準を実装するものと考えています。
.NETフレームワークは、Windowsでアプリケーションを構築および実行するためのソフトウェア開発フレームワークです。 .NETフレームワークは、共通言語ランタイム(CLR)、.NETフレームワーククラスライブラリ、およびアプリケーションワークロード(WPF、Windowsフォーム、およびASP.NET)で構成されています。 CLRは、コードを実行する共有インフラストラクチャの一部であるJIT、Garbage Collection(C#、VB.NET、F#)などを実行します。CLRが管理するコードは、管理コードと呼ばれます。コードは、一般的な中間言語(CIL)にコンパイルされ、アセンブリ(.exeまたは.dll拡張子付き)に保存されます。アプリケーションが実行されると、CLRはアセンブリを取得し、ジャストインタイムコンパイラ(JIT)を使用して、特定のコンピューターアーキテクチャで実行できるコードにマシンコードを透過させます。
デスクトップ開発とWeb開発の両方に使用できますが、Windows開発に限定されており、Windowsにプリインストールされています。
.NETコアは、.NETエコシステムのランタイムの1つです。 2016年にリリースされました。オープンソースがあります。 .NETフレームワークの新しいバージョンを表すものではなく、置き換えません。これは、アプリケーション開発のためのクロスプラットフォーム機能を可能にするために構築された完全に独立したバージョンです。 .NETコアは、CLRとライブラリを実行するアプリホスト(dotnet.exe)で構成されています。共通の言語ランタイム(CORECLR)と.NETコアクラスライブラリがあります。 ASP.NETコア(MVCおよびAPI)、コンソールアプリケーション、UWP(現在)など、さまざまなアプリケーションワークロードをサポートしています。
.NET Coreは、Windowsクライアント、サーバー、IoT、Linux、Ubuntu、FreeBSD、Tizen、Mac OSXのさまざまなプラットフォームで実行でき、マシンまたはユーザーごとに異なるバージョンの並べ替えが可能です。
.NET 5は、2020年11月にリリースされ、デスクトップ、Web、クラウド、モバイル、ゲーム、IoT、およびAIアプリケーションの開発を統合することを目的としています。以前のセットアップの目標は、.NETコア、.NETフレームワーク、Xamarin、およびMonoの最適な機能を統合する単一の.NETランタイムとフレームワーク、クロスプラットフォームを作成することでした。ただし、グローバルな健康パンデミックにより、統一は.NET 6に延期されました。.NET5は、.NETコア、モノ、Xamarin、および将来の.NET実装の共有コードベースです。また、.NETターゲティングのバージョンを表現するターゲットフレームワーク名(TFMS)が更新されるため、Net5.0があります。これは、どこでも実行されるコード用です。 Net5.0とOS固有のバインディングを含む.NET 5のOS固有のフレーバーを表すNetCoreAppとNetStandardの名前とNet5.0ウィンドウを組み合わせて交換します。
.NET 9は、.NETエコシステムの最新のランタイムです。 2024年11月にリリースされます。デスクトップ、Web、クラウド、モバイル、ゲーム、IoT、およびAIアプリケーションの開発を統合します。 .NET 9は、CLRとライブラリを実行するアプリホスト(dotnet.exe)で構成されています。共通言語ランタイム(CORECLR)と.NET 8クラスライブラリがあります。また、ASP.NET Core 9が含まれます。.NET9は、Windows、MacOS、Linux用の.NET Core 3.1とほぼ同じプラットフォームサポートを備えています。
.NET 9は、その後のSTSまたはLTSリリースの6か月間サポートされている標準用語サポートリリースです。
.NET 8は長期的なサポート(LTS)でした。これらのリリースは、最初のリリース後3年間サポートされています。
さまざまなランタイムが異なるクラスライブラリを使用します。たとえば、.NETフレームワークでは.NETフレームワーククラスライブラリを使用しますが、.NET CoreにはクラスライブラリとクラスライブラリのXamarinが含まれています。このようにして、異なるAPIを使用するため、異なるランタイム間でコードを共有することは困難です。 Microsoftのソリューションは、2016年にリリースされた.NET Standard Libraryです。使用できるAPIとすべてのランタイムを実装する(正式な)仕様のセットを表します。これは、ポータブルクラスライブラリ(PCL)の進化です。特定のランタイムは、.NET標準の特定のバージョン(特定のAPIの実装)を実装します。例、.NETフレームワーク4.8.1は.NET標準2.0を実装し、.NET 7は.NET標準2.1(リンク)を実装しています。
.NETエコシステムの詳細については、このブログ投稿をご覧ください。
Microsoftによる.NETリリーススケジュール:

C#は、Microsoftが開発したプログラミング言語です。これは、デスクトップアプリケーションやゲーム(Unityを使用)からクラウドベースのソリューションやWebサービスまで、あらゆるものを構築するための言語です。オブジェクト指向プログラミングとリッチライブラリを強力にサポートしているため、簡単で効率的になるように設計されています。
最新バージョンは、2024年11月にリリースされたC#13です。
完全なC#タイムラインを確認してください:

次のようなさまざまなC#言語機能を理解する必要があります。

また、 .NETライブラリとAPIも次のとおりです。
リソース:
GITのようなデザインパターン、クリーンコード、およびバージョンコントロールをマスターすることで、チーム環境で機能し、繁栄する効率的で保守可能なコードを作成できます。これは、コーダーと熟練したソフトウェアエンジニアであることの違いです。
ここでは、次のようなさまざまな原則を知る必要があります。
確固たる原則:
だけでなく:
リソース:
これは、MicrosoftがWebアプリ、API、マイクロサービスの構築用に開発したクロスプラットフォームの高性能フレームワークです。また、Windows、Linux、またはMacOでアプリを実行することもできます。組み込みの依存関係インジェクションや堅牢な構成システムなどの機能を備えた柔軟性とスケーラビリティのために設計されています。
ここでは、次のようなWeb開発の基礎を知る必要があります。
リソース:
.NETでUISを構築する場合は、これらのフレームワークが必要になります。 Razorは動的なHTMLを作成するためのテンプレートエンジンであり、 BlazorはNotchを使用して、JavaScriptの代わりにC#を使用してインタラクティブなWeb UIを構築できます。マウイは、クロスプラットフォームのモバイルアプリを構築するために作られたXamarinの後継者です。 Windows Presention Foundation(WPF)は、デスクトップクライアントアプリケーションを作成するUIフレームワークです。 UNO Platformは、WinUIおよびUniversal Windows Platform(UWP)ベースのコードをiOS、MacOS、Linux、Android、およびWebAssemblyで実行できるオープンソースのクロスプラットフォームグラフィカルユーザーインターフェイスです。
リソース:
優れたデータベース設計により、効率的なデータストレージと迅速な取得が保証され、アプリの実行がよりスムーズでスケーリングが容易になります。データベースインタラクションの頼りになる言語であるSQLは、保存するように慎重に設計されたデータをクエリ、更新、および管理する力を提供します。
ここで、あなたは知る必要があります:
リソース:
オブジェクトリレーショナルマッピング(ORM)は、オブジェクト指向のC#コードとリレーショナルデータベースの間の翻訳者のようなものであり、基本的なCRUD操作のSQLクエリを作成するという退屈なタスクを排除します。 Entity FrameworkなどのORMフレームワークを使用して、コード内のオブジェクトとしてデータを操作して、より読みやすく保守可能にすることができます。これにより、開発が高速化され、エラーが最小化され、データベースの構文と格闘するのではなく、複雑なビジネスロジックに集中できます。
エンティティフレームワークの場合、次のことを知る必要があります。
リソース:
キャッシュは、アプリの個人的な短期メモリのようなもので、頻繁にアクセスされるデータを保存するため、データベースにアクセスせずにすぐに取得できます。データベースの負荷を削減し、データアクセスをスピードアップすることにより、キャッシュは、応答性と可用性に対するユーザーの要求を満たすために必要な競争力をアプリに提供します。
リソース:
ロギングは、ランタイム情報、エラー、および問題を迅速に特定および修正するのに役立つその他の重要なデータをキャプチャし、アプリケーションをより信頼性と安全にします。 NLOGやSerilogなどのロギングフレームワークは、.NETにシームレスに統合され、アプリケーションの健康の監視、問題のトラブルシューティング、さらには将来の開発のための洞察を収集するために不可欠なリアルタイムの診断ツールを提供します。
リソース:
.NETには、リアルタイム通信、同期、および非同期通信の3種類の通信があります。 .NETエコシステムのSignalRなどのリアルタイム通信テクノロジーは、サーバーとクライアントの間に一定の接続を維持することにより、これらの機能を有効にします。同期通信は、主にHTTPクライアントを介して使用することによって行われますが、非同期通信はさまざまなメッセージングとイベントベースのフレームワークとライブラリを使用して行われます。メッセージングシステムは、システムのさまざまな部分の間の仲介者として機能し、直接接続されずに通信できるようにします。反対側のイベントハンドラーは、単一のアプリケーション内のイベントの処理に使用されます。彼らは、アプリケーションの一部が他の部品が反応できるイベントを提起できる出版社サブスクリバーモデルを促進します。
リソース:
これらのサービスは、バックグラウンドでタスクを実行し、アプリケーションを解放してユーザーインタラクションに焦点を当てます。データ処理、自動化された電子メール、または定期的なクリーンアップであれ、バックグラウンドサービスは、これらのタスクがユーザーエクスペリエンスを遅くしたり中断したりしないようにします。
リソース:
ユニットテストは、コードの孤立した部分に焦点を当て、統合テストにより、さまざまなパーツがうまく機能し、エンドツーエンドテストがアプリケーション内のユーザーの旅全体を検証します。一緒に、彼らはセーフティネットを形成し、バグを早期にキャッチし、デバッグを簡素化し、コードベースを堅牢で保守可能にします。
ここであなたは知る必要があります:
リソース:
これらのツールは、アプリケーションのパフォーマンス、ユーザーの動作、エラー率に関するリアルタイムの洞察を提供し、本格的な問題に積極的にエスカレートする前に問題に対処できるようになります。
監視は、サービスとシステムの健康と可用性に焦点を当てており、多くの場合、事前に定義された条件のアラートをトリガーします。
テレメトリーは、システムからデータを収集、処理、送信し、パターン、傾向、および異常の分析を可能にします。
リソース:
コンテナソリューションは、.NETアプリケーション、ライブラリ、およびランタイムを分離コンテナにカプセル化します。これにより、複数の開発環境と生産環境にわたる一貫性が可能になり、依存関係の問題が解決されます。階層化されたファイルシステムなどの機能を使用すると、ASP.NET、.NETコア、またはその他の.NETサービスのコンテナ画像を簡単に管理し、ビルド時間とリソース利用を最適化できます。
リソース:
クラウドプロバイダーは、インフラストラクチャを抽象化するためのAPIの層を提供し、セキュリティと請求の境界に基づいてそれを提供します。クラウドはデータセンターのサーバーで実行されますが、抽象化により、単一の「プラットフォーム」または大規模なアプリケーションとの対話が巧みに与えられます。クラウドプロバイダーでリソースを迅速に提供、構成、および保護する機能は、現代のDevOpsの途方もない成功と複雑さの鍵となりました。
市場で最も人気のあるクラウドプロバイダーは、 AWSとAzure 、およびGoogle Cloudです。
ここでは、ユーザーと管理、ネットワーク、仮想サーバーなどを管理する方法を知っている必要があります。
リソース:
CI/CDは、建物、テスト、および展開段階を合理化されたエラー耐性パイプラインに自動化します。これは、リリース、バグの修正、および機能開発に集中するためのより多くの時間を意味します。
ここであなたは次の方法を知る必要があります:
リソース:
いくつかの便利な.NETライブラリ。すべてのライブラリがすべての人が使用するわけではなく、主にあなたが取り組んでいるプロジェクトに依存することに注意してください。
これに加えて、以下を知る必要があります。
パフォーマンスは、.NETアプリケーションで重要な役割を果たします。ここであなたは知る必要があります:
これらのツールは、コードにあるさまざまなパフォーマンスボトルネックを特定してデバッグするのに役立ちます。このためには、次のような他のツールを使用できます。
ツールに加えて、.NETのさまざまなパフォーマンスベストプラクティスに注意する必要があります。
キャッシング(インメムメモリキャッシュまたはRedis)
データベースの最適化(クエリの最適化、適切なインデックス、接続プーリング)
ASYNCプログラミング(すべてのCPU広範なまたはI/Oバインド操作をDB、ファイルシステム、内線システムにオフロード)
エンティティフレームワークを賢く使用します(コンパイルされたクエリなどの熱心なロード、プロジェクション、および最適化を使用してください)
メモリ管理(値の種類を使用し、大きなオブジェクトグラフで慎重になります。DB接続またはストリームに分割パターンを使用します。ボクシング/ボックス化を避けます。文字列の代わりにStringBuilderを使用して、多数の連結に使用します。)
HTTPキャッシュ(ETAGS、ラスト修飾ヘッダーを使用)
ラウンドトリップを最小化する(HTTPリクエストの数とデータベースラウンドトリップの数を減らす)
コンテンツ配信ネットワーク(CDNS) (オフロード静的資産(CSS、JavaScript、画像)からCDNSへのユーザーへの配信を速くするため)
圧縮(HTTP応答のGZIPまたはBrotli圧縮を有効にして、データ転送サイズを削減します)
ロギングとトレース(生産の過度のログを避けてください。マイクロサービス全体で分散トレースを使用してください。)
並列性と並行性(パラレルクラスまたはタスクパラレルライブラリ(TPL)を使用したCPUバウンドタスクの並列性とマルチスレッドを利用)
リソースの最適化(Webの画像と資産を最適化して負荷時間を短縮)
SSLを介したHTTP2 (ページコンテンツについてインテリジェントな決定を下します)
パフォーマンスを測定および監視します(診断ツール、アプリの洞察、またはBenchmarkDotNetを使用)
ユーザースパン<>コレクションの代わりに(スパンはメモリの連続したセクションを表すことができます。これは、それらを使用して配列を介して動作できることを意味します)
セキュリティは、アプリケーション開発において重要な役割を果たします。 .NETの世界でセキュリティの最も重要な側面は次のとおりです。
認証と承認の概念:
暗号化とデータ保護の概念:
ロードマップを改善できると思われる場合は、更新を備えたPRを開き、問題を送信してください。また、私はこれを改善し続けるので、このリポジトリにも主演する必要があります。
MilanMilanović博士-3MDのCTO、開発者技術のためのMicrosoft MVP。