Shoeisha Technology Media

CodeZine(コードジン)

記事種別から探す

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

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

  • LINEで送る
  • このエントリーをはてなブックマークに追加

 本稿では、WindowsだけではなくMacやLinuxといったマルチプラットフォームで動作するASP.NET Coreについて紹介します。前編では、ASP.NET Coreの概要、セットアップ、Project.jsonファイルについて、中編では、依存性の解決方法、新しいツール、実行時の挙動について紹介しました。後編にあたる本稿では生成されたASP.NET Coreのコードの概要をご紹介いたします。

目次

エントリポイント「Main」メソッド(Programクラス)

 それでは、プロジェクトテンプレートにて生成されたASP.NET Coreのコードについて見ていきましょう。本稿では、従来のASP.NET MVCのコードと異なる箇所を中心に紹介していきたいと思います。

 ASP.NET Coreの起動時には、コンソールアプリのように「public static void Main」が最初に呼び出されます(そのため対象DLL内に「staticなMainメソッド」が1つだけあることが条件となります。メソッド名はproject.jsonのentryPoint属性で変更できます)。

リスト アプリケーション起動時に呼びだされる「Program.cs」
public class Program
{
    // staticのMainメソッドが開始場所
    public static void Main(string[] args)
    {
        // WebHostBuilderでホスト設定し、WebHostを構築
        var host = new WebHostBuilder()
            .UseKestrel()
            .UseContentRoot(Directory.GetCurrentDirectory())
            .UseIISIntegration()
            .UseStartup<Startup>()
            .Build();

        // WebHostの起動
        host.Run();
    }
}

Webサーバーの設定を行う「WebHostBuilder」

 ASP.NET CoreのWebサーバーを起動するには、WebHostBuilderクラスにてWebサーバーの設定を行います。そのため、ここのMainメソッドでは、WebHostBuilderクラスに対してUse~メソッドをつなげていき、Webサーバーの設定を行っています。

「Use」メソッドをチェインして、Webサーバーの設定を追加
「Use」メソッドをチェインして、Webサーバーの設定を追加

ここでは、以下の内容を指定しています。

  1. Kestrelサーバーの使用
  2. カレントディレクトリの指定
  3. IIS統合
  4. 起動用Sartupクラス

 挙動としては、WebHostBuilderクラスのBuildメソッドを呼び出すと、設定に基づいた「WebHost」クラスが生成されます。そしてRunメソッドを呼び出すことでWebサーバーが起動されます。

Webサーバーであるホスト「Host」

 ASP.NET Coreアプリケーションでは、Webサーバーである「ホスト(Host)」を必要とします。プログラム中にてホストを起動することで、Webアプリケーションとして動作します。

 ホストはIWebHostインターフェイスを実装するクラスで、WebサーバーとしてHTTPリクエストを受信し、そのライフサイクルを制御します。WebHostBuilderの場合、WebHostクラス(Microsoft.AspNetCore.Hosting.Internal名前空間)を返します。

[コラム] GitHubで開発されているASP.NETプロジェクト

 ASP.NET Coreの開発はオープンソースで行われています。そのため、GitHub ASP.NETページで、多くのプロジェクトのソースを見ることができます。以下に注目度の高いリポジトリの一例を紹介します。

ASP.NETに関連するGitHubの主要プロジェクト
リポジトリ名 概要
DependencyInjection DI(IoC)機能
Docs 説明ドキュメント群
EntityFramework データアクセス技術Entity Frameworkの.NET Core版
Hosting Webサーバー(ホスト)
Identity ユーザーとメンバシップ管理
MVC Webアプリケーションとサービスのためのフレームワーク
MusicStore サンプルコード
Razor cshtmlにて編集するMVCのビュー
Routing ルーティング制御
Templates Visual Studioのテンプレート
Tooling Visual Studioのツール

 興味を持たれた方はソースコードや開発状況をチェックしてみてはいかがでしょうか。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • WINGSプロジェクト 青木 淳夫 (株式会社ネクストスケープ)(アオキ アツオ)

    <WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2017年5月時点での登録メンバは52名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂き...

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

    静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「入門シリーズ(サーバサイドAjax/XMLD...

バックナンバー

連載:いよいよ登場「ASP.NET Core 1.0」 マルチプラットフォームな.NETとは?
All contents copyright © 2005-2017 Shoeisha Co., Ltd. All rights reserved. ver.1.5