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


-戻る
--[[.NET Core]]
---[[ASP.NET Core]]
--[[移行・マイグレーション]]
---[[.NETのクロスプラットフォーム対応]]

* 目次 [#u686b37f]
#contents

*概要 [#fe38f2a4]
ASP.NET と ASP.NET Coreの差異について、ぼちぼち書いて行く。
※ 対象は、[[ASP.NET Core]] 2.0。

* ASP.NET Core on [[.NET Core]] or .NET Framework [#q3aa806b]
ASP.NET Coreのプロジェクト・テンプレートに、
-ASP.NET Core Web Application ([[.NET Core]])
-ASP.NET Core Web Application (.NET Framework)
-「[[ASP.NET Core]]」の[[MVC6>ASP.NET Core MVC]]やWebAPIへの移行ノウハウをサマリする。

があったが(ASP.NET MVC Core のプロジェクト・テンプレート)、~
時点から サポートプラットフォームは .NET Core のみに絞られた。
-下記と異なり、新規作成したテンプレートに、~
UOC(User Own Coding)部分を移行する形になるためコンバージョン手順は書かない。
--[[.NET Coreへの移行]]
--[[.NET Standardへの移行]]

-ASP.NET Coreが.NET Frameworkサポートを終了~
https://www.infoq.com/jp/news/2017/06/ASPNET-Core-2
-従って、ココでは、ひたすら、[[ASP.NET]] と [[ASP.NET Core]]の差異について書いて行く。

これを使用した場合、OS間の移行(Linux <---> Windows)が可能になる模様。
--ざっくり、B / D層以外の、以下のような P 層の変更が多い。
---脱 [[System.Web>#i5893ae7]] による API 変更
---新しい DI による構成方法の変更
---要求処理パイプラインの変更
---認証周りの API の変更
---, etc.

*ASP.NET CoreとASP.NET 4.6 [#m6d0cb17]
ASP.NET CoreのフレームワークはMVCと[[Razor Pages>ASP.NET Web Pages]]で、~
主流が、MVCなので、殆どの文脈において、ASP.NET Core = ASP.NET MVC Core。
--また、[[ASP.NET Core]]のフレームワークは[[MVC6>ASP.NET Core MVC]]と[[Razor Pages>ASP.NET Web Pages]]で、主流が、[[MVC6>ASP.NET Core MVC]]になる。~
なお、[[MVC5>ASP.NET MVC]]と[[MVC6>ASP.NET Core MVC]]との差異については[[ASP.NET Core MVC]]にまとめてある。

2017年12月 現在、ASP.NET MVC Coreは、まだ安定しているとはいえないが、~
[[ASP.NET MVC]]の更新が、2015年2月以降されていないので、今後、~
メインストリーム、新技術サポートが、ASP.NET MVC Coreに移っていく可能性がある。
*選定基準 [#ab7cfef1]

**機能面 [#h4eca79e]
-ASP.NET CoreとASP.NET 4.6 は別物
**概要 [#w70488ec]
以下に合致するケースに適合する。

--ASP.NET 4.6:~
従来のASP.NETの後継
-Linuxがサポートする、[[nginx>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?nginx]] + [[Docker>Docker for Windows]]などのクロスプラット フォームで、~
ハイパフォーマンスを実現するマイクロサービスなどの新しいアーキテクチャに対応させたい場合。

--ASP.NET Core:~
次世代のASP.NETと呼ばれていたもので、.NET Coreランタイム上で動作する。
-そのような中で、昔から使っている C# / VB などの言語、[[Visual Studio]]の開発環境を使用したい。

-ASP.NET Coreに[[ASP.NET Web Forms]]は無いので、
--[[ASP.NET Web Forms]]からの移行は不可能。
--[[ASP.NET MVC]]からASP.NET MVC Coreへの移行パスを検討する。
しかし、現在はIoT、クラウド、次世代のモバイルソリューションなど、~
多くのシナリオの基礎になっているらしく、既定で、ASP.NET Coreを選択しても良いかもしれない。

**乗り換えについて検討 [#r3fe298f]
立ち位置によってかなり変わってくる。
**参考 [#o69fa085]
-Microsoft Docs
--ASP.NET と ASP.NET Core の選択~
https://docs.microsoft.com/ja-jp/aspnet/core/choose-aspnet-framework
--サーバー アプリ用 .NET Core と .NET Framework の選択~
https://docs.microsoft.com/ja-jp/dotnet/standard/choosing-core-framework-server
--Docker コンテナー用 .NET Core と .NET Framework の選択~
https://docs.microsoft.com/ja-jp/dotnet/standard/microservices-architecture/net-core-net-framework-containers/

***旧資産に縛られている場合 [#ef0372db]
旧資産に縛られている場合はなかなか移行できないと思う。
-ASP.NET Core - シンプルの力~
https://www.infoq.com/jp/articles/aspnetcore-power-of-simplicity

-縛られている場合、[[ASP.NET Core]]に振り切ってイイか?は、
*事前準備 [#k0d0b14d]
-クラス・ライブラリ等の移行について、以下を確認しておく。
-[[クラス・メソッドの検索システムには、ASP.NET Coreのカテゴリ>#j6b71fa5]]を指定する。

--例えば、[[SaaS開発>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?SaaS%E8%A8%AD%E8%A8%88%E3%81%AE%E3%83%9D%E3%82%A4%E3%83%B3%E3%83%88]]の方でChartControlなどを使っているが、~
[[ASP.NET Core]]ではソコまでの機能拡充がされる気配が今の所無いと思う。~
**[[.NET Standardへの移行]] [#c97b888a]

--[[Linux>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?Linuxを触ってみる。]]も必須の要件ではないし、ビジネス・アプリケーションの、~
[[Dynamics CRM]]では[[Web Forms (ASPX)>ASP.NET Web Forms]]が現役だったりする。
**[[.NET Coreへの移行]] [#xd12992f]

>と、個人的には(現段階では、まだ、)結構微妙と考えている。
*フォルダ構成 [#xffddb5a]

-[[マイグレーションも困難である模様。>#nb7b70ce]]~
とは言え、時代に追随するためにはどこかのタイミングで飛び移る必要はある気はする。~
しかし、なんとなく、まだ機が熟していないのかな?という感じの情報が散在している。~
**依存関係 [#i77f9b14]
参照設定を行う。

***旧資産から解放された場合 [#l4cd5e2a]
旧資産から解放された場合は、思い切ったシフトができると思う。
-[[パッケージ・マネージャ>#w4347dc8]]
--[[NuGet>#f51240e8]]
--[[bower>#q464638b]]
--[[npm>#e4af8da1]]
--[[LibMan>#c2571e80]]

Windowはエンタープライズでの利用が主であるが、
-SDK
--アセンブリ参照
--プロジェクト参照

Web系の仕事にシフトする等、以下の様な条件に合致する場合、
-アナライザー

-新しい、[[ASP.NET Web Pages]]、[[Linux>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?Linuxを触ってみる。]] + [[nginx>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?nginx]] + Docker~
などのアーキテクチャがハマり、既存資産を捨てることができる場合。
**Properties [#c4be3fe1]

-昔から使っているC#/VBなどの言語、Visual Studioの開発環境を使用したい。
***launchSettings.json [#n27e559b]
-起動設定、[[構成管理ツール]]には登録されない。
-Visual Studio の [デバッグ] タブには、ファイル編集の GUI がある。
-[[複数の起動設定>#zf8dc3f4]]をCommand Lineで切り替えることができる。

思い切ったシフトができると思う。
**wwwroot [#f4fa1549]
静的コンテンツを配置する。

***参考 [#ab7cfef1]
-サーバー アプリ用 .NET Core と .NET Framework の選択 | Microsoft Docs~
https://docs.microsoft.com/ja-jp/dotnet/standard/choosing-core-framework-server
-jquery - Add JavaScript Reference in asp.net core - Stack Overflow~
https://stackoverflow.com/questions/42341203/add-javascript-reference-in-asp-net-core

*フォルダ構成 [#xffddb5a]
**その他のフォルダ [#fe60ea72]

**静的コンテンツ [#f4fa1549]
wwwrootフォルダに配置する。
***Controllers [#z5d4b3a1]
>[[MVC6>ASP.NET Core MVC]]の *.cs or *.vb ファイルが格納される。

-jquery - Add JavaScript Reference in asp.net core - Stack Overflow~
https://stackoverflow.com/questions/42341203/add-javascript-reference-in-asp-net-core
***Models [#l10f908a]
>[[MVC6>ASP.NET Core MVC]]の *.cs or *.vb ファイルが格納される。

***Views [#kbfcc82f]
>[[MVC6>ASP.NET Core MVC]]の *.cshtml or *.vbhtml ファイルが格納される。

***Pages [#j4bcb793]
>[[Razor Pages>ASP.NET Web Pages]]の *.cshtml or *.vbhtml ファイルが格納される。

**その他のファイル [#aee84a74]

***Program [#e29db89b]
Webアプリケーションのエントリポイント

***Startup [#g42f0f08]
-経緯

--.NET Frameworkの[[ASP.NET]]では、
---[[OWIN]]によりStartupがサポートされたが、Global.asaxは生きていたので併用も可能だった。
---例:https://github.com/OpenTouryoProject/OpenTouryo/blob/SupportNetStandard2%26NetCore2/root/programs/CS/Samples/WebApp_sample/MVC_Sample/MVC_Sample/Startup.cs~
https://github.com/OpenTouryoProject/OpenTouryo/blob/SupportNetStandard2%26NetCore2/root/programs/CS/Samples/WS_sample/ASPNETWebService/ASPNETWebService/Startup.cs

--これに対して[[ASP.NET Core]]では、
---Startupは、[[OWIN]]に依存せず、Program.cs の Main経由で読み込まれる。
---このため、完全に、Global.asaxからStartupに移行する必要がある。
---例:https://github.com/OpenTouryoProject/OpenTouryo/blob/SupportNetStandard2%26NetCore2/root/programs/CS/Samples4NetCore/Backend/MVC_Sample/MVC_Sample/Startup.cs~
https://github.com/OpenTouryoProject/OpenTouryo/blob/SupportNetStandard2%26NetCore2/root/programs/CS/Samples4NetCore/Backend/ASPNETWebService/ASPNETWebService/Startup.cs

-処理~
[[ミドルウェア /サービス / フレームワーク>#b38227ce]]をStartupクラスのメソッドで[[注入>#l75d198a]]することにより、活用できるようになる。
--必要に応じて、ConfigureServicesメソッドで[[ミドルウェア /サービス / フレームワーク>#b38227ce]]を[[注入>#l75d198a]]する。
--Configureメソッドでアプリケーション、[[ミドルウェア /サービス / フレームワーク>#b38227ce]]の要求処理パイプラインを構成する。

-参考
--[[DIによる構成>#l75d198a]]

***[[appsettings.json>.NET Core config]] [#ae068f77]

***bundleconfig.json [#q4e3ad8b]
-概要
--BundleConfig.csからbundleconfig.jsonに変更されている。
--bundling and minificationの結果は、[[wwwroot>#f4fa1549]]に保存される。
--これを自動化する場合は、[[タスク・ランナー>#d309dca0]]を要してBundlerMinifier.Coreを実行する。
--なお、[[CDNフォールバック>ASP.NET MVC の Modernization#s8ee8670]]は、[[ScriptTagHelper>ASP.NET Core MVC#k7a9156e]] > asp-fallback系属性で実装できる。

-参考
--ASP.NET Core でのバンドルと minifiy の静的な資産 | Microsoft Docs~
https://docs.microsoft.com/ja-jp/aspnet/core/client-side/bundling-and-minification
--Bundling and Minifying in ASP.NET Core Applications - CodeProject~
https://www.codeproject.com/Articles/1113371/Bundling-and-Minifying-in-ASP-NET-Core-Application
--visual studio - The command "dotnet bundle" exited with code 1 - VS 2017 Publish ASP.NET Core Web API - Stack Overflow~
https://stackoverflow.com/questions/43655803/the-command-dotnet-bundle-exited-with-code-1-vs-2017-publish-asp-net-core-we

***package.json [#d5d7a9e0]
[[npm>#e4af8da1]]におけるpackage.config的なファイル。

***bower.json、.bowerrc [#dc01cb8e]
[[bower>#q464638b]]における設定ファイル。

***Libman.json [#q6225608]
[[LibMan>#c2571e80]]における設定ファイル。

*パッケージ・マネージャ [#w4347dc8]

**NuGet [#f51240e8]
[[.NET Core]]開発に活用できるNuGetライブラリのDependenciesは、~
-.NET Framework 側は No dependenciesで、
-[[.NET Standard]] 側にだけ、Dependencies を持つ。
**[[NuGet>.NET Standardへの移行#f51240e8]] [#f51240e8]
-言わずと知れた[[NuGet>.NET Standardへの移行#f51240e8]]。
-現在は、[[ASP.NET Core]]の既定のパッケージ・マネージャになっている。

[[.NET Standard]] Library は、次世代の~
ポータブル クラス ライブラリ (PCL)であるとのこと。
**bower [#q464638b]

**Browser [#q464638b]
[[ASP.NET Core]]では、Web系のライブラリの取得は、Browserへ異常されている模様。~
Web系のライブラリをわざわざ.netのパッケージ・マネージャであるNuGetに登録するの面倒だろうし。
***概要 [#laa72ac9]
-ブラウザで使用するCSS/JavaScriptライブラリはコチラから取得する。

-参考
-[[Visual Studio]]とは、わりと上手く統合されているもよう。
--既定でルートにbower.jsonを生成しないなどの使い難さはある。
--ただし、手動で生成したルートのbower.jsonは認識するもよう。

***参考 [#zc8e67b1]
-microsoft.com
--Visual Studio - Bower Web 開発用最新ツール~
https://msdn.microsoft.com/ja-jp/magazine/mt573714.aspx
--ASP.NET Core での Bower でクライアント側のパッケージを管理します。 | Microsoft Docs~
https://docs.microsoft.com/ja-jp/aspnet/core/client-side/bower

-その他
--Visual Studio 2013 で Bower を使う - miso_soup3 Blog~
http://miso-soup3.hateblo.jp/entry/2014/11/26/173021
--ASP.NET 5 と Visual Studio 2015 では Bower と Grunt が~
標準になるみたいなので勉強してみた - しばやん雑記~
http://blog.shibayan.jp/entry/20141125/1416882231
--ASP.NET Core を始める際に知っておきたい~
Web フロントエンドツールの種類と最新トレンド - tkiryu’s blog~
http://tkiryu.hatenablog.com/entry/2017/02/15/084115

**npm [#e4af8da1]
昨今、[[上記のBrowser>#q464638b]]より、npmが主流である模様。当然?切り替えできる模様。

-参考~
上の記事はCoreじゃなくてMVC5だったけど、下の記事でCoreでもイケると解る。
--ASP.NET MVC プロジェクトで npm と Nuget を使い分ける - tkiryu’s blog~
***概要 [#a2ff3725]
-[[テンプレートからangularやreactを選択>#q6846182]]すると[[NuGet>#f51240e8]]に加え、[[npm>#e4af8da1]]が使える状態で初期化される。

-今後、主流は、「[[Visual Studio Code]]」+「[[npm>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?npm]] ,etc.の[[Node.js>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?JavaScript#q9fc6e24]]系のツール」になる可能性がある。

-パッケージ・マネージャの機能の範囲に限定すれば、[[Visual Studio]]と、上手く統合されているもよう。

***参考 [#tc7cb86f]
-ASP.NET MVC プロジェクトで npm と Nuget を使い分ける - tkiryu’s blog~
http://tkiryu.hatenablog.com/entry/2016/10/26/121651

**LibMan [#c2571e80]

***概要 [#u45ff7ee]
-軽量なクライアント側ライブラリ取得ツール
-wwwroot/libの復元のために利用できる。

***参考 [#reb9d0ac]
-How to use LibMan in ASP.NET Core With Visual Studio?~
https://www.ttmind.com/techpost/How-to-use-LibMan-ASP-NET-Core-With-Visual-Studio

-Microsoft Docs
--LibMan を使用した ASP.NET Core でのクライアント側ライブラリの取得~
https://docs.microsoft.com/ja-jp/aspnet/core/client-side/libman/
--ASP.NET Core で LibMan コマンド ライン インターフェイス (CLI) を使用します。~
https://docs.microsoft.com/ja-jp/aspnet/core/client-side/libman/libman-cli
--LibMan を Visual Studio で ASP.NET Core を使用します。~
https://docs.microsoft.com/ja-jp/aspnet/core/client-side/libman/libman-vs

**参考 [#f6608159]
-Open棟梁テンプレートでは、非推奨になったbowerを廃止しnpmに一本化した。~
(ただし、ライフサイクルが早いので、今後、Yarnなどへの変更も有り得る)

-JavaScript - 開発基盤部会 Wiki > その他 > パッケージ・マネージャ~
https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?JavaScript#i6813c82
--bower~
https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?JavaScript#q9d1cb30
--npm~
https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?JavaScript#y99214ea

*タスク・ランナー [#d309dca0]
[[Visual Studio]]では、
-[[BundlerMinifier.Core>#q4e3ad8b]]などが標準でサポートされている他、
-[[Gulp>#jbda4b37]]と[[Grunt>#d31f48f7]]のタスク ランナーがサポートされている。

**Gulp [#jbda4b37]

**Grunt [#d31f48f7]
Open棟梁テンプレートでは、イイ塩梅に枯れたGruntを採用した。~
(ただし、ライフサイクルが早いので、今後、npm, webpackなどへの変更も有り得る)

**[[npm>#e4af8da1]] [#pdf610d9]
-[[npm>#e4af8da1]]も、[[package.json>#d5d7a9e0]]で、タスク・ランナー的に使える。

-ただし、タスク・ランナーの機能の範囲では、~
[[Visual Studio]]と、あまり上手く統合されていない。
--簡単に言うと、起動時に「npm install」しか実行できない。
--なので、scriptsに関しては、buildコマンド経由でしか実行できないので、~
必要であれば、以下のプラグインなどを使用するなどすると良い。

-参考
--ASP.NET Coreで、bowerじゃなくてnpmから取得したパッケージをwwwrootに入れたい - Qiita~
https://qiita.com/kuluna/items/e1490d9e9d3ca96c8b75
--NPM Task Runner - Visual Studio Marketplace~
https://marketplace.visualstudio.com/items?itemName=MadsKristensen.NPMTaskRunner

*設定 [#cffab4a6]
**参考 [#if3b4c14]

**system.webServer/aspNetCore [#t9941ed0]
***Microsoft Docs [#j43b3803]
-ASP.NET Core で Grunt を使用します。~
https://docs.microsoft.com/ja-jp/aspnet/core/client-side/using-grunt
-ASP.NET Core で Gulp を使用します。~
https://docs.microsoft.com/ja-jp/aspnet/core/client-side/using-gulp

***Web.config [#feec4405]
***開発基盤部会 Wiki [#u962eeb1]
-JavaScript~
https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?JavaScript
--タスク・ランナー~
https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?JavaScript#pec2edb2
---Gulp~
https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?JavaScript#i12160b4
---Grunt~
https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?JavaScript#m9245dc4
---npm~
https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?JavaScript#e85d48b8

***ApplicationHost.config [#p366a292]
-environmentVariables
--ASPNETCORE_ENVIRONMENT
---ASP.NET Coreの環境を切り替える方法 - athome-developer’s blog~
http://dblog.athome.co.jp/entry/2016/08/03/113000
*構成 [#r671d85d]

**appsettings.json [#m805f9cc]
'*.configファイルのappSettingsセクション ---> appsettings.json。~
**初期化 [#h3f1560e]

-Visual Studio 2017 による ASP.NET Core MVC 開発 - Qiita~
https://qiita.com/hiromasa-masuda/items/5b9ff175aac3d1ef6ca6
-ASP.NET Core MVC における構成ファイル appsettings.json からの値取得 - Qiita~
https://qiita.com/hiromasa-masuda/items/d7e33b20d3eedee771f4
***Web サーバ [#q71c1ade]
-[[launchSettings.json>#n27e559b]]

***appsettings.Production.json [#l145a874]
ASPNETCORE_ENVIRONMENT ≠ Development
***スタートアップ [#d80db398]
-[[Program>#e29db89b]]
-[[Startup>#g42f0f08]]
-[[bundleconfig.json>#q4e3ad8b]]

***appSettings.Development.json [#ya84f260]
ASPNETCORE_ENVIRONMENT = Development
***複数環境の構成 [#zf8dc3f4]
ASPNETCORE_ENVIRONMENT環境変数を使用して複数の構成を初期化できる。

*ステートメント [#s6258614]
-環境名
--Development
--Staging
--Production

**Helper [#o6d55285]
-対象
--[[launchSettings.json>#n27e559b]]の設定
--[[Startup>#g42f0f08]]
---クラス内での各種設定
---クラス.メソッド内での各種設定
--[[EnvironmentTagHelper>#pa10e781]]の利用

***ScriptTagHelper [#k7a9156e]
-ASP.NET CoreのScriptTagHelperについて調べてみる - Qiita~
https://qiita.com/takasan/items/13fdd17a9254b74046d3
-参考
--Microsoft Docs
---ASP.NET Core で複数の環境を使用する~
https://docs.microsoft.com/ja-jp/aspnet/core/fundamentals/environments

**[[DI]]による構成 [#l75d198a]

***[[ASP.NET Core における DI]] [#gab0902e]

***[[ミドルウェアのインジェクション>#q264650f]] [#jff1cf48]

**[[Session構成>ASP.NET CoreのSession利用方法#dc88a7e0]] [#aa2edea7]

*ライブラリ [#d22b8a0b]

**[[System.Web>.NET Standardへの移行#yfe521c8]] [#i5893ae7]
**[[System>.NET Standardへの移行#s76bf31b]] [#j9b98d42]

**[[System.Web>.NET Standardへの移行#i5893ae7]] [#i5893ae7]

**[[Microsoft.Owin>.NET Standardへの移行#gce2c3f9]] [#gce2c3f9]

*認証 [#cd9d3413]
-CookieAuthenticationミドルウェア設定でいける模様。
-この場合、[[ASP.NET Identity]] + ユーザ・ストアは不要。
**[[NuGetライブラリ>.NET Standardへの移行#sec5fcfd]] [#v0b54c37]

-参考
--ASP.NET Core MVC 1.0 で Cookie を使ったユーザー認証を独自に実装する - しばやん雑記~
http://blog.shibayan.jp/entry/20160517/1463476453
**未分類のAPI [#ie8a29fa]
-Request.IsAuthenticated が無い~
User.Identity.IsAuthenticated に置き換える。

*参考 [#nb7b70ce]
-HttpNotFound, HttpStatusCodeResult が無い~
NotFound / StatusCode メソッドを利用する。

-OutputCache が無い~
ResponseCache を使うか、データキャッシュに実装しなおす。

*ミドルウェア [#b38227ce]
サービス、フレームワークなどと呼ばれることもある。

**[[ミドルウェアのインジェクション>ASP.NET Core における DI#i8e6b534]] [#q264650f]

**ミドルウェアの種類 [#oc66000e]

***初期値 [#i8f1ee8c]
IServiceCollectionに含まれる初期値

-シングルトン
--System.Diagnostics.DiagnosticSource
--System.Diagnostics.DiagnosticListener
--Microsoft.AspNetCore.Hosting.IHostingEnvironment
--Microsoft.AspNetCore.Hosting.Server.IServer
--Microsoft.AspNetCore.Hosting.IStartup
--Microsoft.AspNetCore.Hosting.IApplicationLifetime
--Microsoft.Extensions.Logging.ILoggerFactory
--Microsoft.Extensions.Logging.ILogger<T>
--Microsoft.Extensions.Options.IOptions<T>
--Microsoft.Extensions.ObjectPool.ObjectPoolProvider

-一時的
--Microsoft.AspNetCore.Hosting.IStartupFilter
--Microsoft.AspNetCore.Http.IHttpContextFactory
--Microsoft.AspNetCore.Hosting.Builder.IApplicationBuilderFactory
--Microsoft.Extensions.Options.IConfigureOptions<T>

***MVC6 [#h778f299]
-[[Lib側>.NET Standardへの移行#w703d092]]の変更
-[[UI側>ASP.NET Core MVC]]の変更

***WebAPI [#x199e689]
-[[Lib側>.NET Standardへの移行#kde6f3a7]]の変更
-[[UI側>ASP.NET Core MVC#s35b1ee8]]の変更

***SPA [#q6846182]
-下記が参考になる。

--Lib側の変更(なし)
--[[UI側>ASP.NET Core MVC#ad2e01e9]]の変更

-その他
--[[ASP.NET Core SPAテンプレート]]
--[[Visual Studio CodeによるSPA開発]]

***[[認証>ASP.NET Core における 認証]] [#cd9d3413]
-APIが異なるもよう。
-以下に依存している場合、広範囲に修正が必要になる。
--[[ASP.NET Forms認証]]
--[[ASP.NET Identity]]~
[[ASP.NET Core Identity > その他 > マイグレーション(移行)>ASP.NET Core Identity#f09595aa]]

***[[EF Core>Entity Framework Core]] [#kfcd63f7]
非互換がある模様。
-FindAsync メソッドが無い。
-SqlQuery メソッドが無い。

*その他 [#c57a44be]

**エラー処理 [#xd1dc278]
開発者例外ページが非常に良くなっているようなのでこれを使わない手はない。

***用途 [#fa45ad5f]
以下の例外画面を構成できる。

-開発者例外ページ
-カスタム例外処理ページ
-ステータス コード ページ

***利用方法 [#l1c7bd3a]
「[[DIによる構成>#l75d198a]]」で構成する。

***参考 [#y3df37bc]
-ASP.NET Core のエラー処理 | Microsoft Docs~
https://docs.microsoft.com/ja-jp/aspnet/core/fundamentals/error-handling

*旧情報(1.0時代) [#w638852f]

**機能面 [#h4eca79e]
-[[ASP.NET Core]]と[[ASP.NET]] 4.6 は別物

--ASP.NET 4.6:~
従来の[[ASP.NET]]の後継

--[[ASP.NET Core]]:~
次世代の[[ASP.NET]]と呼ばれていたもので、~
[[.NET Core]]ランタイム上で動作する。

-[[ASP.NET Core]]に[[ASP.NET Web Forms]]は無いので、
--[[ASP.NET Web Forms]]からの移行は不可能。
--[[ASP.NET MVC]](MVC5)から[[ASP.NET Core MVC]](MVC6)への移行パスを検討する。

**検討 [#r3fe298f]
立ち位置によってかなり変わってくる。

***旧資産に縛られている場合 [#ef0372db]
旧資産に縛られている場合はなかなか移行できないと思う。

-縛られている場合、[[ASP.NET Core]]に振り切ってイイか?は、

--例えば、[[SaaS開発>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?SaaS%E8%A8%AD%E8%A8%88%E3%81%AE%E3%83%9D%E3%82%A4%E3%83%B3%E3%83%88]]の方でChartControlなどを使っているが、~
[[ASP.NET Core]]ではソコまでの機能拡充がされる気配が今の所無いと思う。~

--[[Linux>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?Linuxを触ってみる。]]も必須の要件ではないし、ビジネス・アプリケーションの、~
[[Dynamics CRM]]では[[Web Forms (ASPX)>ASP.NET Web Forms]]が現役だったりする。

>と、個人的には(現段階では、まだ、)結構微妙と考えている。

-[[下記の参考情報を見ると>#lba9bf32]]、現状、マイグレーションも困難である模様。~
とは言え、時代に追随するためにはどこかのタイミングで飛び移る必要はある気はする。~
しかし、なんとなく、まだ機が熟していないのかな?という感じの情報が散在している。~

***旧資産から解放された場合 [#l4cd5e2a]
旧資産から解放された場合は、思い切ったシフトができると思う。

Windowはエンタープライズでの利用が主であるが、

[[選定基準>#ab7cfef1]]に合致する場合、思い切ったシフトができると思う。

***所感 [#t9c0710b]
-[[下記の参考情報>#lba9bf32]]を参照すると、[[ASP.NET Core]](1.0)は、不安定で変更が多い。

-例えば、細かい話、[[ASP.NET Identity]]のPasswordHasherの実装が違う。~
既存データでウワモノ以降などでは、更に難易度が上がる気配も...。
--
https://aspnetidentity.codeplex.com/SourceControl/latest#src/Microsoft.AspNet.Identity.Core/PasswordHasher.cs
--https://github.com/aspnet/Identity/blob/dev/src/Microsoft.AspNetCore.Identity/PasswordHasher.cs

-このように、2017年12月 現在、[[ASP.NET Core]]は、まだ安定しているとはいえないが、

--2017年8月、[[ASP.NET Core]] 2.0に公開され、
--[[ASP.NET MVC]](MVC5)が、2015年2月以降、更新されていないので、

>今後、メインストリーム、新技術サポートが、[[MVC6>ASP.NET Core MVC]](MVC6)に移っていく可能性がある。

**参考 [#lba9bf32]

***移行事例 [#l93ed9a4]
-Hello World, [[ASP.NET Core]] 1.0! – とあるコンサルタントのつぶやき~
https://blogs.msdn.microsoft.com/nakama/2016/07/07/aspnetcore10/
-neue cc - LightNode 2 - OWINから[[ASP.NET Core]]への移植実例~
http://neue.cc/2016/07/28_535.html
-ASP.NET 5、.NET Core への移行作業をしてみた感想 - Qiita~
http://qiita.com/creativewebjp/items/958af200fed9c7bd60ee
-サイトを ASP.NET Core + .NET Core で作り直しました - 😊ソフトウェア開発者のブログ~
https://creativeweb.jp/archive/20160223
-Aspnet mvc 6の今を紹介~
https://www.slideshare.net/makotonishimura108/aspnet-mvc-6-54327431

-以下の様な意見も。
--Hello World, [[ASP.NET Core]] 1.0! – とあるコンサルタントのつぶやき~
https://blogs.msdn.microsoft.com/nakama/2016/07/07/aspnetcore10/
--neue cc - LightNode 2 - OWINから[[ASP.NET Core]]への移植実例~
http://neue.cc/2016/07/28_535.html

-[[ASP.NET Core]]は、まだまだ不安定で変更が多い。
--開発者を苦しめる.NETのHttpClientのバグと紛らわしいドキュメント~
***バグ、変更 [#o3883a11]
-開発者を苦しめる.NETのHttpClientのバグと紛らわしいドキュメント~
https://www.infoq.com/jp/news/2016/09/HttpClient
--.NET Core は project.json の廃止を予定している~
-.NET Core は project.json の廃止を予定している~
https://www.infoq.com/jp/news/2016/08/project-json

-例えば、細かい話、ASP.NET IdentityのPasswordHasherの実装が違う。~
既存データでウワモノ以降などでは、更に難易度が上がる気配も。
--
https://aspnetidentity.codeplex.com/SourceControl/latest#src/Microsoft.AspNet.Identity.Core/PasswordHasher.cs
--https://github.com/aspnet/Identity/blob/dev/src/Microsoft.AspNetCore.Identity/PasswordHasher.cs
***[[ASP.NET Core]] on [[.NET Core]] or .NET Framework [#q3aa806b]
[[ASP.NET Core]]のプロジェクト・テンプレートに、
-[[ASP.NET Core]] Web Application ([[.NET Core]])
-[[ASP.NET Core]] Web Application (.NET Framework)

**移行情報 [#p6d53d28]
***[[.NET Standardへの移行]] [#c97b888a]
***[[.NET Coreへの移行]] [#xd12992f]
があったが([[ASP.NET Core MVC]] のプロジェクト・テンプレート)、~
ASP.NET Core 2.0時点から サポートプラットフォームは .NET Core のみに絞られた。

**.NET API Browser [#j6b71fa5]
https://docs.microsoft.com/en-us/dotnet/api/index
-ASP.NET Coreが.NET Frameworkサポートを終了~
https://www.infoq.com/jp/news/2017/06/ASPNET-Core-2

***ASP.NET Core API Reference [#j377c636]
https://docs.microsoft.com/en-us/dotnet/api/index?view=aspnetcore-2.0
これを使用した場合、OS間の移行(Linux <---> Windows)が可能になる模様。

**その他 [#cb610e50]

***しばやん雑記 [#a2d598d7]
-既存の ASP.NET Web API アプリケーションを ASP.NET Core MVC 1.0 へマイグレーションしてみた~
***その他 [#e3b101b3]
-しばやん雑記
--既存の ASP.NET Web API アプリケーションを ASP.NET Core MVC 1.0 へマイグレーションしてみた~
http://blog.shibayan.jp/entry/20160628/1467113657
-ASP.NET MVC アプリケーションを ASP.NET Core MVC にマイグレーションしようとして挫折した話~
--ASP.NET MVC アプリケーションを ASP.NET Core MVC にマイグレーションしようとして挫折した話~
http://blog.shibayan.jp/entry/20160629/1467209826

***clock-up-blog [#y5350769]
-ASP.NET MVC と ASP.NET Core MVC の名前と機能と採用判断の話など~
-clock-up-blog
--ASP.NET MVC と ASP.NET Core MVC の名前と機能と採用判断の話など~
http://blog.clock-up.jp/entry/2017/07/26/aspnet-core-mvc-start
-.NET Framework 上に構築した ASP​.NET Core プロジェクトのプラットフォームを後から .NET Core に変更する~
--.NET Framework 上に構築した ASP​.NET Core プロジェクトのプラットフォームを後から .NET Core に変更する~
http://blog.clock-up.jp/entry/2017/08/16/aspnetcore-platform-change

*参考 [#nb7b70ce]

**[[.NET Coreバージョンアップ>.NET Coreバージョンアップ#l99503c7]] [#k41d997d]

**microsoft.com [#td39a431]

***[[ASP.NET Core]] 2.0 移行情報 [#d51f6809]
(Microsoft Docs)

-ASP.NET Core への移行~
https://docs.microsoft.com/ja-jp/aspnet/core/migration/
--ASP.NET から ASP.NET Core 2.0 への移行~
https://docs.microsoft.com/ja-jp/aspnet/core/migration/proper-to-2x/
--ASP.NET MVC から ASP.NET Core MVC (1.x) への移行~
https://docs.microsoft.com/ja-jp/aspnet/core/migration/mvc
---MVC~
https://docs.microsoft.com/ja-jp/aspnet/core/migration/mvc
---構成~
https://docs.microsoft.com/ja-jp/aspnet/core/migration/configuration
---認証と ID~
https://docs.microsoft.com/ja-jp/aspnet/core/migration/identity
---Web API~
https://docs.microsoft.com/ja-jp/aspnet/core/migration/webapi
---HTTP モジュールからミドルウェアへ~
https://docs.microsoft.com/ja-jp/aspnet/core/migration/http-modules

-Web サーバ ホスティング
--ASP.NET Core でのホスティング~
https://docs.microsoft.com/ja-jp/aspnet/core/fundamentals/hosting
--ASP.NET Core への Kestrel Web サーバーの実装~
https://docs.microsoft.com/ja-jp/aspnet/core/fundamentals/servers/kestrel

-スタートアップ
--ASP.NET Core でのアプリケーションのスタートアップ~
https://docs.microsoft.com/ja-jp/aspnet/core/fundamentals/startup
--ASP.NET Core で複数の環境を使用する~
https://docs.microsoft.com/ja-jp/aspnet/core/fundamentals/environments

-その他
--ASP.NET Core で複数の環境を使用する~
https://docs.microsoft.com/ja-jp/aspnet/core/fundamentals/dependency-injection#replacing-the-default-services-container

***.NET API Browser [#j6b71fa5]
https://docs.microsoft.com/en-us/dotnet/api/index

-ASP.NET Core API Reference~
https://docs.microsoft.com/en-us/dotnet/api/index?view=aspnetcore-2.0

**OSSコンソーシアム [#v8d2c01a]
-.NETがLinux上でも動作する。~
.NET Core移行とOpen棟梁の.NET Core対応情報~
https://www.osscons.jp/jovxsnjzb-537/

-.NET Core2.0移行の移行性に関する報告~
https://www.osscons.jp/jofbwaon0-537/

-ASP.NET CoreのLinux開発環境についての考察(WSL or Docker)~
https://www.osscons.jp/jotmuz8dq-537/

-Open棟梁 @ ASP.NET CoreをDockerで動作確認しました。~
https://www.osscons.jp/joerypz9u-537/

-複数のDockerコンテナを使ったASP.NET Core検証環境を構築してみました。~
https://www.osscons.jp/joq3nj6gs-537/

-.NET Application Architecture @ Enterprise 2018~
https://www.osscons.jp/joi4mu6an-537/

-OpenShiftでASP.NET Coreを動かしてみました。~
https://www.osscons.jp/jokcauheu-537/#_537

-Cloud FoundryでASP.NET Coreを動かしてみました。~
https://www.osscons.jp/jo25b3783-537/#_537

**ASP.NET Core ClockUpTips [#r0ea2e31]
-ASP.NET Core ClockUpTips~
http://aspnet-core.clock-up.jp


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


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