34.NETTER

Microsoft テクノロジと React

Visual Studio のビルド待ちが長いから  バックエンドと フロントエンドを分離した

TL;DR

プロジェクトが肥大化したので、ビルド待ちが長すぎて辛くなってきた。 ASP.NETCOREのコンパイルはすぐ終わるので フロントエンドのコンパイル待ちはつらいから分離した

開発環境

バックエンド ASP.NET core 2.2(C#) フロントエンド node.js react

課題

build debug 開始できるまでの時間が長い

再現手順

ASP.NET core MVC は VisualStuio でDebug モードで起動すると IIS express server が立ち上がります

自動的にブラウザが立ち上がる仕組みになっています。 f:id:yamu778:20190510233827p:plain

f:id:yamu778:20190510234525p:plain

フロントエンドが肥大化するにつれ node.js + react + typescript の起動が遅くなっている問題がありました。

C#側のデバッグを開始するにしても、フロントエンドの起動に時間を引っ張られるので、 分離を行いました。

課題解決方法

C#側のコードを spa.UseProxyToSpaDevelopmentServer を使って着信応急をSPAサーバーの転送する f:id:yamu778:20190511001631p:plain

ASP.NET Core で React プロジェクト テンプレートを使用する | Microsoft Docsdocs.microsoft.com

② node.js側の設定で pakage.jsonに  開発側のアドレス 例:port 8080 プロパティ

 "proxy": "http://localhost:8080",

を追加する

採用

今回は①を採用しました startup.csの最後あたりに

// コメントアウト
// spa.UseReactDevelopmentServer(npmScript: "start");
spa.UseProxyToSpaDevelopmentServer("http://localhost:3000");

を書き換える (例:SPAサーバーが "http://localhost:3000" とする。)

f:id:yamu778:20190511001700p:plain

これで フロントエンド VisualStudioの デバッグモードでは バックエンドに分離できます。

フロントエンドと連結する際は ClientApp 以下で npm start コマンドを打って

f:id:yamu778:20190511001805p:plain

ブラウザが立ち上がったら、URLのポートを手打ちで8080に設定すればOKです。

残った課題

Visual Studio 2017 .netcore dev立ち上げ時にSwaggerのページを表示したいのだが Webappのプロパティの変更から 立ち上げ時にswagger ページを指定しようとすると うまくいかず泥沼にはまりました

家のvisual studio 2019で再挑戦します休み中に