「マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
※ 対象は、ASP.NET Core 2.0。
- 下記と異なり、新規作成したテンプレートに、
UOC(User Own Coding)部分を移行する形になるためコンバージョン手順は書かない。
- ざっくり、B / D層以外の、以下のような P 層の変更が多い。
- 脱 System.Web による API 変更
- 新しい DI による構成方法の変更
- 要求処理パイプラインの変更
- 認証周りの API の変更
- , etc.
- 参考情報
本ページがGoogle検索の上の方に来るので冒頭で幾つか関連記事を紹介。
選定基準 †
概要 †
以下に合致するケースに適合する。
- Linuxがサポートする、nginx + Dockerなどのクロスプラット フォームで、
ハイパフォーマンスを実現するマイクロサービスなどの新しいアーキテクチャに対応させたい場合。
しかし、現在はIoT、クラウド、次世代のモバイルソリューションなど多くのシナリオの基礎になっている。
参考 †
事前準備 †
フォルダ構成 †
依存関係 †
参照設定を行う。
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 ファイルが格納される。
その他のファイル †
Program †
Webアプリケーションのエントリポイント
Startup †
appsettings.json †
- 概要
- app.configのappSettings SectionをJSON化したもの。
- 環境毎に設定を切り替えることができる。
- appsettings.Production.json
ASPNETCORE_ENVIRONMENT ≠ Development
- appSettings.Development.json
ASPNETCORE_ENVIRONMENT = Development
bundleconfig.json †
package.json †
npmにおけるpackage.config的なファイル。
bower.json、.bowerrc †
bowerにおける設定ファイル。
パッケージ・マネージャ †
bower †
概要 †
- Visual Studioとは、わりと上手く統合されているもよう。
- 既定でルートにbower.jsonを生成しないなどの使い難さはある。
- ただし、手動で生成したルートのbower.jsonは認識するもよう。
参考 †
npm †
概要 †
参考 †
参考 †
タスク・ランナー †
Visual Studioでは、GulpとGruntのタスク ランナーがサポートされている。
Gulp †
Grunt †
- ただし、タスク・ランナーの機能の範囲では、Visual Studioと、あまり上手く統合されていない。
- 簡単に言うと、起動時に「npm install」しか実行できない。
- なので、scriptsに関しては、buildコマンド経由でしか実行できないので、
必要であれば、以下のプラグインなどを使用するなどすると良い。
参考 †
Microsoft Docs †
.NET 開発基盤部会 Wiki †
構成 †
初期化 †
Web サーバ †
スタートアップ †
複数環境の構成 †
ASPNETCORE_ENVIRONMENT環境変数を使用して複数の構成を初期化できる。
- 環境名
- Development
- Staging
- Production
ライブラリ †
未分類のAPI †
- Request.IsAuthenticated? が無い
User.Identity.IsAuthenticated? に置き換える。
- HttpNotFound?, HttpStatusCodeResult? が無い
NotFound? / StatusCode? メソッドを利用する。
- OutputCache? が無い
ResponseCache? を使うか、データキャッシュに実装しなおす。
ミドルウェア †
サービス、フレームワークなどと呼ばれることもある。
ミドルウェアの種類 †
初期値 †
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 †
WebAPI †
SPA †
非互換がある模様。
- FindAsync? メソッドが無い。
- SqlQuery? メソッドが無い。
その他 †
エラー処理 †
開発者例外ページが非常に良くなっているようなのでこれを使わない手はない。
用途 †
以下の例外画面を構成できる。
- 開発者例外ページ
- カスタム例外処理ページ
- ステータス コード ページ
利用方法 †
「DIによる構成」で構成する。
参考 †
旧情報(1.0時代) †
機能面 †
検討 †
立ち位置によってかなり変わってくる。
旧資産に縛られている場合 †
旧資産に縛られている場合はなかなか移行できないと思う。
と、個人的には(現段階では、まだ、)結構微妙と考えている。
- 下記の参考情報を見ると、現状、マイグレーションも困難である模様。
とは言え、時代に追随するためにはどこかのタイミングで飛び移る必要はある気はする。
しかし、なんとなく、まだ機が熟していないのかな?という感じの情報が散在している。
旧資産から解放された場合 †
旧資産から解放された場合は、思い切ったシフトができると思う。
Windowはエンタープライズでの利用が主であるが、
選定基準に合致する場合、思い切ったシフトができると思う。
所感 †
今後、メインストリーム、新技術サポートが、MVC6(MVC6)に移っていく可能性がある。
参考 †
移行事例 †
バグ、変更 †
ASP.NET Coreのプロジェクト・テンプレートに、
があったが(ASP.NET Core MVC のプロジェクト・テンプレート)、
時点から サポートプラットフォームは .NET Core のみに絞られた。
これを使用した場合、OS間の移行(Linux <---> Windows)が可能になる模様。
その他 †
参考 †
microsoft.com †
(Microsoft Docs)
.NET API Browser †
https://docs.microsoft.com/en-us/dotnet/api/index
OSSコンソーシアム †
ASP.NET Core ClockUpTips? †
Tags: :.NET開発, :.NET Core, :ASP.NET, :ASP.NET MVC, :移行