第1部 新しい ASP.NETの概要
第1章 新しい ASP.NETの存在意義
1.1 現在の .NETプラットフォーム
1.1.1 .NETプラットフォームの特徴
1.1.2 .NET Framework
1.1.3 ASP.NETフレームワーク
1.1.4 Web APIフレームワーク
1.1.5 非常に単純な Webサービスの必要性
1.2 15年後の .NET
1.2.1 小型化された .NET Framework
1.2.2 ASP.NETをホストから切り離す
1.2.3 新しい ASP.NET Core
1.3 .NET Coreのコマンドラインツール
1.3.1 CLIツールのインストール
1.3.2 dotnetドライバーツール
1.3.3 定義済みの dotnetコマンド
1.4 まとめ
第2章 初めての ASP.NET Coreプロジェクト
2.1 ASP.NET Coreプロジェクトの構造
2.1.1 プロジェクトの構造
2.1.2 ランタイム環境とのやり取り
2.2 依存性注入サブシステム
2.2.1 依存性注入の概要
2.2.2 ASP.NET Coreの依存性注入
2.2.3 依存性注入ライブラリとの統合
2.3 ミニ Webサイトの構築
2.3.1 エンドポイントが 1つの Webサイトの作成
2.3.2 Webサーバー上のファイルへのアクセス
2.4 まとめ
第2部 ASP.NET MVCのアプリケーションモデル
第3章 ASP.NET MVCの起動
3.1 MVCアプリケーションモデルの有効化
3.1.1 MVCサービスの登録
3.1.2 従来のルーティングの有効化
3.2 ルーティングテーブルの設定
3.2.1 ルートの構造
3.2.2 高度なルーティング機能
3.3 ASP.NET MVCのメカニズム
3.3.1 アクションインボーカー
3.3.2 アクション結果の処理
3.3.3 アクションフィルター
3.4 まとめ
第4章 ASP.NET MVCのコントローラー
4.1 コントローラークラス
4.1.1 コントローラー名の検出
4.1.2 コントローラーの継承
4.1.3 POCOコントローラー
4.2 コントローラーアクション
4.2.1 アクションからメソッドへのマッピング
4.2.2 属性に基づくルーティング
4.3 アクションメソッドの実装
4.3.1 基本的なデータの取得
4.3.2 モデルバインディング
4.3.3 アクション結果
4.4 アクションフィルター
4.4.1 アクションフィルターの構造
4.4.2 さまざまなアクションフィルター
4.5 まとめ
第5章 ASP.NET MVCのビュー
5.1 HTMLコンテンツの提供
5.1.1 終端ミドルウェアからの HTMLの提供
5.1.2 コントローラーからの HTMLの提供
5.1.3 Razorページからの HTMLの提供
5.2 ビューエンジン
5.2.1 ビューエンジンの呼び出し
5.2.2 Razorビューエンジン
5.2.3 カスタムビューエンジンの追加
5.2.4 Razorビューの構造
5.3 ビューにデータを渡す
5.3.1 組み込みディクショナリ
5.3.2 強く型指定されたビューモデル
5.3.3 依存性注入システムによるデータの注入
5.4 Razorページ
5.4.1 Razorページの存在理由
5.4.2 Razorページの実装
5.4.3 Razorページからのデータの送信
5.5 まとめ
第6章 Razorの構文
6.1 構文の要素
6.1.1 コード式の処理
6.1.2 レイアウトテンプレート
6.1.3 部分ビュー
6.2 Razorのタグヘルパー
6.2.1 タグヘルパーを使用する
6.2.2 組み込みのタグヘルパー
6.2.3 カスタムタグヘルパーの作成
6.3 Razorビューコンポーネント
6.3.1 ビューコンポーネントの記述
6.3.2 Composition UIパターン
6.4 まとめ
第3部 横断的関心事
第7章 設計について考える
7.1 依存性注入(DI)インフラストラクチャ
7.1.1 依存関係を分離するためのリファクタリング
7.1.2 ASP.NET Coreの DIシステムの概要
7.1.3 DIコンテナーの特徴
7.1.4 各層でのデータとサービスの注入
7.2 構成データの取得
7.2.1 サポートされているデータプロバイダー
7.2.2 構成データの DOMを構築する
7.2.3 構成データを渡す
7.3 階層化アーキテクチャ
7.3.1 プレゼンテーション層
7.3.2 アプリケーション層
7.3.3 ドメイン層
7.3.4 インフラストラクチャ層
7.4 例外の処理
7.4.1 例外処理ミドルウェア
7.4.2 例外フィルター
7.4.3 例外のロギング
7.5 まとめ
第8章 アプリケーションのセキュリティ
8.1 Webセキュリティのインフラストラクチャ
8.1.1 HTTPSプロトコル
8.1.2 セキュリティ証明書の処理
8.1.3 HTTPSへの暗号化の適用
8.2 ASP.NET Coreでの認証
8.2.1 Cookieベースの認証
8.2.2 複数の認証方式に対処する
8.2.3 ユーザーの識別情報のモデル化
8.2.4 外部認証
8.3 ASP.NET Identityによるユーザーの認証
8.3.1 ASP.NET Identityの概要
8.3.2 ユーザーマネージャーの操作
8.4 認可ポリシー
8.4.1 ロールベースの認可
8.4.2 ポリシーベースの認可
8.5 まとめ
第9章 アプリケーションデータへのアクセス
9.1 汎用的なアプリケーションバックエンドを目指して
9.1.1 モノリシックなアプリケーション
9.1.2 CQRS
9.1.3 インフラストラクチャ層の内部
9.2.NET Coreのデータアクセス
9.2.1 Entity Framework 6.x
9.2.2 ADO.NETのアダプター
9.2.3 Micro O/RMフレームワークの使用
9.2.4 Micro O/RMと完全な O/RM
9.2.5 NoSQLストアの使用
9.3 Entity Framework Coreの一般的なタスク
9.3.1 データベースをモデル化する
9.3.2 テーブルのデータを操作する
9.3.3 トランザクションに対処する
9.3.4 非同期のデータ処理について
9.4 まとめ
第4部 フロントエンド
第10章 Web APIの設計
10.1 ASP.NET Coreでの Web APIの構築
10.1.1 HTTPエンドポイントを定義する
10.1.2 ファイルサーバー
10.2 RESTfulインターフェイスの設計
10.2.1 RESTの概要
10.2.2 ASP.NET Coreでの REST
10.3 Web APIをセキュリティで保護する
10.3.1 本当に必要なセキュリティだけを計画する
10.3.2 より単純なアクセス制御手法
10.3.3 Identity Serverを使用する
10.4 まとめ
第11章 クライアント側からのデータ送信
11.1 HTMLフォームの構成
11.1.1 HTMLフォームの定義
11.1.2 Post-Redirect-Getパターン
11.2 JavaScriptによるフォームの送信
11.2.1 フォームの内容をアップロードする
11.2.2 現在の画面を部分的に更新する
11.2.3 ファイルを Webサーバーにアップロードする
11.3 まとめ
第12章 クライアント側のデータバインディング
12.1 HTMLによるビューの更新
12.1.1 ビューを更新するための準備
12.1.2 更新可能な領域を定義する
12.1.3 すべてを 1つにまとめる
12.2 JSONによるビューの更新
12.2.1 Mustache.jsライブラリ
12.2.2 KnockoutJSライブラリ
12.3 Angularによる Webアプリケーションの構築
12.4 まとめ
第13章 デバイスフレンドリなビューの構築
13.1 ビューを実際のデバイスに適合させる
13.1.1 デバイスへの対応に最適な HTML5の機能
13.1.2 機能検出
13.1.3 クライアント側でのデバイス検出
13.1.4 新しい Client Hints
13.2 デバイスフレンドリな画像
13.2.1 PICTURE要素
13.2.2 ImageEngineプラットフォーム
13.2.3 画像の自動的なサイズ調整
13.3 デバイス指向の開発戦略
13.3.1 クライアント中心の戦略
13.3.2 サーバー中心の戦略
13.4 まとめ
第5部 ASP.NET Coreのエコシステム
第14章 ASP.NET Coreのランタイム環境
14.1 ASP.NET Coreホスト
14.1.1 WebHostクラス
14.1.2 ホストのカスタム設定
14.2 組み込みの HTTPサーバー
14.2.1 HTTPサーバーの選択
14.2.2 リバースプロキシを設定する
14.2.3 Kestrelの構成パラメーター
14.3 ASP.NET Coreのミドルウェア
14.3.1 パイプラインのアーキテクチャ
14.3.2 ミドルウェアコンポーネントの作成
14.3.3 ミドルウェアコンポーネントのパッケージ化
14.4 まとめ
第15章 ASP.NET Coreアプリケーションのデプロイメント
15.1 アプリケーションの発行
15.1.1 Visual Studioからの発行
15.1.2 CLIツールを使った発行
15.2 アプリケーションのデプロイメント
15.2.1 IISへのデプロイメント
15.2.2 Microsoft Azureへのデプロイメント
15.2.3 Linuxへのデプロイメント
15.3 Dockerコンテナー
15.3.1 コンテナーと仮想マシン
15.3.2 コンテナーからマイクロサービスアーキテクチャへ
15.3.3 Dockerと Visual Studio 2017
15.4 まとめ
第16章 移行戦略と導入戦略
16.1 ビジネス価値の探求
16.1.1 ASP.NET Coreの利点
16.1.2 ブラウンフィールド開発
16.1.3 グリーンフィールド開発
16.2 イエローフィールド戦略
16.2.1 不足している依存関係への対処
16.2.2 .NET Portability Analyzer
16.2.3 Windows Compatibility Pack
16.2.4 クロスプラットフォームの課題を先送りにする
16.2.5 マイクロサービスアーキテクチャに向かって
16.3 まとめ