サーバーサイドC#のお勉強
前口上
Webの開発というと古典的にはPHPでいわゆるLAMP(Linux, Apache, MySQL, PHP)環境、続いてRuby on RailsなどのMVCフレームワーク、最近だとマイクロサービスの流れをくんでGolangなどがよく使われる。
おおむねLinux上でPHP, Python, Ruby, node.jsなどいわゆるスクリプト言語かGoなど仕様がミニマムな言語が使われることが多い。語弊をおそれず言えばVimでも開発できる言語。一方でエンタプライズ向けや、規模の大きな環境だとIDEが必要なJava/Scalaの採用事例もしばしば見る。
クライアント視点で言うとゲーム開発ではC#が強く、例えばUnityではかつてはJavaScriptライクなUnityScript、PythonライクなBooなどが使える時期もあったが現在では廃止されている。WebフロントとバックエンドをJavaScriptで開発すると言うのと同様にゲーム開発でクライアントとサーバーサイドを同じC#で開発するというのも人材確保の視点から一定の合理性はある。
ASP.NET MVCはサーバーサイドC#フレームワークであり、UdemyでThe Complete ASP.NET MVC 5 Course を受講したので以下そのメモ。
ASP.NETとは
ASP.NETはMicrosoftが開発しているWebフレームワーク。ASPはActive Server Pagesの略。
ASP.NETそれ自体は一種のブランド名でそれ自体がRailsやDjango, Laravelと対応するかというとそうでもない。ASP.NETには種類があり、
- ASP.NET Webフォーム
- ASP.NET MVC
- ASP.NET Webページ
- ASP.NET Web API
- SignalR
それぞれが割合独立したWebフレームワーク。
古典的にはASP.NET Webフォームが一番有名でVisual Studio上でグラフィカルな開発できるのが売り。
最近.NET事情
ASP.NETは.NETのランタイム上で動くフレームワーク。
.NETはWindowsのみで動く.NET Framework、その互換実装でクロスプラットフォームのMono/Xamarin、MS自体がクロスプラットフォームで作った.NET Core(微妙に互換性がない)が存在。
ASP.NET MVCはおおむねどの環境でも動くが.NETの次世代バージョン.NET5では.NET Coreベースで3つが統合されることが決まっており、現状.NET Frameworkしか動ないウェブフォームは移行されない見込み。
マクロ的にリプレイスの仕事が増える可能性がある。
ASP.NET MVCとは
ASP.NET MVCはModel View ControllerのフレームワークでRailsに似ている。DjangoやLaravelなどでもRailsの影響を受けている部分も見受けられるが、viewの共通layoutファイルの位置が一緒だったり、dir構造や名前づけからしてまんまRails.
Railsにはdefaultのtableベースのユーザー認証機構がないが、ASP.NETにはIdentityという組み込みのユーザー認証機能が同梱されている。Djangoなどでもユーザーテーブルが同梱されているものはあるが、ASP.NETではTwitterログインなどのOAuthもフレームワーク側でサポートしている。
他言語のマイナーフレームワークと比べると公式ドキュメントが充実してページ数が多い。ググっても公式以外の記事が出てこないのは使用ユーザー数の少なさを物語っているのかしれませんが。。。
その他特記事項としてAzureだとシームレスにdeployできるのと、SQL Server前提の機能はある。
講座の内容
Udemyの講座の目次はこんな感じ。
- Getting Started
- ASP.NET MVC Fundamentals
- Working with Data
- Building Forms
- Implementing Validation
- Building RESTFul Services with ASP.NET Web API
- Client-side Development
- Authentication and Authorization
- Performance Optimization
- Building a Feature End-to-End Systematically
- Deployment
C#の開発だとpure Visual Studioの事例が多いが講師はJet BrainsのReSharper推しで「こういう書き方もできるがいけてないしMicrosoft が何を考えているのか俺は全くわからない」と発言するシーンもありなんというかキレッキレな感じ。
一周通して解説しているのはいい反面、フロントのjQueryパートは個人的には不要だった。別のASP.NETのフレームワークも知りたかった。
所感
ASP.NET Core MVCはパフォーマンスで言えばRails比で10倍くらいあるようです。負荷の高いゲームサーバーなら全然ありですね。
Future Works
- Universal Windows Platform
- Xamarin