マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

※ 対象は、ASP.NET Core 2.0。

  • 従って、ココでは、ひたすら、ASP.NETASP.NET Coreの差異について書いて行く。
  • ざっくり、B / D層以外の、以下のような P 層の変更が多い。
    • System.Web による API 変更
    • 新しい DI による構成方法の変更
    • 要求処理パイプラインの変更
    • 認証周りの API の変更
    • , etc.
  • 参考情報
    本ページがGoogle検索の上の方に来るので冒頭で幾つか関連記事を紹介。
  • OSSコンソーシアム

選定基準

概要

以下に合致するケースに適合する。

  • Linuxがサポートする、nginx + Dockerなどのクロスプラット フォームで、
    ハイパフォーマンスを実現するマイクロサービスなどの新しいアーキテクチャに対応させたい場合。
  • そのような中で、昔から使っている C# / VB などの言語、Visual Studioの開発環境を使用したい。

しかし、現在はIoT、クラウド、次世代のモバイルソリューションなど、
多くのシナリオの基礎になっているらしく、既定で、ASP.NET Coreを選択しても良いかもしれない。

参考

事前準備

.NET Standardへの移行

.NET Coreへの移行

フォルダ構成

依存関係

参照設定を行う。

  • SDK
    • アセンブリ参照
    • プロジェクト参照
  • アナライザー

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における設定ファイル。

Libman.json

LibManにおける設定ファイル。

パッケージ・マネージャ

NuGet

  • 言わずと知れたNuGet
  • 現在は、ASP.NET Coreの既定のパッケージ・マネージャになっている。

bower

概要

  • ブラウザで使用するCSS/JavaScriptライブラリはコチラから取得する。
  • Visual Studioとは、わりと上手く統合されているもよう。
    • 既定でルートにbower.jsonを生成しないなどの使い難さはある。
    • ただし、手動で生成したルートのbower.jsonは認識するもよう。

参考

npm

概要

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

参考

LibMan?

概要

  • 軽量なクライアント側ライブラリ取得ツール
  • wwwroot/libの復元のために利用できる。

参考

参考

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

タスク・ランナー

Visual Studioでは、

Gulp

Grunt

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

npm

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

参考

Microsoft Docs

.NET 開発基盤部会 Wiki

構成

初期化

Web サーバ

スタートアップ

複数環境の構成

ASPNETCORE_ENVIRONMENT環境変数を使用して複数の構成を初期化できる。

  • 環境名
    • Development
    • Staging
    • Production

DIによる構成

ASP.NET Core における DI

ミドルウェアのインジェクション

Session構成

ライブラリ

System

System.Web

Microsoft.Owin

NuGetライブラリ

未分類の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

  • 下記が参考になる。
  • Lib側の変更(なし)
  • UI側の変更

認証

EF Core

非互換がある模様。

  • FindAsync? メソッドが無い。
  • SqlQuery? メソッドが無い。

その他

エラー処理

開発者例外ページが非常に良くなっているようなのでこれを使わない手はない。

用途

以下の例外画面を構成できる。

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

利用方法

DIによる構成」で構成する。

参考

旧情報(1.0時代)

機能面

  • ASP.NET 4.6:
    従来のASP.NETの後継

検討

立ち位置によってかなり変わってくる。

旧資産に縛られている場合

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

  • 縛られている場合、ASP.NET Coreに振り切ってイイか?は、
  • 例えば、SaaS開発の方でChartControl?などを使っているが、
    ASP.NET Coreではソコまでの機能拡充がされる気配が今の所無いと思う。

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

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

旧資産から解放された場合

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

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

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

所感

  • このように、2017年12月 現在、ASP.NET Coreは、まだ安定しているとはいえないが、
  • 2017年8月、ASP.NET Core 2.0に公開され、
  • ASP.NET MVC(MVC5)が、2015年2月以降、更新されていないので、

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

参考

移行事例

バグ、変更

ASP.NET Core on .NET Core or .NET Framework

ASP.NET Coreのプロジェクト・テンプレートに、

があったが(ASP.NET Core MVC のプロジェクト・テンプレート)、
ASP.NET Core 2.0時点から サポートプラットフォームは .NET Core のみに絞られた。

これを使用した場合、OS間の移行(Linux <---> Windows)が可能になる模様。

その他

参考

microsoft.com

ASP.NET Core 2.0 移行情報

(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, :移行


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-12-07 (金) 13:07:13 (10d)