algonote

There's More Than One Way To Do It

Udemyで学ぶサーバーサイドC# (ASP.NET MVC)

サーバーサイドC#のお勉強

f:id:hiromichinomata:20200529084839p:plain:w200

前口上

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

www.udemy.com