Open棟梁Project - マイクロソフト系技術情報 Wiki
MicrosoftのASP.NET MVCのAjax.BeginForm?は、
クライアント・サイドのJavaScriptフレームワークとシームレスに連動しているので
JavaのOSSフレームワークと比べて、かなり実装し易くトラブルも起き難くなっている。
Facebook キャンバスアプリを簡単に作成するための「Facebookアプリケーション」テンプレートや、シングルページ アプリケーションを作成するための「シングル ページ アプリケーション」テンプレートが追加された。
ASP.NET MVC 4 で追加された「モバイル アプリケーション」テンプレートを使用して、モバイルデバイス向けアプリケーションを作成できる。このテンプレートでは、jQuery Mobile をベースとしており、タッチ操作に最適化した UI を構築できる。
ASP.NET MVC のディスプレイモードを利用すると、PC 向けサイト、モバイル向けサイトのように、ブラウザに応じてレイアウトを変えることができる。ディスプレイモードは、Global.asax の Application_Start メソッドに定義することで使用できる。
例えば、iPhone 向けのディスプレイモードを定義したい場合は、以下のように実装する。
protected void Application_Start()
{
(中略)
DisplayModeProvider.Instance.Modes.Insert(0, new DefaultDisplayMode("iPhone")
{
ContextCondition = (context => context.GetOverriddenUserAgent().IndexOf("iPhone", StringComparison.OrdinalIgnoreCase) >= 0)
});
}
この時、通常の「Index.cshtml」と同じフォルダに「Index.iPhone.cshtml」を作成し、iPhone 向けのレイアウトを定義すると、
http://server/application/Controller/Index/id
という同じ URL に対し、PC のブラウザからアクセスした場合は「Index.cshtml」が使用され、iPhone からアクセスした場合は「Index.iPhone.cshtml」が使用されるようになる。
RESTful な HTTP サービスを構築するためのフレームワーク。
既定では、以下のようにルーティングが定義されている。
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
したがって、Web API のアクションを呼び出す際の URL は以下のようになる。
http://server/application/Controller/id
ASP.NET MVC と違い、Web API のルート定義にはアクションの指定がない。Web API を使用した場合、リクエストの HTTP メソッドに応じて、以下のようにコントローラのアクションが自動的に呼び出される。
| HTTP メソッド | 呼び出されるメソッド |
| GET | "Get" で始まる名前のメソッド |
| POST | "Post" で始まる名前のメソッド |
| PUT | "Put" で始まる名前のメソッド |
| DELETE | "Delete" で始まる名前のメソッド |
Web API を利用した場合のコントローラの例を以下に示す。同じコントローラの中で GET に対応したメソッドを複数定義したい場合などは、以下のようにオーバーロードで対応できる。
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)
{
}
}
ASP.NET MVC 4 の「インターネット アプリケーション」テンプレートを使用すると、OAuth/OpenId? を使用した Facebook / Twitter / Google / Microsoft などのアカウントによる認証が可能となる。
これらのアカウントによる認証を行う場合は、App_Start フォルダの AuthConfig? クラスで設定を記述する。
public static void RegisterAuth()
{
OAuthWebSecurity.RegisterFacebookClient(
appId: "",
appSecret: "");
}
Microsoft.Web.WebPages?.OAuth.OAuthWebSecurity? クラスには、各サービスに応じて、アカウント認証を行うためのメソッドが用意されている。
| RegisterFacebookClient? | Facebook アカウントによる認証 |
| RegisterGoogleClient? | Google アカウントによる認証 |
| RegisterLinkedInClient? | LinkedIn? アカウントによる認証 |
| RegisterMicrosoftClient? | Microsoft アカウントによる認証 |
| RegisterTwitterClient? | Twitter アカウントによる認証 |
| RegisterYahooClient? | Yahoo アカウントによる認証 |
単一ページで構成される Ajax アプリケーション。
HTML5 / CSS や、各種 JavaScript ライブラリを使用することで、UX の向上、マルチデバイス対応が可能となる。
シングルページ アプリケーションでは、クライアントサイドは各種 JavaScript ライブラリを使用してデータ操作を行い、サーバサイドは Web API を使用して RESTful にアクションメソッドを実行する。
「シングル ページ アプリケーション」テンプレートを使用すると、既定で以下の JavaScript ライブラリが使用できる。
| JavaScript ライブラリ | 説明 |
| jQuery | JavaScript のコーディングを支援するライブラリ |
| jQuery UI | jQuery をベースとした UI ライブラリ |
| jQuery Validate | HTML フォームの入力検証を行う jQuery プラグイン |
| knockout.js | JavaScript による MVVM (Model-View-ViewModel?) フレームワーク |
| modernizr.js | HTML5/CSS のブラウザ対応状況を調査するためのライブラリ |
Insider.NET ASP.NET MVC入門 - @IT
http://www.atmarkit.co.jp/ait/subtop/features/dotnet/aspnetmvc_index.html
連載:ASP.NET MVC入門【バージョン3対応】 - @IT
http://www.atmarkit.co.jp/fdotnet/aspnetmvc3/index/
特集:ASP.NET 4.5新機能概説(3):ASP.NET MVCの新機能 (1-6) - @IT
http://msdn.microsoft.com/ja-jp/library/dd566231.aspx