テスターですが何か?

ホビープログラマ略してHPです

A look at ASP.NET MVC4 日本語解説 後編

leave a comment »

2/19 オランダで行われたTechDays2012でのScott Guthrieのセッションが動画で公開されています。

A look at ASP.NET MVC 4 (Channel9)

タイトルは「A look at ASP.NET MVC4」ですが、ASP.NET全体だけではなくWeb開発全体(データアクセス、クライアントスクリプト)についても触れています。もちろん全編英語なんですが、Visual Studioを使用してのデモが中心なので、コードが読めればだいたい理解できると思います。(たぶん...っていうかこのくらいの英語は何となく分からないと新しい情報を吸収するのは難しいです)個人的にも非常に興味深い内容なので、ざっくりと日本語でまとめたいと思います。あくまでテキストになぐり書きしたものを載せているので、「ざっくり」です。

前半部分はこちらのエントリーで公開しています。

Why Web APIs?

利用する側/提供する側も含めてつかったことあるよね?MVC4でデータや機能を外部に公開するためのWebAPIを簡単に作れるようになった。

なぜWebAPIが必要?

  • Build Richer Apps(よりリッチなアプリケーションをつくる)
  • Reach More Clients(多くのクライアントで利用可能にする)

クライアントとはブラウザ(ajax, flash etc)はもちろん、いろんなデバイスWin8(metro)、WP7など。データ、機能を外部に公開する綺麗な方法(Clean Way)

近年Twitter, facebookなどのAPIを使ったアプリがたくさんつくられている。

Demo: Building a Web API

  • 「Web API Controller」をつかってWebAPI用のコントローラーを作成
  • コントローラーは余分な属性などはついておらず、ApiControllerを継承している
  • コントローラーに必要なアクションメソッドを実装していく
  • RESTベースのURIフォーマット(GET/POST/DELETE etc)
  • Fiddler(HTTPリクエストを送信するツール)を使ってAPIをテスト
  • Final Releaseにはweb apiをテストできるツールを提供予定
  • URL(http://localhost:52145/api/products)を実行するとアクションメソッドが実行され、JSON形式のデータを取得することができる
  • データ形式を指定しなければ、デフォルトはJSON。サーバーサイドのソースでデータ形式を指定する必要はない
  • HTTPのAcceptヘッダーにapplication/xmlと記述するとxml形式のデータを取得することができる
  • アクションメソッドの戻り値の型をIQueriable型とすることで、でURLにODataクエリを記述してフィルタなどを行うことができる
  • データを追加するアクションメソッドを作成、引数はProduct型を指定
  • クライアントからJSONデータを送信(POST)すると、データを追加することができる
  • サーバー再度でJSON形式データをデシリアライズしてくれる
  • デフォルトではHTTPステータスは200を返す
  • アクションメソッドの戻り値をHttpResponseMessage型とすることで、ステータスコード・ロケーションヘッダーをカスタマイズすることができる。
  • MVCの機能はWebAPIでもそのまま利用できる(Authorize属性 など)

Demo: Calling a Web API from JavaScript

JavaScriptでWeb APIを呼び出すデモ、jQueryの$get, $ajaxで呼び出すサンプルを紹介

Web API Testing

テストは通常のコントローラーのテストと同様、簡単にユニットテストができる

Web API Hosting

IISだけでなく、コンソールアプリケーションなどでセルフホスト可能

コンソールアプリケーション内でホスティングするデモ

Mobile Web

いろんなプラットフォーム向けにネイティブアプリを作るのもいいけど、Mobile用Webサイトをつくっていろんなプラットフォームで利用できるようにするのも手だよね

MVC4ではいろんなデバイス向け、モバイル向けのページが作りやすくなっている

Adaptive Rendering

  • デフォルトプロジェクトテンプレートにCSS Media Queryが組み込まれている
  • ブラウザのウィンドウの大きさに応じてサイトのレイアウトが調整される

Display Modes

  • デバイスに応じてViewをオーバーライド可能(デバイスは違ってもURLは1つ)
  • アクセスのあったクライアントのデバイス情報に応じてリクエストを振り分ける処理を記述する必要はない

Mobile Optimized Templates

  • jQueryMobileを使用して、タッチデバイス用のページを作りやすくなっている

デスクトップ向けをメインターゲットにするのか、モバイル向けをメインターゲットにするのかで最適な機能を選ぶことができる

Real Time Communication with SignalR

  • ASP.NET 4.5でWebSocketがサポートされる
  • SignalRを使ってクライアント・サーバー間で双方向通信ができる
  • マルチユーザー向けのリアルタイムWebアプリが作成可能
  • SignalRはGitHubで公開されている
  • クライアントはJavaScriptで記述
  • サーバーではクライアント側で呼び出されるメソッドを記述する
  • // 今気づいた、デモ用のPCには拡張子が表示されていない
  • IE、Chromeでアプリを動作させ、片方のブラウザでの変更(オブジェクトの移動)がリアルタイムでもう一つのブラウザにも反映されるデモを行なっている

Asynchronous Support

サーバーサイドでも非同期処理は重要、リモートコンピューターへのアクセスのように時間のかかる処理を非同期で行うことでスレッドの占有時間、スレッド数を減らすことができ、よりスケール可能になる。

Visual Studio11を使うとMVCで非同期処理は以下のように記述できる
public class Products : Controller {

  public async Task<ActionResult> IndexAsync() {

    webClient web = new WebClient();

    string result = await web.DownloadStringAsync("www.bing.com");

    return View();
  }

}

まとめ、ASP.NET MVC4 新機能リスト

  • Bundling/Minification Support
  • Database Migrations
  • Mobile Web
  • Web APIs
  • Real Time Communication
  • Asynchronous Support

 

Written by david9142

2012年3月24日 @ 11:26 AM

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。