「マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
※ 対象は、ASP.NET Core 2.0。
- 下記と異なり、新規作成したテンプレートに、
UOC(User Own Coding)を移行する形になるため手順は書かない。
- 従って、ココでは、ひたすら、ASP.NET と ASP.NET Coreの差異について書いて行く。
- また、ASP.NET CoreのフレームワークはMVC6とRazor Pagesで、
主流が、MVC6なので、殆どの文脈において、ASP.NET Core = ASP.NET MVC Core(MVC6)。
選定基準 †
概要 †
以下に合致するケースに適合する。
- Linuxがサポートする、nginx + Dockerなどのクロスプラット フォームで、
ハイパフォーマンスを実現するマイクロサービスなどの新しいアーキテクチャに対応させたい場合。
- そのような中で、昔から使っているC#/VBなどの言語、Visual Studioの開発環境を使用したい。
参考 †
フォルダ構成 †
Properties †
launchSettings.json †
- 起動設定、構成管理ツールには登録されない。
- Visual Studio の [デバッグ] タブには、ファイル編集の GUI がある。
- 複数の起動設定をCommand Lineで切り替えることができる。
wwwroot †
静的コンテンツを配置する。
依存関係 †
参照設定を行う。
その他のフォルダ †
Controllers †
MVC6の *.cs or *.vb ファイルが格納される。
Models †
MVC6の *.cs or *.vb ファイルが格納される。
Views †
MVC6の *.cshtml or *.vbhtml ファイルが格納される。
Pages †
Razor Pagesの *.cshtml or *.vbhtml ファイルが格納される。
その他のファイル †
appsettings.json †
app.configのappSettings SectionをJSON化したもの。
- 環境毎に設定を切り替えることができる。
- appsettings.Production.json
ASPNETCORE_ENVIRONMENT ≠ Development
- appSettings.Development.json
ASPNETCORE_ENVIRONMENT = Development
Program †
Webアプリケーションのエントリポイント
Startup †
- これに対してASP.NET Coreでは、
- Startupは、OWINに依存せず、Program.cs の Main経由で読み込まれる。
- このため、完全に、Global.asaxからStartupに移行する必要がある。
- 例:
bundleconfig.json †
・・・
パッケージ・マネージャ †
現在は、ASP.NET Coreの既定のパッケージ・マネージャになっている。
その他 †
Browser †
昔は、ASP.NET Coreの既定のパッケージ・マネージャだったもよう。
npm †
- npm はもともと Node.js 上で動作するライブラリを管理するためのもだが、
Node.js スタイルのライブラリでもブラウザで実行可能な形式に変換して使用
できるようになったため、npm さえあれば Bower が無くても困らない状況が生まれた。
- 参考
上の記事はCoreではなくMVC5だが、下の記事でCoreでもイケると解る。
参考 †
Razor †
Tagヘルパー †
従来のHtmlヘルパーは、
@Html.Label("FirstName", "First Name:", new {@class="caption"}
などと記述していたが、
Tagヘルパーでは、
<label class="caption" asp-for="FirstName"></label>
と標準の HTML のように記述できる。
ScriptTagHelper? †
EnvironmentTagHelper? †
構成 †
初期化 †
Web サーバ †
スタートアップ †
複数環境の構成 †
ASPNETCORE_ENVIRONMENT環境変数を使用して複数の構成を初期化できる。
- 環境名
- Development
- Staging
- Production
DIのサポート †
ミドルウェア †
サービス、フレームワークなどと呼ばれることもある。
ミドルウェアの種類 †
初期値 †
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>
MVC †
WebAPI †
- インターフェイス側
- Microsoft.AspNetCore?.Cors
- Microsoft.AspNetCore?.Mvc.WebApiCompatShim?
- 参考
認証 †
ライブラリ †
旧情報(1.0時代) †
機能面 †
乗換検討 †
立ち位置によってかなり変わってくる。
旧資産に縛られている場合 †
旧資産に縛られている場合はなかなか移行できないと思う。
と、個人的には(現段階では、まだ、)結構微妙と考えている。
- 下記の参考情報を見ると、現状、マイグレーションも困難である模様。
とは言え、時代に追随するためにはどこかのタイミングで飛び移る必要はある気はする。
しかし、なんとなく、まだ機が熟していないのかな?という感じの情報が散在している。
旧資産から解放された場合 †
旧資産から解放された場合は、思い切ったシフトができると思う。
Windowはエンタープライズでの利用が主であるが、
選定基準に合致する場合、思い切ったシフトができると思う。
所感 †
今後、メインストリーム、新技術サポートが、ASP.NET Core(MVC6)に移っていく可能性がある。
参考 †
しばやん雑記 †
clock-up-blog †
ASP.NET Coreのプロジェクト・テンプレートに、
があったが(ASP.NET MVC Core のプロジェクト・テンプレート)、
時点から サポートプラットフォームは .NET Core のみに絞られた。
これを使用した場合、OS間の移行(Linux <---> Windows)が可能になる模様。
参考 †
microsoft.com †
(Microsoft Docs)
.NET API Browser †
https://docs.microsoft.com/en-us/dotnet/api/index
その他 †
ASP.NET Core ClockUpTips? †
Tags: :.NET開発, :.NET Core, :ASP.NET, :ASP.NET MVC, :移行