ASP.NET Core Path [レベル1]の基本

ASP.NET Coreは、最新のクロスプラットフォームWeb開発フレームワークです。 彼の人気(および空席の数)が勢いを増し始めたばかりですが、彼についてもっと学ぶ時間です。 それで、読んだ直後にすべての知識が消えないように-不可欠な実用的な部分を追加します。 読んだものをテストする簡単なアプリケーションを作成しましょう。

新しいフレームワークですでにかなりクールだと思う場合は、記事を読む前にテストに合格することができます。 リンク すべてのプロジェクトコードはgithubで表示できます。

最初の部分は次のとおりです。




用語で理解します。 最も不明瞭な点の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との違いは何ですか? それらのいくつかは次のとおりです。


さらに、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メソッドで構成されます。 例:

  // Add framework services. services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"))); services.AddIdentity<ApplicationUser, IdentityRole<Guid>>() .AddEntityFrameworkStores<ApplicationDbContext, Guid>() .AddDefaultTokenProviders(); services.AddMvc(); // Add application services. services.AddTransient<IEmailSender, AuthMessageSender>(); services.AddTransient<ISmsSender, AuthMessageSender>(); 

データベースのコンテキストとIdentityフレームワークには、一般的な登録方法ではなく、追加の登録方法があることに気付くかもしれません。 これにより、より柔軟に構成できます。 拡張メソッドは、このサービス登録アプローチに非常にうまく適合します。

サービスを登録した後、コード(コントローラーなど)から取得する最も簡単な方法は、登録済みの型のコンストラクターにパラメーターを追加するだけです。 このようなコントローラーは、デフォルトでscaffoldingによって作成されます。

展開する


展開する最も簡単な方法の1つは、Microsoft Azureです。 最も基本的な設定で十分に機能します。 サーバーへのサイトのデプロイは、プロジェクトファイルのコンテキストメニューから数回クリックするだけで簡単です。



結論


「古典的な」.NETフレームワークの未来はまだ知られていません。それにもかかわらず、より安定してテストされているため、かなり長い間存在する可能性があります(こんにちは、Python 2)。すでに.NETで古い-わずか14歳です)。

現在のバージョンのフレームワークとツールの安定性は非常に楽しいものです。 完全ではありませんが、主なことは、コードを完全に記述できることです。 Microsoftフレームワークは、いつものように、以前のバージョンに慣れていれば、次のバージョンの半分以上を既に知っているという事実に感銘を受けます。 優れたASP.NET開発者にとっては、ドキュメントをまったく読まずにCoreで書き始めることができますが、多くのことは理解されません。 真実は、通常のASP.NETで書くのは難しいことです。彼らはすぐに良いことに慣れます。

また、StackOverflowに関する質問の数も驚くべきものです。 基本的なことに関係する質問は、ASP.NET Coreプレフィックスで既に完全にグーグル検索されています。 多くの場合、それらの答えはGithubと、フレームワーク自体の開発者の議論にあります。これは、.NETの世界にとってまったく新しい体験です。 非常に珍しくて面白い。

ソースコード
テストを受ける

Source: https://habr.com/ru/post/J312226/


All Articles