いやあちゃんとWebフレームワーク触らないと駄目よねってことも兼ねて、ASP.NETを触ったんだけどよう出来とる。もっと早く触るべきだったなあ。普通に楽しい。

やっつけのようなJWT認証付きのTodoAPIなるものを作成してみたので、参考にする人がいるのかわからんが、勉強成果用リポジトリとしてパブリックにしておく↓

TodoListApi-asp.net-sample

一応今のところの私の理解で言うと、JWT認証は「署名付きベアラー認証」という理解で、ベアラーを通行手形としてステートレスな認証を行う方法って認識です。 とはいえ、リフレッシュトークンをDBに保存してるようにしているんですが、何かしらRedisみたいなのを走らせて長期キャッシュしとくとかするんでしょうかね。 本来はSameSiteなクッキーにセットさせたり、クライアントのlocalStorageに乗っけたりしてやるみたいですが、 上のリポジトリは単にJSON投げるだけのものになってて、手動でHTTPクライアント使ってヘッダにベアラー載せると使える、みたいな感じにしてみたり。

Entity Frameworkは昔触ってたことがあったんですが、久々に触ったなあ。 これと組み合わせれば、意外とコードファーストなら結構組み合わせるのが楽。 Linqって言語自体に結構結びついてるので、新しいORM覚えるよりもよっぽど生産性がありますね。

あまりバックエンドコード書くみたいなのやってなかったんですが、これはこれで結構オモシロイ。 例えばこういう感じで、もっとイイ感じにパターンマッチを上手く活かせたコードが書ければ、けっこーカッコいいんじゃないか感を感じた。

var tokens = _jwtService.GetUpdatedToken(User, request.RefreshToken);
return tokens switch
{
    null => Unauthorized(),
    _ => Ok(tokens)
};

しかし.NETが日本だと不人気なの、なんかよく分からん。ゲーム業界はUnityがあるし、昔からスクエニとかガンガンやってる気がするけど、それ以外でイマイチなの謎なんだよなあ。 海外での評価はメッチャ高いし、それを裏付けるようにYouTubeでの英語圏のコンテンツは他言語の技術と比較してもjavascript、python系に次いで多い印象あるし、時々GitHubのTrendingでも載ってくるんだけど。うーむ。
自分はASP.NETを触ってみて、実際他をちょっと触ってみたのより、お世辞はあるけど普通に体感も良いです。

ASP.NETに関して言えば、割と前から知ってはいたんですが、DIを知ってることがまず大事なんだと思います。 それでProgram.csから追えるので、とりあえず自分でこう簡単なの作ってるだけならそこそこ追いやすいのが良い。知っててよかったDI。

正直デザインパターンにせよ何にせよ、私はカンペ見ないと書けません。 が、LaravelもFacade(だったっけ?ほとんど忘れたけど)も確かDIみたいな仕組み使ってたよーな覚えがあったりするので、 こういうところでデザインパターン知ってると、なんとなく「あーこういう機能ね」みたいに出来るので、そういう意味でデザインパターンを知る意味はあると思う。