20120425
Upcoming SlideShare
Loading in...5
×
 

20120425

on

  • 765 views

 

Statistics

Views

Total Views
765
Views on SlideShare
765
Embed Views
0

Actions

Likes
0
Downloads
1
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

20120425 20120425 Presentation Transcript

  • SC-014
  • 小野 修司どっとねっとふぁん http://blogonos.wordpress.com/MSMVP 10年連続受賞 Microsoft MVP for ASP.NET/IIS (April 2007 – March 2013) Microsoft MVP for Visual C# (April 2003 – March 2007)業務はWeb系の開発がメイン遠距離通勤
  • ASP.NET MVC 4 Beta の一部として提供RESTful な Web サービスを提供 データを表す URI に対して HTTP のメソッドで操作を行うVisual Studio のテンプレートが提供されている Visual Studio 2010/.NET 4 用(go-live ライセンス) Visual Studio 11/.NET 4.5 用ソースコードが Apache 2.0 ライセンスで提供されている
  • 多様なデバイスにリーチ端末の形態 デスクトップ スレート モバイルアプリケーションの形態 HTMLアプリケーション ネイティブアプリケーション
  • WCF Data Servicesデータベースをそのまま Web サービスとして公開するのが容易WCF RIA ServicesSilverlight アプリケーションとの連携が容易WCF Web HTTP プログラミング モデルWebServiceHost を利用し、サービスコントラクトを定義/実装して公開
  • 柔軟なプログラミングモデルルーティング“設定より規約” によるアクションメソッド呼び出しPOCO による Model 定義に対応クエリーパラメーターによるページング/ソーティング/フィルタ対応属性と Model バインディングによる検証カスタムフィルターによる処理の拡張適切なHTTPステータスの返却HttpStateCode の利用
  • routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } );“api/{controller}/{action}/{id}” と action をURLに含める設定も可能この場合 RESTful とはいえなくなる
  • データの一覧Getで始まる引数なしのメソッド[HttpGet] を付加した引数なしのメソッド特定データの取得Getで始まる引数をとるメソッド[HttpGet] を付加した引数をとるメソッド
  • データの追加Postで始まるメソッド[HttpPost] を付加したメソッドデータの更新Putで始まるメソッド[HttpPut] を付加したメソッドデータの削除Deleteで始まるメソッド[HttpDelete] を付加したメソッド
  • POCO による Model 定義 public class Contact { public int ID { get; set; } [Required(ErrorMessage = "名前を入力してください")] public string Name { get; set; } [Required(ErrorMessage = "メールアドレスを入力してください")] public string Mail { get; set; } }
  • $filterSQL 文の Where 句に相当$orderbySQL 文の Order By 句に相当$skip指定した数のデータを読み飛ばす$top指定した数のデータを取得する
  • public IQueryable<Contact> Get(){ return db.Contacts.AsQueryable();}IQueryable に対応するだけでよい
  • 属性による検証 public class Contact { public int ID { get; set; } [Required(ErrorMessage = "名前を入力してください")] public string Name { get; set; } [Required(ErrorMessage = "メールアドレスを入力してください")] public string Mail { get; set; } }Model バインディングにより ModelState に検証結果が格納される
  • カスタムフィルターによる処理の拡張 public class ValidationActionFilter : ActionFilterAttribute { public override void OnActionExecuting(HttpActionContext context) { var modelState = context.ModelState; if (!modelState.IsValid) { dynamic errors = new JsonObject(); foreach (var key in modelState.Keys) { var state = modelState[key]; if (state.Errors.Any()) { errors[key] = state.Errors.First().ErrorMessage; } } context.Response = new HttpResponseMessage<JsonValue>(errors, HttpStatusCode.BadRequest); } } }
  • OnActionExecutingAction の処理開始前OnActionExecutedAction の処理終了後OnAuthorization認証チェック時OnException例外発生時
  • [Authorize] 属性の追加HTTPステータス 302 が返されるLoginページへのリダイレクト※対応の詳細は下記でhttp://blogs.msdn.com/b/tsmatsuz/archive/2012/03/12/asp-net-web-api-validation-authentication-authorization-exception-handling-using-custom-filter.aspx
  • Getting Started with ASP.NET Web APIhttp://www.asp.net/web-apiSelf Hosting / Dependency Resolver の利用等の情報もASP.NET Web API Referencehttp://msdn.microsoft.com/en-us/library/hh849329(v=vs.108).aspxSource Codehttp://aspnetwebstack.codeplex.com/
  • WDD 会場内の日経 BP 社ブースと日経 BP 書店にてプログラミングMicrosoft ASP.NET MVC特別価格にて先行発売中! (一般発売は 5/8 予定)プログラミングMicrosoft ASP.NET 4特別価格にて発売中! (特別価格専用, 6/30 まで) http://ec.nikkeibp.co.jp/nsp/aspnetmvc/
  • SC-014