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リクエストの挙動とミドルウェアの仕組み

(3)個々のリクエスト処理を設定するConfigureメソッド(Startupクラス)

 3番目に呼び出されるConfigureメソッドでは、個々のHTTPリクエストで処理する流れ(パイプライン)を登録します。IApplicationBuilder引数に対してUse~メソッドで実行順に登録します。またILoggerFactory引数に対してログの設定を行います。

リスト StartupクラスのConfigureメソッド
public void Configure(IApplicationBuilder app,
      IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    // ログ設定を設定ファイルから読み込みコンソール表示
    loggerFactory.AddConsole(Configuration.GetSection("Logging"));
    loggerFactory.AddDebug();

    if (env.IsDevelopment())
    {
        // 開発環境では開発用例外ページとブラウザリンク機能を使用
        app.UseDeveloperExceptionPage();
        app.UseBrowserLink();
    }
    else
    {
        // 開発環境以外では「/Home/Error」の例外ページを使用
        app.UseExceptionHandler("/Home/Error");
    }

    // 静的ファイルを使用
    app.UseStaticFiles();

    // MVCを使用
    app.UseMvc(routes =>
    {
        routes.MapRoute(
            name: "default",
            template: "{controller=Home}/{action=Index}/{id?}");
    });
}

 このコードでは「app.UseExceptionHandler(例外処理)」「app.UseStaticFiles(静的ページ)」「app.UseMvc(MVC処理)」の順で処理を登録しています。

 従来のASP.NETでは、HttpModule(イベントに応じた特定の処理)やHttpHandler(拡張子に応じた挙動)にて処理を制御していましたが、ASP.NET Coreでは、「ミドルウェア」という仕組みにてWebアプリケーションを制御します。

ASP.NET Coreのリクエストを制御するミドルウェアの仕組み
ASP.NET Coreのリクエストを制御するミドルウェアの仕組み

 この図にあるように、それぞれのミドルウェアは、登録された順に処理を行い、次のミドルウェアに制御を渡していきます。最後まで行けば、逆順で処理が戻ってきます。認証エラーなど、途中で中断することが必要な場合は、そこで中断することも可能です。

 標準で、次のようなミドルウェアが用意されています。これらのミドルウェアは必要に応じて追加したり、削除したりできます。

ASP.NET Coreの標準で提供されているミドルウェア
組み込みのミドルウェア 説明
Authentication 認可に関するミドルウェア
CORS CORS(Cross-Origin Resource Sharing)設定に関するミドルウェア
Routing リクエストのルーティングを設定するミドルウェア
Session ユーザーセッションを管理するミドルウェア
Static Files 静的ファイルを扱うミドルウェア

 例えば、静的ファイルが不要であれば、UseStaticFilesメソッドを削除すれば良く、セッションを使いたければUseSessionメソッドを追加します。ミドルウェアの詳細はMiddlewareのページを御覧ください。

 以上、Webアプリケーションの挙動を指定できました。中編にて紹介した通り、デバッグ実行すれば、Webサーバーが起動し、ブラウザにて結果を確認することができます。

ASP.NET MVCの基本を理解するには

 MVCの処理の部分は以前のMVC5の挙動と大きくは変わりませんので、こちらのASP.NET MVC解説記事などを参考にしてプログラムを書いてみると良いでしょう。

[コラム]ASP.NET Coreで採用されているテスティングフレームワーク「xUnit.NET」

 MacやLinuxでのテストも想定されるため、ASP.NET CoreではxUnit.NETが標準のユニットテストフレームワークとして採用されています。xUnit.NETはNUnitとMsTestの開発に携わったBrad Wilson氏とJames Newkirk氏が関わった新しいテストツールです。TestやFitxureではなく、Factという属性を付与することが特徴的です。

連載のまとめ

 これまで全3回にわたって、ASP.NET Coreについてご紹介してきました。新たに登場したASP.NET Coreは、オープンで柔軟な基盤として生まれ変わりました。Windowsデベロッパー向けという印象が強かったASP.NETとC#ですが、LinuxやLL言語の開発者に対しても認知される機会が増えようとしています。本稿で紹介した内容は、簡単に試せますので一度試してみてはいかがでしょうか。

参考資料

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

  • 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」など、さまざまなカンファレンスを企画・運営しています。

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

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

メールバックナンバー

アクセスランキング

アクセスランキング