ASP.NET Coreは、最新のクロスプラットフォームWeb開発フレームワークです。 彼の人気(および空席の数)が勢いを増し始めたばかりですが、彼についてもっと学ぶ時間です。 それで、読んだ直後にすべての知識が消えないように-不可欠な実用的な部分を追加します。 読んだものをテストする簡単なアプリケーションを作成しましょう。
新しいフレームワークですでにかなりクールだと思う場合は、記事を読む前にテストに合格することができます。
リンク すべてのプロジェクトコードは
githubで表示できます。
最初の部分は次のとおりです。
- .NET CoreおよびASP.NET Coreとは何ですか?
- アプリケーション作成の基本とその構造
- 新しい足場要素の追加
- 組み込みの依存性注入の基本
- Azureでの展開

用語で理解します。 最も不明瞭な点の1つは、古いASP.NET MVCフレームワークと新しいASP.NET Coreの関係、および.NETと.NET Coreの違いです。 最後から始めましょう。 .NET Coreは、一般的なソフトウェア開発プラットフォームです。 実際、これは.NET標準の別の実装です(他の実装は.NET、Monoです)。 この実装(
.NET Core )の違いと機能は次のとおりです。
- オープンソース
- クロスプラットフォーム
- 柔軟なインストール-アプリケーション内に配置でき、同じマシンに複数のバージョンを配置できます
- すべての作業シナリオは、コンソールツールを使用してサポートされます。
ASP.NET Coreに
進みましょう。 これは、Microsoftの新しいWebアプリケーション開発フレームワークであり、既存のASP.NET MVCフレームワークの再設計の結果として生まれました。 ASP.NET Coreは.NET Coreに基づいている必要はないことを理解する必要があります。 古き良き.NETに基づいてASP.NET Coreアプリケーションを作成できます。 このオプションは、新しいプロジェクトを作成するための標準ダイアログにあります。

では、ASP.NET Coreの機能と以前のASP.NETとの違いは何ですか? それらのいくつかは次のとおりです。
- 必要なモジュール、アセンブリをより良く制御する能力。 たとえば、IIS、System.Web.dllへの緊密なバインドはありません
- 依存性注入の組み込み機能
- オープンソース
さらに、Coreアプリケーションは他のタイプのアプリケーションと統合されました。 これで、アプリケーションの起動時に呼び出されるMainメソッドが同じ方法で含まれるようになり、Webメソッドが単純に起動されます。 最小限のアプリケーションは次のようになります。
public class Program { public static void Main(string[] args) { var host = new WebHostBuilder() .UseKestrel() .UseStartup<Startup>() .Build(); host.Run(); } } public class Startup { public void ConfigureServices(IServiceCollection services) { } public void Configure(IApplicationBuilder app) { } }
Statupクラスは、ある程度、Global.asaxの新しいバージョンとして記述できます(これは、ASP.NETの以前のバージョンでのアプリケーション全体のグローバル構成のためのクラスです)。 大まかに言うと、依存性注入とそのサービス用のコンテナーを構成するには
ConfigureServicesメソッドが必要であり、要求処理パイプラインを構成するには
Configureメソッドが必要です。
実際の実装に取りかかりましょう
すべての革新をよりよく理解するために、.NET Coreに基づいたASP.NET Coreアプリケーションを作成します。

作業を楽にするために、Webアプリケーションを選択し、認証を個別のユーザーアカウントに変更します。 したがって、Visual Studioはベースアプリケーションに必要なすべてのコードを既に生成します。

ASP.NET Coreの新機能を詳しく見てみましょう。 開発の観点から見ると、コンセプト全体は同じままです。 プロジェクト構造は、MVCパターンに基づいています。 デフォルトでデータを処理するには、Entity Frameworkを使用します。ロジックはコントローラークラスで記述され、プレゼンテーションレベルではcshtml構文+新しいタグヘルパーチップを使用します。
Program.csクラスとStartup.csクラスを確認してみましょう。これらは実際には上記と同じように見えます。 もちろん、Startupクラスは完全に空ではありませんが、構成の読み取り、基本的なログの設定、ルーティング、データベースモデルへのバインドのための機能が既に含まれています。
データベースモデルに、テストを作成して合格するためのエンティティを追加します。 次のエンティティを使用します。一連のテスト質問-TestPackage、質問自体(テスト)-TestItem、テスト結果-TestResult。 例は
ここにあります 。 EntityFramework Coreが既にほとんどの機能をサポートしており、Code First移行を完全に使用できることを嬉しく思います。
ロジックを追加
データベースモデルができたので、アプリケーションのロジックの作成を開始できます。 管理領域を作成する最も簡単な方法は、scaffoldingメカニズムを使用することです。 これを行うには、コントローラーフォルダーを右クリックし、[追加]→[新しい足場アイテム]を選択します。

「Entity Frameworkを使用したビューを持つMVCコントローラー」を選択します。 このテンプレートを使用すると、特定のモデルを制御するためのコントローラーとビューをすばやく作成できます。 TestPackageとTestItemに対してこのトリックを行います。 その結果、システム用の既製のプロトタイプ管理パネルができました。 プロジェクトを開始してこれらのコントローラーのページに移動し、アドレスの末尾に「Controller」という単語を付けずに名前を追加するだけです(例:/ testpackages)。 もちろん、すべてが完璧ではないため、いくつかのポイントを完了してより便利にする必要があります。
モデルとそれを使用する単純な機能を作成したら、テストに合格するプロセスに進むことができます。 一般的に、すべてがシンプルに見えます。 サーバーは質問とオプションを送信し、答えを送り返します。 サーバーはそれを保存します。 テストの最後に、結果を表示します。 この動作の
コードを追加し
ます 。
一般的に、テストに必要なものはすべて揃っています。
ASP.NET Coreでの依存性注入の基本
ASP.NETの新バージョンの重要な革新は、組み込みの依存性注入メカニズムでもあります。 2016年には、依存関係を実装するメカニズムをフレームワークに転送できるという事実に誰も驚かないでしょう。 このアプローチを使用せずに作成された深刻なアプリケーションはほとんどありません。 ASP.NET CoreのDIは非常に基本的に実装されていますが、同時に依存関係管理の問題のほとんどを解決できます。
コンテナは、スタートアップクラスのConfigureServicesメソッドで構成されます。 例:
データベースのコンテキストとIdentityフレームワークには、一般的な登録方法ではなく、追加の登録方法があることに気付くかもしれません。 これにより、より柔軟に構成できます。 拡張メソッドは、このサービス登録アプローチに非常にうまく適合します。
サービスを登録した後、コード(コントローラーなど)から取得する最も簡単な方法は、登録済みの型のコンストラクターにパラメーターを追加するだけです。 このようなコントローラーは、デフォルトでscaffoldingによって作成されます。
展開する
展開する最も簡単な方法の1つは、Microsoft Azureです。 最も基本的な設定で十分に機能します。 サーバーへのサイトのデプロイは、プロジェクトファイルのコンテキストメニューから数回クリックするだけで簡単です。

結論
「古典的な」.NETフレームワークの未来はまだ知られていません。それにもかかわらず、より安定してテストされているため、かなり長い間存在する可能性があります(こんにちは、Python 2)。すでに.NETで古い-わずか14歳です)。
現在のバージョンのフレームワークとツールの安定性は非常に楽しいものです。 完全ではありませんが、主なことは、コードを完全に記述できることです。 Microsoftフレームワークは、いつものように、以前のバージョンに慣れていれば、次のバージョンの半分以上を既に知っているという事実に感銘を受けます。 優れたASP.NET開発者にとっては、ドキュメントをまったく読まずにCoreで書き始めることができますが、多くのことは理解されません。 真実は、通常のASP.NETで書くのは難しいことです。彼らはすぐに良いことに慣れます。
また、StackOverflowに関する質問の数も驚くべきものです。 基本的なことに関係する質問は、ASP.NET Coreプレフィックスで既に完全にグーグル検索されています。 多くの場合、それらの答えはGithubと、フレームワーク自体の開発者の議論にあります。これは、.NETの世界にとってまったく新しい体験です。 非常に珍しくて面白い。
ソースコードテストを受ける