Anúncio
Anúncio

Mais conteúdo relacionado

Apresentações para você(20)

Similar a ASP.NET Core 概要(2017年3月時点)(20)

Anúncio

Mais de Atsushi Yokohama (BEACHSIDE)(16)

Último(20)

Anúncio

ASP.NET Core 概要(2017年3月時点)

  1. ASP.NET Core 概要 基礎をおさえて WebAPI を作ってみよう publish version 2017 - 03 - 11 Visual Studio 2017 リリース記念勉強会
  2. @BEACH_SIDE 横浜 篤 よこはま あつし http://beachside.hatenablog.com/ Using… C#, ASP.NET, Azure, Machine Learning, Xamarin …. I’m a C#er. よろしく お願いします
  3. 本セッションでお伝えしたいこと • サーバーサイドの内容を中心に、抑えたいおきたい ASP.NET Core のキーワード • ASP.NET Core のアプリケーションを作ってみたいと いうモチベーション
  4. 1. ASP.NET Core とは 2. 知っておきたい基本機能 - サーバーサイド編 3. 知っておきたい基本機能 - クライアント編 Agenda
  5. ASP.NET Core とは “conversion over configuration” ! ALL THE THINGS !? 1.
  6. 概 要 • オープンソースでクロスプラットフォーム • ウェブアプリケーション、IoT アプリケーション、モバイルバックエンドなどアプリケー ションを構築するためのフレームワーク • Windows, Mac, Linux 上で動作 • ASP.NET を大幅に再設計 • System.Web.dllから脱却し、細分化されたモジュールで構成 • .NET Core または全ての.NET Frameworkで実行可能 公式ドキュメント:Introduction to ASP.NET Core : https://docs.microsoft.com/en-us/aspnet/core/
  7. 改善された基本機能 • モダンな Client-Side Framework と開発ワークフローの統合 https://docs.microsoft.com/en-us/aspnet/core/client-side/index • 複数環境、クラウド環境と連携しやすい構成システム https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration • ビルトインの Dependency Injection https://en-us/aspdocs.microsoft.com/net/core/fundamentals/dependency-injection • IIS だけではなく、セルフホストしたサーバーでの実行 https://docs.microsoft.com/en-us/aspnet/core/fundamentals/hosting 等々… 公式ドキュメント:Introduction to ASP.NET Core : https://docs.microsoft.com/en-us/aspnet/core/
  8. “conversion over configuration” ! ALL THE THINGS !? 知っておきたい基本機能 Server-Side 編 2.
  9. 注目のキーワード • コンソールアプリケーションである • コンソールアプリケーションのエントリーポイントでウェブサーバーを生成して起動 • 注目のキーワードは、 - Host - Server - Startup - Middleware
  10. キーワード解説 >> Host(ホスト) • Hostとは • IWebHost インターフェースが実装されたオブジェクト • ASP.NET Core アプリケーションでは、基本的に WebHostBuilder を使ってHostを構成し、起 動する必要がある • 構成する値は、公式ドキュメントを参照 • ホストとサーバーの違い • ホストの主な責務は、アプリケーションの起動とライフサイクルの管理。具体的には、サー ビスの管理、サーバーの構成など。 • サーバーの主な責務は、 HTTPリクエストの受けること 公式ドキュメント:Introduction to hosting in ASP.NET Core : https://docs.microsoft.com/en-us/aspnet/core/fundamentals/hosting
  11. キーワード解説 >> Server(サーバー) • ASP.NET Core では2つのサーバーが用意されている • Kestrel:クロスプラットフォームの非同期 I/O ライブラリ libuv で実装されたHTTPサーバー • WebListener : Windowsのみで実行できる • Kestrel + [IIS or Nginx or Apache or …] で利用が基本 • Kestrel単体でも十分動作するので開発する際は問題なさそう • 本番環境などでは IIS, Nginx, Apache 等をリバースプロキシサーバーとしての利用すること を推奨。理由は起動プロセスの制御とかセキュリティ等(詳しくは公式ドキュメントに記載)。 公式ドキュメント:Web server implementations in ASP.NET Core : https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/ 画像: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/
  12. キーワード解説 >> Startup クラス • リクエストパイプラインの処理を構成するのが責務 • Configure メソッドの定義が必須。アプリケーション起動時、エントリーポイントから呼ば れ、コンストラクター ⇒ ConfigureServices メソッド ⇒ Configureメソッドの順に動作 • ConfigureServicesメソッドの主な責務は… • サービス(例:Entity Framework Core, ASP.NET Core MVC など)の Dependency Injection を定義する • Configureメソッドの主な責務は… • リクエストパイプラインに Middleware(ミドルウェア)を定義する 公式ドキュメント:Application Startup in ASP.NET Core : https://docs.microsoft.com/en-us/aspnet/core/fundamentals/startup
  13. キーワード解説 >> Middleware(ミドルウェア) • HTTPリクエストを処理するためのコンポーネント • 主にStartupクラスの Configure メソッドで使われる(設定する) • ビルトインのミドルウェアとして「Authentication」(認証機能)、「Routing」(ルーティ ング機能を定義、制御)、「Session」(ユーザーのセッション管理)などがある • ASP.NET のHTTPモジュールやHTTPハンドラーの多くもミドルウェアとなった • カスタムに作成することももちろん可能 • プログラムでコールした順に設定される 公式ドキュメント:ASP.NET Core Middleware Fundamentals : https://docs.microsoft.com/en-us/aspnet/core/fundamentals/middleware
  14. DEMO コンソールアプリからASP.NET Coreへ
  15. WebAPI について • 基本的に MVC パターン • リクエストの送受信の際の便利な機能 • 基本的にはHTTPリクエストのデータと、ルーティングの規約、アクションメソッドの引数 の名称に応じてモデルバインディング • HTTPリクエストヘッダーの Accept 属性に応じたレスポンス生成 • プロジェクトテンプレートが GOOD • プロジェクトテンプレートを使ってプロジェクトを作ると動くアプリケーションができるの で、構造の理解に役立つ。 • Web API だけではなく、ビューを持った Web アプリケーションのテンプレートも同様
  16. DEMO Web API のプロジェクトテンプレートを見る
  17. キーワード解説 >> Dependency Injection( DI 、依存性の注入、依存関係の挿入) • ビルトインで組み込まれました • Startup クラスの ConfigureServices メソッドで定義するのが基本 • DI とは?なぜ DI ?How to に関する日本語情報は… • 「ASP.NET - 依存関係の挿入によるASP.NET Coreでのクリーンなコードの作成」(2016-5) https://msdn.microsoft.com/ja-jp/magazine/mt703433.aspx • 「Essential .NET - .NET Core による依存関係の挿入」(2016-6) https://msdn.microsoft.com/ja-jp/magazine/mt707534.aspx • ちょっと古いけど…「ASP.NET5 MVC6 でDI(Dependency Injection)の設定」(2016-1) http://beachside.hatenablog.com/entry/2016/01/15/170000 公式ドキュメント:Introduction to Dependency Injection in ASP.NET Core : https://docs.microsoft.com/en-us/aspnet/core/fundamentals/dependency-injection
  18. キーワード解説 >> Routing(ラゥティング、ルーティング) 設定方法は主に2つ • Controller クラスやそのActionメソッドで設定 • RouteAttribute をつけて指定 • Startup クラスの Configure メソッドで設定 • リクエストに応じたルーティングを直接指定 • リクエストに応じたルーティングを規約で指定 公式ドキュメント:Routing in ASP.NET Core :https://docs.microsoft.com/en-us/aspnet/core/fundamentals/routing Routing to Controller Actions : https://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/routing
  19. キーワード解説 >> Configuration(コンフィグレーション、構成) • 環境に応じた変数などの管理 • 基本的には、IConfigurationRoot インターフェースを実装したオブジェクトで管理 • Development、Staging、Production がデフォルトで定義されている • デフォルトでいくつかのプロバイダーを用意 • JSONやXMLのファイル、コマンドライン引数、環境変数、インメモリーのオブジェクト、 Azure Key Vault など。 • 環境に応じて[Startup{環境名}]クラスや [Configure{環境名}] メソッドを呼ぶことができる 公式ドキュメント:Configuration in ASP.NET Core : https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration
  20. DEMO サービスクラスの実装とDIで少しだけ実践的な Web API
  21. conversion over configuration ! 知っておきたい基本機能 Server-Side 編 2.
  22. 機能強化や機能追加で以前より便利に • Razor • Viewの実装をより生産的に。HTML + C# で実装。 • Tag Helpers • Web Components の概念も取り入れている • カスタムのプロジェクトテンプレートが GOOD • Razorベースのテンプレートだけでなく、Angular、React、Aurelia などのカスタムテンプ レートがあり、モジュールローダーやタスクランナーの設定までされている http://beachside.hatenablog.com/entry/2017/02/25/150306
  23. DEMO Angularのプロジェクトの作成
  24. まとめ
  25. 本日のまとめ • アプリケーション起動時の動作が重要 • サービスの DI、HTTP リクエストに対するパイプラインの設定、環境に応じた構成設定など 起動に関する設定のほとんどが Startup クラスに集約されている • 「convention over configuration(設定より規約)」の要素は強い • Client-Side の開発もモダンに! • Razor を使った ASP.NET 固有の開発ではなく、Angular や React といった選択も容易に!
  26. 追加情報>> クラウド環境やクロスプラットフォームへのデプロイ • Azure の WebApps へのデプロイは簡単 > 右クリックからポチっとするだけでデプロイできます。VSTS などを使ってCI / CD ももちろん可能。 • Azure Functions へは… > Model のレイヤーを分けておけば、移行も簡単。VSTS などを使ってCI / CD ももちろん可能。 • うちは AWS なんだけど…. > もちろん 流行りのAPI Gateway x Lambdaですよね? 平野さんのセッションにて! • うちは Linux なんだけど…. > Docker も使っちゃいますよね? 田中さんのセッションにて!
  27. 開発に役立つ と個人的に思っている 参考資料 • ASP.NET Core Documentation https://docs.microsoft.com/ja-jp/aspnet/core/ • .NET Web Development and Tools Blog https://blogs.msdn.microsoft.com/webdev/ • ASP.NET Community Standup https://www.youtube.com/playlist?list=PL0M0zPgJ3HSftTAAHttA3JQU4vOjXFquF • しばやん雑記 http://blog.shibayan.jp/ • miso_soup3 Blog http://miso-soup3.hateblo.jp/
  28. Thank you. 2017-03-11 Visual Studio 2017 リリース記念勉強会
Anúncio