SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

いよいよ登場「ASP.NET Core 1.0」 マルチプラットフォームな.NETとは?

ASP.NET Coreの雛形コードを見てみよう

いよいよ登場「ASP.NET Core 1.0」 マルチプラットフォームな.NETとは? 第3回

  • X ポスト
  • このエントリーをはてなブックマークに追加

Webアプリケーションの設定を行う「Startup」クラス

 Webサーバーの設定に続けて、アプリケーションの設定を行う「Startup」クラスを見ていきましょう。スタートアップに使用するクラスは、ホスト設定時に「WebHostBuilder().UseStartup<クラス名>」にて指定します。

 WebHostBuilderクラスのBuildメソッドを呼び出したタイミングで、Startupクラスのメソッドが次の順番で呼び出されます。

  1. コンストラクタ(環境情報を設定)
  2. ConfigureServicesメソッド(使用するサービスを設定)
  3. Configureメソッド(リクエスト処理方法を設定)

(1)環境設定を行うコンストラクタ(Startupクラス)

 コンストラクタでは環境に関する情報を設定します。コンストラクタ引数のIHostingEnvironmentに環境情報が渡されます。

リスト 「Startup.cs」 のコンストラクタ
public Startup(IHostingEnvironment env)
{
    // ConfigurationBuilderで環境設定
    var builder = new ConfigurationBuilder()
        .SetBasePath(env.ContentRootPath)
        .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
        .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
        .AddEnvironmentVariables();

    Configuration = builder.Build();
}

 上記のコードでは、ConfigurationBuilderクラスを用いて「パス」「設定ファイル」「環境変数」といった設定を行っています。例えば、アプリケーション設定を記述している「appsettings.json」ファイルを読み込んでいます。

リスト アプリケーション設定ファイル「appsettings.json」
{
  "Logging": {
    "IncludeScopes": false,
    "LogLevel": {
      "Default": "Debug",
      "System": "Information",
      "Microsoft": "Information"
    }
  }
}

 このファイルはログの設定で、後述するConfigureメソッドにて読み込まれます。以前であればWeb.configに記載する内容でしたが、ASP.NET Coreでは、独立した設定用Jsonファイルに記述しています。

 なお、中編で紹介した環境変数(「Development」「Staging」「Production」)に応じた対象ファイルが、「AddJsonFile($"appsettings.{env.EnvironmentName}.json"」という記載により読み込まれる挙動となります。

(2)サービス登録を行うConfigureServicesメソッド(Startupクラス)

 2番目に、ConfigureServicesメソッドが呼び出されます。ここでは、IServiceCollection引数に使用するサービスを登録して、アプリケーションで使う準備を行います。

リスト StartupクラスのConfigureServicesメソッド
public void ConfigureServices(IServiceCollection services)
{
    アプリケーションで使用するサービスの登録(DI)
    services.AddMvc();
}

 上記のコードでは「AddMvc」メソッドにて、Mvc用のサービスを登録しています。

 このConfigureServicesメソッドではアプリケーションで使用するサービス群を登録できます。標準で他にも、次のサービスを登録するメソッドが用意されています。

ASP.NET Coreが提供するサービス例
サービスを追加するメソッド名 説明
AddAuthorization 認可に関するサービス
AddCors CORS(Cross-Origin Requests)サービス
AddDbContext Entity Frameworkのサービス
AddDistributedMemoryCache 分散メモリキャッシュサービス
AddIdentity メンバーシップ(ユーザーログイン)サービス
AddLogging ログ出力サービス
AddMemoryCache インメモリキャッシュのサービス
AddMvc ASP.NET MVCのサービス
AddSession セッションを使用するサービス

[コラム]Entity Framework Coreとは

 Entity Framework Coreは、軽量なデータアクセスフレームワークです。セットアップはNuGetで導入することができ、SQL Server、SQLite、Npgsql、IBM Data Servers、インメモリ(検証/テスト用途)等DBの対応しています。日本語での説明としては、Microsoftの赤間さんの記事が参考になります。

DIコンテナ機能が標準で提供されたASP.NET Core

 独自に開発したクラス(サービス)をアプリケーションに登録することもできます。その場合は「services.AddTransient(<IEmailSender, MailSender>)」のように、インターフェイスと実装クラスのペアで登録します。

 ASP.NET CoreではDIコンテナ(オブジェクト生成と依存性解決を行うフレームワーク)の機能が標準で提供されています。そのためControllerのコンストラクタ引数に、インターフェイスを宣言するだけで、その実装クラスを利用できます。Add〜メソッドの種類は、インスタンスのライフサイクルに応じて、Transient(呼び出し時に毎回生成)、Scoped(HTTPリクエストごとに一度生成)、Singleton(アプリケーションで一度生成)のいずれかから選択できます。

 なお、autofacのようなサードパーティのDIコンテナを使うこともできます。詳細はDependency Injectionのページをご覧ください。

次のページ
Webリクエストの挙動とミドルウェアの仕組み

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
いよいよ登場「ASP.NET Core 1.0」 マルチプラットフォームな.NETとは?連載記事一覧

もっと読む

この記事の著者

WINGSプロジェクト 青木 淳夫(アオキ アツオ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS Twitter: @yyamada(公式)、@yyamada/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/9778 2016/12/12 13:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング