- 追加された行はこの色です。
- 削除された行はこの色です。
「[[マイクロソフト系技術情報 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の差異について、ぼちぼち書いて行く。
* on [[.NET Core]] or .NET Framework [#q3aa806b]
* 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 MVC Core のプロジェクト・テンプレート)、~
時点から サポートプラットフォームは .NET Core のみに絞られた。
-ASP.NET Coreが.NET Frameworkサポートを終了~
https://www.infoq.com/jp/news/2017/06/ASPNET-Core-2
これを使用した場合、OS間の移行(Linux <---> Windows)が可能になる模様。
*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。
2017年12月 現在、ASP.NET MVC Coreは、まだ安定しているとはいえないが、~
[[ASP.NET MVC]]の更新が、2015年2月以降されていないので、今後、~
メインストリーム、新技術サポートが、ASP.NET MVC Coreに移っていく可能性がある。
**機能面 [#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]]からASP.NET MVC Coreへの移行パスを検討する。
**乗り換えについて検討 [#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]]が現役だったりする。
>と、個人的には(現段階では、まだ、)結構微妙と考えている。
-[[マイグレーションも困難である模様。>#nb7b70ce]]~
とは言え、時代に追随するためにはどこかのタイミングで飛び移る必要はある気はする。~
しかし、なんとなく、まだ機が熟していないのかな?という感じの情報が散在している。~
***旧資産から解放された場合 [#l4cd5e2a]
旧資産から解放された場合は、思い切ったシフトができると思う。
Windowはエンタープライズでの利用が主であるが、
Web系の仕事にシフトする等、以下の様な条件に合致する場合、
-新しい、[[ASP.NET Web Pages]]、[[Linux>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?Linuxを触ってみる。]] + [[nginx>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?nginx]] + Docker~
などのアーキテクチャがハマり、既存資産を捨てることができる場合。
-昔から使っているC#/VBなどの言語、Visual Studioの開発環境を使用したい。
思い切ったシフトができると思う。
***参考 [#ab7cfef1]
-サーバー アプリ用 .NET Core と .NET Framework の選択 | Microsoft Docs~
https://docs.microsoft.com/ja-jp/dotnet/standard/choosing-core-framework-server
*フォルダ構成 [#xffddb5a]
**静的コンテンツ [#f4fa1549]
wwwrootフォルダに配置する。
-jquery - Add JavaScript Reference in asp.net core - Stack Overflow~
https://stackoverflow.com/questions/42341203/add-javascript-reference-in-asp-net-core
*パッケージ・マネージャ [#w4347dc8]
**NuGet [#f51240e8]
[[.NET Core]]開発に活用できるNuGetライブラリのDependenciesは、~
-.NET Framework 側は No dependenciesで、
-[[.NET Standard]] 側にだけ、Dependencies を持つ。
[[.NET Standard]] Library は、次世代の~
ポータブル クラス ライブラリ (PCL)であるとのこと。
**Browser [#q464638b]
[[ASP.NET Core]]では、Web系のライブラリの取得は、Browserへ異常されている模様。~
Web系のライブラリをわざわざ.netのパッケージ・マネージャであるNuGetに登録するの面倒だろうし。
-参考
--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~
http://tkiryu.hatenablog.com/entry/2016/10/26/121651
--ASP.NET Coreで、bowerじゃなくてnpmから取得したパッケージをwwwrootに入れたい - Qiita~
https://qiita.com/kuluna/items/e1490d9e9d3ca96c8b75
*設定 [#cffab4a6]
**system.webServer/aspNetCore [#t9941ed0]
***Web.config [#feec4405]
***ApplicationHost.config [#p366a292]
-environmentVariables
--ASPNETCORE_ENVIRONMENT
---ASP.NET Coreの環境を切り替える方法 - athome-developer’s blog~
http://dblog.athome.co.jp/entry/2016/08/03/113000
**appsettings.json [#m805f9cc]
'*.configファイルのappSettingsセクション ---> appsettings.json。~
-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
***appsettings.Production.json [#l145a874]
ASPNETCORE_ENVIRONMENT ≠ Development
***appSettings.Development.json [#ya84f260]
ASPNETCORE_ENVIRONMENT = Development
*ステートメント、ライブラリ [#s6258614]
*ステートメント [#s6258614]
**Helper [#o6d55285]
***ScriptTagHelper [#k7a9156e]
-ASP.NET CoreのScriptTagHelperについて調べてみる - Qiita~
https://qiita.com/takasan/items/13fdd17a9254b74046d3
**System.Web [#i5893ae7]
対応するライブラリが「Microsoft.AspNetCore.XXXX」にある可能性がある。
*ライブラリ [#d22b8a0b]
***HttpContext [#yfe521c8]
**[[System.Web>.NET Standardへの移行#yfe521c8]] [#i5893ae7]
-c# - How to get HttpContext.Current in ASP.NET Core? - Stack Overflow~
https://stackoverflow.com/questions/38571032/how-to-get-httpcontext-current-in-asp-net-core
-Accessing HttpContext outside of framework components in ASP.NET Core | StrathWeb. A free flowing web tech monologue.~
https://www.strathweb.com/2016/12/accessing-httpcontext-outside-of-framework-components-in-asp-net-core/
**[[Microsoft.Owin>.NET Standardへの移行#gce2c3f9]] [#gce2c3f9]
※ 上記の「Mimicking HttpContext.Current」で[[.NET Standard]]なライブラリ化も可能。
***Session [#bea9cfcb]
文字列しか格納できなくなったので、複雑なオブジェクトはJSONに変換する。
-Using Sessions and HttpContext in ASP.NET 5 and MVC6~
https://benjii.me/2015/07/using-sessions-and-httpcontext-in-aspnet5-and-mvc6/
-ASP.NET Core MVCでSession管理 - 今日もちょいつか~
http://heinlein.hatenablog.com/entry/2017/11/21/141639
***Cookie [#vcd28b71]
-ASP.NET Core Working With Cookie~
https://www.c-sharpcorner.com/article/asp-net-core-working-with-cookie/
-ASP.NET Core 2.0 MVC で Cookie を利用する - Qiita~
https://qiita.com/code0327/items/26c09c83103083ae57b7
**Microsoft.Owin [#gce2c3f9]
対応するライブラリが「Microsoft.AspNetCore.XXXX」にある可能性がある。
***Base64Url [#b4a7094a]
-[[Microsoft.AspNetCore.WebUtilities>https://docs.microsoft.com/en-us/dotnet/api/index?view=aspnetcore-2.0&term=Microsoft.AspNetCore.WebUtilities]]
*認証 [#cd9d3413]
-CookieAuthenticationミドルウェア設定でいける模様。
-この場合、[[ASP.NET Identity]] + ユーザ・ストアは不要。
-参考
--ASP.NET Core MVC 1.0 で Cookie を使ったユーザー認証を独自に実装する - しばやん雑記~
http://blog.shibayan.jp/entry/20160517/1463476453
*参考 [#nb7b70ce]
-ASP.NET 5、.NET Core への移行作業をしてみた感想 - Qiita~
http://qiita.com/creativewebjp/items/958af200fed9c7bd60ee
-サイトを ASP.NET Core + .NET Core で作り直しました - 😊ソフトウェア開発者のブログ~
https://creativeweb.jp/archive/20160223
-以下の様な意見も。
--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のバグと紛らわしいドキュメント~
https://www.infoq.com/jp/news/2016/09/HttpClient
--.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
**移行情報 [#p6d53d28]
***[[.NET Standardへの移行]] [#c97b888a]
***[[.NET Coreへの移行]] [#xd12992f]
**.NET API Browser [#j6b71fa5]
https://docs.microsoft.com/en-us/dotnet/api/index
***ASP.NET Core API Reference [#j377c636]
https://docs.microsoft.com/en-us/dotnet/api/index?view=aspnetcore-2.0
**その他 [#cb610e50]
***しばやん雑記 [#a2d598d7]
-既存の ASP.NET Web API アプリケーションを ASP.NET Core MVC 1.0 へマイグレーションしてみた~
http://blog.shibayan.jp/entry/20160628/1467113657
-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 の名前と機能と採用判断の話など~
http://blog.clock-up.jp/entry/2017/07/26/aspnet-core-mvc-start
-.NET Framework 上に構築した ASP.NET Core プロジェクトのプラットフォームを後から .NET Core に変更する~
http://blog.clock-up.jp/entry/2017/08/16/aspnetcore-platform-change
----
Tags: [[:.NET開発]], [[:.NET Core]], [[:ASP.NET]], [[:ASP.NET MVC]], [[:移行]]