ごった煮

色々な事を書いてます

ASP.NET WebAPI の紹介

今回は, なんか実装したとかそういうお話ではなく, 現在使ってる技術のちょっとした説明としてみます.

OneASP.NET

ASP.NETは, 結構知っている方もいるかと思います. その中で, ASP.NET MVCというフレームワークが存在します. 文字通り, このフレームワークは, ASP.NETMVCを導入するべく開発されたフレームワークです. Ruby on Railsのように, Model, View, Controllの3つに分けた開発が行えるわけです. 下の図は, 近年Microsoftが推し進めるOne ASP.NETという概念を表す概念図です. その中のServicesの項目に, SignalRと一緒にWebAPIが含まれています. 以前は, 比較的お互いのフレームワークが密になっており, 完全に切り離してそれぞれを扱うということが難しい時期がありました. しかし, VisualStudio2013の登場とともに, ASP.NETのテンプレートをかなり自由にカスタマイズできるようになり, それぞれを完全に独立して扱うことができるようになりました.

oneaspnet

WebAPIとは

WebAPIは, 簡単に言うと, ブラウザ, デスクトップアプリケーション, モバイルアプリケーション, などあらゆるアプリケーションに対して広くHTTP Webサービスを提供することを目的としたフレームワークです.(しかもオープンソース!) WebAPIで, HTTPサービスを構築し, そのサービスを必要とするマルチなアプリケーションは, 単純にWebAPIで構築したサービスの URLを叩くだけで, ASP.NETからWindowsストアアプリまで, さまざまなアプリケーションに同様なサービスを提供することができます. しかも, ASP.NETですから, WindowsAzureとの親和性も, ほかの言語やフレームワークと比較しても圧倒的に高く, VisualStudioを使用すれば, たったの数クリック画面をポチポチするだけで, Azure上にサービスをホスティングすることができます.

WebAPIは, テンプレートを生成すると, デフォルトで, ValuesControllerというHTTPサービスを提供するControllerが生成されます. その状態で, サービスを起動し, url/values/apiといったURLにPOSTやGETなどのHTTPリクエストを投げると, それぞれリクエストに対応したメソッドが呼び出され, 処理を行ってくれるという動作をします.

[csharp] public class ValuesController : ApiController { // GET api/values public IEnumerable<string> Get() { return new string[] { "value1", "value2" }; } // GET api/values/5 public string Get(int id) { return "value"; } // POST api/values public void Post([FromBody]string value) { } // PUT api/values/5 public void Put(int id, [FromBody]string value) { } // DELETE api/values/5 public void Delete(int id) { } } [/csharp]

具体的には, こんな形のクラスが生成されます. GetやPOSTなどそれぞれのメソッドは, 渡されるパラメータによって引数を変えて処理を行うように実装します.

なんだかすごくわかりやすい実装ではないでしょうか. しかも, サーバはLinuxしか使わない!みたいな方も, Azureを使えば, そもそも細かいサーバの設定をほぼ何もしなくても大丈夫であるため, WindowsServerを扱えない方でも, 簡単にホストしてすぐにサービスを開始することができます.

今まで, ASP.NETなんて...と思っていた方も, これらをぜひ選択肢の一つに入れてみてはいかがでしょうか.