VB + WebFormsから
C# + API/MVCに移行している話
宇都宮 諒(@ryo511)
城東.NET #20
2018-05-16
自己紹介
宇都宮 諒(うつのみや りょう)
株式会社 一休 宿泊事業本部
2017年4月入社
職種は「フロントエンドエンジニア」
言語はJavaScript 7割 .NET 3割くらい
Twitter:
@ryo511
一休.com
宿泊予約サービス
現行システムが作られたのは約10年前
当時のプロジェクトのコードネームは「Waikiki」
AWS Elastic Beanstalk上で稼働中
.NET Framework 4.6(4.7へ移行中)
言語:VB.NET
フレームワーク:ASP.NET WebForms
VBコードの行数は
100万行以上
ユーザ画面・管理画面・バッチの合計
課題
データアクセス層に型のないDataSetを使っていて、静的型付けの恩恵が受けられていない
UserControlがPageと密結合していて、保守性が低い
aspxのコードビハインドはユニットテストが書けない
Web APIがHTTPの仕様を活用していない
たとえば、パラメータエラーがステータスコード200で返ってくる
VBは文法が冗長
ラムダ式で End Function とか書きたくない…
1. データアクセス層の改善
データアクセス層を単一プロジェクト化
DBアクセスにはDapperを導入
Dapperを使うプロジェクトはC#を使用
データアクセス層も型がある!
ユニットテスト環境の整備
↑は2015年〜2016年あたりに実施
2. Web APIの改善
ASP.NET Web APIを導入
ふつうのREST API
フロントエンド側でエンドポイントを切り替えるだけなので、導入のハードルは低め
3. MVCの導入
ASP.NET MVCを導入(したばかり)
検索・DB問い合わせの並行処理によるパフォーマンス改善が主な目的
(今のところの)所感
DapperはJOIN等を駆使した複雑なクエリを扱うのに向いている
ASP.NET Web APIは書きやすい
ふつうのWebアプリケーションフレームワークのお作法で書ける
ASP.NET MVCはこれから
Razorが使えるだけでも導入した価値あり
パフォーマンス改善も期待できる
C#は書きやすい
行末セミコロンと括弧の省略だけは、VBの方が好きだけど…
Made with Slides.com