「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。

-戻る
--[[ASP.NET MVC]]
--[[ASP.NET Web API]]
--[[ASP.NET Core]]
---[[ASP.NET Coreへの移行]]

* 目次 [#b7dc983c]
#contents

*概要 [#s21b24c2]
[[MVC5>ASP.NET MVC]]との差異について。

*詳細 [#jecafb31]

**[[基盤部分>ASP.NET Coreへの移行]]の差異 [#v371dda5]

***[[フォルダ構成>ASP.NET Coreへの移行#xffddb5a]] [#d7aa0169]

***[[パッケージ・マネージャ>ASP.NET Coreへの移行#w4347dc8]] [#a0d7f438]

***[[設定・構成>ASP.NET Coreへの移行#r671d85d]] [#g7618b69]
-[[初期化>ASP.NET Coreへの移行#h3f1560e]]
-[[DIのサポート>ASP.NET Coreへの移行#l75d198a]]

***[[ライブラリ>ASP.NET Coreへの移行#d22b8a0b]] [#c23a6530]
-[[System.Web>ASP.NET Coreへの移行#d22b8a0b]]
-[[Microsoft.Owin>ASP.NET Coreへの移行#gce2c3f9]]
-[[NuGetライブラリ>ASP.NET Coreへの移行#v0b54c37]]
-[[未分類のAPI>ASP.NET Coreへの移行#ie8a29fa]]

**[[MVC5>ASP.NET MVC]] との差異 [#u5fb846e]
-[[M:Model>#qeabb466]]
-[[V:View>#y9c6bcbf]]
-[[C:Controller>#rfed4b43]]

*Model [#qeabb466]
非互換は少ない模様。

*View [#y9c6bcbf]

**Razor [#w6d9a557]
-非互換は少ない模様。
-また、[[Razor Pages>ASP.NET Web Pages]]をプロジェクト内で併用可能。

**Tagヘルパー [#o6d55285]
従来のHtmlヘルパーは、
 @Html.Label("FirstName", "First Name:", new {@class="caption"}
などと記述していたが、~

Tagヘルパーでは、
 <label class="caption" asp-for="FirstName"></label>
と標準の HTML のように記述できる。

***EnvironmentTagHelper [#pa10e781]

***ScriptTagHelper [#k7a9156e]
全体的に、Globbing patternsによる指定が可能。

-asp-append-version~
srcにファイルのバージョンを追加するかどうか(キャッシュ対策)

-asp-src-include~
複数のファイルを読み込む。

-asp-src-exclude
--asp-src-includeファイルから除外する。
--asp-src-include属性と組み合わせて使用する。

-fallback
--asp-fallback-src~
src属性に指定したファイルの読み込みに失敗した場合に読み込むfallbackファイル。

--asp-fallback-test
---asp-fallback-srcと組み合わせて使用する。
---ファイルの読み込みに失敗したかどうかの判定を行うためのスクリプト。

--asp-fallback-src-include
---asp-fallback-srcと組み合わせて使用する。
---ファイルの読み込みに失敗した場合、fallbackファイル一式を指定する。

--asp-fallback-src-exclude
---asp-fallback-src-includeと組み合わせて使用する。
---除外するfallbackファイルを指定する。

***HTML系のTagHelper [#p543d545]
-LabelTagHelper
-LinkTagHelper
-AnchorTagHelper
-ImageTagHelper

-FormTagHelper
--InputTagHelper(input)
--TextAreaTagHelper(textarea)
--SelectTagHelper(select)> OptionTagHelper(option)

--FormActionTagHelper(form)
--RenderAtEndOfFormTagHelper

***その他 [#l4329233]
-Cache
--CacheTagHelper
--CacheTagHelperBase
--DistributedCacheTagHelper

-Validation
--ValidationMessageTagHelper
--ValidationSummaryTagHelper

-Extensions
--TagHelperOutputExtensions

***参考 [#f60a13a8]
-Microsoft Docs
--ASP.NET Core のタグ ヘルパー~
https://docs.microsoft.com/ja-jp/aspnet/core/mvc/views/tag-helpers/intro
--ASP.NET Core の組み込みタグ ヘルパー~
https://docs.microsoft.com/ja-jp/aspnet/core/mvc/views/tag-helpers/built-in/
--ASP.NET Core でタグ ヘルパーを作成する~
https://docs.microsoft.com/ja-jp/aspnet/core/mvc/views/tag-helpers/authoring
--ASP.NET Core の環境タグ ヘルパー~
https://docs.microsoft.com/ja-jp/aspnet/core/mvc/views/tag-helpers/built-in/environment-tag-helper

-Qiita
--ASP.NET CoreのScriptTagHelperについて調べてみる~
https://qiita.com/takasan/items/13fdd17a9254b74046d3

-ASP.NET Core MVC の Razor で使える Tag Helpers のメモ書き - しばやん雑記~
http://blog.shibayan.jp/entry/20170725/1500966960
-关于TagHelper的那些事情——Microsoft.AspNet.Mvc.TagHelpers介绍 - 奋起直追 - 博客园~
http://www.cnblogs.com/liontone/p/4640505.html

**その他 [#y7924d3f]

***[[WebViewPage>ASP.NET MVCの利用方法#nf2840bc]] が無い [#v8a8cba3]
-RTMでは実装されていなかったようだが(?)、最近はあるらしい。
-継承する元がMicrosoft.AspNetCore.Mvc.Razor名前空間のRazorPageに変わっている。

***Display Mode が無い [#tcb5e1be]
レスポンシブ以外で PC とスマートフォンに対応できない。~
#独自にヘッダを参照して、Viewを振り分けるなどの対応が必要になる。

-Will ASP.NET Core still support DisplayMode? · Issue #5116 · aspnet/Mvc~
https://github.com/aspnet/Mvc/issues/5116#issuecomment-237907785
>There aren't any plans to bring back Display Modes.~
I just commented on aspnet/Razor#751 so we can keep the discussion going on there. Thanks!

***Ajax.BeginForm が無い [#g4420705]
-Ajax.BeginFormがサポートされない。~
また、Controller.JavaScriptメソッド、JavaScriptResultクラスが無くなっている。

-必要に応じて、独自のJavaScriptResultを実装することが推奨されている。

-参考
--AjaxHelper · Issue #2015 · aspnet/Mvc~
https://github.com/aspnet/Mvc/issues/2015~
--System.Web.Mvc.JavaScriptResult.JavaScriptResult() · Issue #2953 · aspnet/Mvc~
https://github.com/aspnet/Mvc/issues/2953

*Controller [#rfed4b43]

**共通 [#a659ae5a]

***[[Filters>.NET Standardへの移行#m32862a5]] [#i6a59208]

**MVC [#v190a577]
以下から、いくらか、影響を受ける。

***[[要求処理パイプラインの変更>#i6a59208]] [#c7b3ef12]
***[[認証周りの API の変更>#w89b1b65]] [#z446e3fc]

**WebAPI [#s35b1ee8]

***Routing [#d04061d7]
Routingの構成方法が異なっている。

-以下のようなパラメタが使用可能。
--[controller]
--[action]

-Routeに統一(RoutePrefixが無くなった)

-参考
--Class属性: https://github.com/OpenTouryoProject/OpenTouryo/blob/develop/root/programs/CS/Samples4NetCore/Backend/ASPNETWebService/ASPNETWebService/Controllers/JsonController.cs#L70
--Method属性: https://github.com/OpenTouryoProject/OpenTouryo/blob/develop/root/programs/CS/Samples4NetCore/Backend/ASPNETWebService/ASPNETWebService/Controllers/JsonController.cs#L117

**MVC [#v190a577]
以下から、いくらか、影響を受ける。

***[[要求処理パイプラインの変更>#i6a59208]] [#c7b3ef12]
***[[認証周りの API の変更>#w89b1b65]] [#z446e3fc]

**WebAPI [#s35b1ee8]

***CORS [#s2a4c6cf]
CORSの構成方法が異なっている。

-Microsoft.AspNetCore.Cors

-以下の指定で、[[CORS (Cross-Origin Resource Sharing)>クロス ドメイン接続#t317812a]]を有効化する。~
https://github.com/OpenTouryoProject/OpenTouryo/blob/develop/root/programs/CS/Samples4NetCore/Backend/ASPNETWebService/ASPNETWebService/Startup.cs#L142
 // UseCorsでAllowAllOriginsを指定。
 app.UseCors("AllowAllOrigins");

-参考
--ASP.NET Core で CORS を有効にします。 | Microsoft Docs~
https://docs.microsoft.com/ja-jp/aspnet/core/security/cors

***Shim [#pa94b7ed]
Shimを利用して互換性を上げ移行性を上げることができる。

-Microsoft.AspNetCore.Mvc.WebApiCompatShim

-参考
--ASP.NET Core MVC > 詳細設定 > アプリケーション モデルの使用~
WebApiCompatShim でのアプリケーション モデルの使用法 | Microsoft Docs~
https://docs.microsoft.com/ja-jp/aspnet/core/mvc/controllers/application-model#application-model-usage-in-webapicompatshim
--ASP.NET Core MVC で HttpResponseMessage をそのまま HTTP レスポンスとして使う - Qiita~
https://qiita.com/TakahikoKawasaki/items/8bc8433332d01728c6e9

**SPA [#ad2e01e9]

***JavaScriptServices [#dfd0af2a]

-参考
--JavaScriptServices を使用して ASP.NET Core の単一ページ アプリケーションを作成するには | Microsoft Docs~
https://docs.microsoft.com/ja-jp/aspnet/core/client-side/spa-services

*その他 [#r781a3b9]

**MVCの[[DI>ASP.NET Core における DI]] [#j58bb408]
MVCの各要素への依存関係の挿入方法が用意されている。

***参考 [#ce1de173]
-コントローラーへの依存関係の挿入~
https://docs.microsoft.com/ja-jp/aspnet/core/mvc/controllers/dependency-injection
-ビューへの依存関係の挿入~
https://docs.microsoft.com/ja-jp/aspnet/core/mvc/views/dependency-injection

**ViewComponent [#m9a08e5d]
-[[部分 View>ASP.NET MVCの用語#t0b33738]]と似ている。応答全体ではなく、チャンクをレンダリングする。

-しかし、以下の点で[[部分 View>ASP.NET MVCの用語#t0b33738]]より強力と言える。
--[[Controller>#rfed4b43]]と[[View>#y9c6bcbf]]の間の関心の分離とテストの容易性の利点。
--パラメタとビジネス ロジックを含めることができる。

***用途 [#p4735e14]
[[部分 View>ASP.NET MVCの用語#t0b33738]]には複雑な、サイドバーのコンテンツなどの、~
再利用可能なレンダリング ロジックを部品化する。

-ログイン パネル
-ショッピング カート
-動的なナビゲーション メニュー
-新着情報の記事
-タグ クラウド~
タグ付きのコンテンのアクセス頻度を一括集計してテキスト表示する

***利用方法 [#u934263f]
-通常、[[Controller>#rfed4b43]]ではなく、[[View>#y9c6bcbf]](Layout)から呼び出される。
-ViewComponentの呼び出し方法には、以下の2つの方法がある。
--@Component.InvokeAsyncメソッドで呼び出す。
--[[Tagヘルパー>#o6d55285]]で呼び出す。

-[[Modelバインディング>ASP.NET MVCの用語#t62a5795]]は使用せず、指定されたデータのみに依存する。

***構成 [#d1e5d67a]
ViewComponentは、以下の2つのパーツで構成される。

-Modelのようなクラス (通常、ViewComponent から派生)
-返される結果 (通常は[[View>#y9c6bcbf]]) 

***参考 [#ud8541bf]
-ビュー コンポーネント | Microsoft Docs~
https://docs.microsoft.com/ja-jp/aspnet/core/mvc/views/view-components

*参考 [#d425994d]
-ASP.NET MVC 6 の概要だけをサクッとまとめておきたい - しばやん雑記~
http://blog.shibayan.jp/entry/20141123/1416746894

**MSDN magazine [#j399dd88]

***ASP.NET Core [#v2370824]
-実際の ASP.NET Core MVC フィルター~
https://msdn.microsoft.com/magazine/mt767699
-ASP.NET Core MVC 向け機能スライス~
https://msdn.microsoft.com/magazine/mt763233
-Razor ページを使った簡単な ASP.NET MVC アプリ~
https://msdn.microsoft.com/ja-jp/magazine/mt842512

***Cutting Edge [#c2139e64]
-ASP.NET MVC Core ビューのガイドライン~
https://msdn.microsoft.com/ja-jp/magazine/mt845625

**内部リンク [#f61731d9]

***[[ASP.NET MVC]] [#m5f86a5f]
***[[ASP.NET MVCの用語]] [#ye27df22]
***[[ASP.NET MVCの利用方法]] [#c6d00b0b]

----
Tags: [[:.NET開発]], [[:.NET Core]], [[:ASP.NET]], [[:ASP.NET MVC]]


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS