SHOEISHA iD

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

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

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

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

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

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

 本稿では、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のツール

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

会員登録無料すると、続きをお読みいただけます

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

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

メールバックナンバー

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

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

  • このエントリーをはてなブックマークに追加
いよいよ登場「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編 」他、著書多数

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

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

この記事をシェア

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

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング