ASP.NET MVC5
を採用したシステムを手がけています。言語は C# を使用しています。
前回手がけた有名どころのフレームワークSymfony
との比較にも触れます。
コンパイル
PHPでは実行時にコンパイルが実行されるので大きなライブラリーを使用するのにためらいがあります。
ASP.NET(C#)ではコンパイル済みになっているのでパフォーマンスがよいと思われます。
メモリ
Symfony
でバッチ処理した場合、メモリ食いが激しく、数万件の処理でも問題があったので、Doctrine管理外のプレーンオブジェクトを使う、クエリで最低限必要なカラムのみ読み込むなどの工夫が必要でした。経験上C#で数万件の処理はオンメモリで問題なく扱えます。
テンプレートエンジン
Razer
が標準で使えます。インテリセンスも効いて Typo を防げます。
但し、デザイナーとの分業を考えたとき、Razer
は開発者向けなので継続的にデザイナーに編集を依頼するのは難しいと思います。
この点はSymfony
が採用しているtwig
でも事情はあまり変わりません。
フレームワークの柔軟性
テンプレートエンジンはRazer
、O/RマッピングはEntity Framework
が標準で使えるようになっていますが、これを差し替えることができます。
テンプレートエンジンはデザイナーと協業できるテンプレートに差し替え、O/Rマッピングは普段使用しているフレームワークに差し替えました。
差し替え時、ASP.NET
が持っているバリデーションの機能を使えるようにするため工夫が必要でした。差し替えのためにはフレームワーク内部の動作を理解する必要があります。
ASP.NET MVC5
採用決定時に、ASP.NET Core
についても検討したのですが、利用予定のActiveReports
が対応していなかったので不採用となりました。